@@ -96,10 +96,69 @@ def test_include_nonexistent_extension(temp_directory: Path, sample_query: dict[
9696
9797
9898# single folder patterns
99- # TODO: test with include patterns: ['src/*']
100- # TODO: test with include patterns: ['/src/*']
101- # TODO: test with include patterns: ['/src/']
102- # TODO: test with include patterns: ['/src*']
99+ def test_include_src_star_pattern (temp_directory : Path , sample_query : dict [str , Any ]) -> None :
100+
101+ sample_query ["local_path" ] = temp_directory
102+ sample_query ["include_patterns" ] = ["src/*" ] # Without leading slash
103+
104+ result = _scan_directory (temp_directory , query = sample_query )
105+ assert result is not None , "Result should not be None"
106+
107+ files = _extract_files_content (query = sample_query , node = result , max_file_size = 1_000_000 )
108+ assert len (files ) == 4 , "Should find all files under src directory"
109+
110+ # Normalize paths to use platform-specific separator
111+ file_paths = {str (Path (f ["path" ])) for f in files } # Using set and Path for normalization
112+ expected_paths = {
113+ str (Path ("src/subfile1.txt" )),
114+ str (Path ("src/subfile2.py" )),
115+ str (Path ("src/subdir/file_subdir.txt" )),
116+ str (Path ("src/subdir/file_subdir.py" )),
117+ }
118+ assert file_paths == expected_paths , "Missing or unexpected files in result"
119+
120+
121+ def test_include_src_recursive (temp_directory : Path , sample_query : dict [str , Any ]) -> None :
122+
123+ sample_query ["local_path" ] = temp_directory
124+ sample_query ["include_patterns" ] = ["src/**" ] # Use ** for recursive matching
125+
126+ result = _scan_directory (temp_directory , query = sample_query )
127+ assert result is not None , "Result should not be None"
128+
129+ files = _extract_files_content (query = sample_query , node = result , max_file_size = 1_000_000 )
130+ assert len (files ) == 4 , "Should find all files under src/"
131+
132+ file_paths = {str (Path (f ["path" ])) for f in files }
133+ expected_paths = {
134+ str (Path ("src/subfile1.txt" )),
135+ str (Path ("src/subfile2.py" )),
136+ str (Path ("src/subdir/file_subdir.txt" )),
137+ str (Path ("src/subdir/file_subdir.py" )),
138+ }
139+ assert file_paths == expected_paths , "Missing or unexpected files in result"
140+
141+
142+ def test_include_src_wildcard_prefix (temp_directory : Path , sample_query : dict [str , Any ]) -> None :
143+
144+ sample_query ["local_path" ] = temp_directory
145+ sample_query ["include_patterns" ] = ["src*" ] # Without leading slash
146+
147+ result = _scan_directory (temp_directory , query = sample_query )
148+ assert result is not None , "Result should not be None"
149+
150+ files = _extract_files_content (query = sample_query , node = result , max_file_size = 1_000_000 )
151+ assert len (files ) == 4 , "Should find all files under paths starting with src"
152+
153+ file_paths = {str (Path (f ["path" ])) for f in files }
154+ expected_paths = {
155+ str (Path ("src/subfile1.txt" )),
156+ str (Path ("src/subfile2.py" )),
157+ str (Path ("src/subdir/file_subdir.txt" )),
158+ str (Path ("src/subdir/file_subdir.py" )),
159+ }
160+ assert file_paths == expected_paths , "Missing or unexpected files in result"
161+
103162
104163# multiple patterns
105164# TODO: test with multiple include patterns: ['*.txt', '*.py']
0 commit comments