pub struct FixtureDatabase {
pub definitions: Arc<DashMap<String, Vec<FixtureDefinition>>>,
pub usages: Arc<DashMap<PathBuf, Vec<FixtureUsage>>>,
pub file_cache: Arc<DashMap<PathBuf, Arc<String>>>,
pub undeclared_fixtures: Arc<DashMap<PathBuf, Vec<UndeclaredFixture>>>,
pub imports: Arc<DashMap<PathBuf, HashSet<String>>>,
pub canonical_path_cache: Arc<DashMap<PathBuf, PathBuf>>,
}Fields§
§definitions: Arc<DashMap<String, Vec<FixtureDefinition>>>§usages: Arc<DashMap<PathBuf, Vec<FixtureUsage>>>§file_cache: Arc<DashMap<PathBuf, Arc<String>>>§undeclared_fixtures: Arc<DashMap<PathBuf, Vec<UndeclaredFixture>>>§imports: Arc<DashMap<PathBuf, HashSet<String>>>§canonical_path_cache: Arc<DashMap<PathBuf, PathBuf>>Implementations§
Source§impl FixtureDatabase
impl FixtureDatabase
pub fn new() -> Self
Sourcepub fn scan_workspace(&self, root_path: &Path)
pub fn scan_workspace(&self, root_path: &Path)
Scan a workspace directory for test files and conftest.py files
Sourcepub fn analyze_file(&self, file_path: PathBuf, content: &str)
pub fn analyze_file(&self, file_path: PathBuf, content: &str)
Analyze a single Python file for fixtures using AST parsing
Sourcepub fn find_fixture_definition(
&self,
file_path: &Path,
line: u32,
character: u32,
) -> Option<FixtureDefinition>
pub fn find_fixture_definition( &self, file_path: &Path, line: u32, character: u32, ) -> Option<FixtureDefinition>
Find fixture definition for a given position in a file
Sourcepub fn get_definition_at_line(
&self,
file_path: &Path,
line: usize,
fixture_name: &str,
) -> Option<FixtureDefinition>
pub fn get_definition_at_line( &self, file_path: &Path, line: usize, fixture_name: &str, ) -> Option<FixtureDefinition>
Public method to get the fixture definition at a specific line and name Used when cursor is on a fixture definition line (not a usage)
Sourcepub fn find_fixture_at_position(
&self,
file_path: &Path,
line: u32,
character: u32,
) -> Option<String>
pub fn find_fixture_at_position( &self, file_path: &Path, line: u32, character: u32, ) -> Option<String>
Find the fixture name at a given position (either definition or usage)
pub fn extract_word_at_position( &self, line: &str, character: usize, ) -> Option<String>
Sourcepub fn find_fixture_references(&self, fixture_name: &str) -> Vec<FixtureUsage>
pub fn find_fixture_references(&self, fixture_name: &str) -> Vec<FixtureUsage>
Find all references (usages) of a fixture by name
Sourcepub fn find_references_for_definition(
&self,
definition: &FixtureDefinition,
) -> Vec<FixtureUsage>
pub fn find_references_for_definition( &self, definition: &FixtureDefinition, ) -> Vec<FixtureUsage>
Find all references (usages) that would resolve to a specific fixture definition This respects the priority rules: same file > closest conftest.py > parent conftest.py
For fixture overriding, this handles self-referencing parameters correctly: If a fixture parameter appears on the same line as a fixture definition with the same name, we exclude that definition when resolving, so it finds the parent instead.
Sourcepub fn get_undeclared_fixtures(
&self,
file_path: &Path,
) -> Vec<UndeclaredFixture>
pub fn get_undeclared_fixtures( &self, file_path: &Path, ) -> Vec<UndeclaredFixture>
Get all undeclared fixture usages for a file
Sourcepub fn get_available_fixtures(&self, file_path: &Path) -> Vec<FixtureDefinition>
pub fn get_available_fixtures(&self, file_path: &Path) -> Vec<FixtureDefinition>
Get all available fixtures for a given file, respecting pytest’s fixture hierarchy Returns a list of fixture definitions sorted by name
Sourcepub fn is_inside_function(
&self,
file_path: &Path,
line: u32,
character: u32,
) -> Option<(String, bool, Vec<String>)>
pub fn is_inside_function( &self, file_path: &Path, line: u32, character: u32, ) -> Option<(String, bool, Vec<String>)>
Check if a position is inside a test or fixture function (parameter or body) Returns Some((function_name, is_fixture, declared_params)) if inside a function
Sourcepub fn print_fixtures_tree(
&self,
root_path: &Path,
skip_unused: bool,
only_unused: bool,
)
pub fn print_fixtures_tree( &self, root_path: &Path, skip_unused: bool, only_unused: bool, )
Print fixtures as a tree structure Shows directory hierarchy with fixtures defined in each file
Trait Implementations§
Source§impl Debug for FixtureDatabase
impl Debug for FixtureDatabase
Auto Trait Implementations§
impl Freeze for FixtureDatabase
impl !RefUnwindSafe for FixtureDatabase
impl Send for FixtureDatabase
impl Sync for FixtureDatabase
impl Unpin for FixtureDatabase
impl !UnwindSafe for FixtureDatabase
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more