@@ -113,3 +113,86 @@ def test_change_database_path(self):
113113 assert result .exit_code == 0
114114
115115 assert f"Database: { tmp_db .name } " in result .stdout
116+
117+ def test_add_with_exclude_extensions (self ):
118+ with tempfile .TemporaryDirectory () as tmp_dir :
119+ (Path (tmp_dir ) / "file1.txt" ).write_text ("This is a text file." )
120+ (Path (tmp_dir ) / "file2.md" ).write_text ("# This is a markdown file." )
121+ (Path (tmp_dir ) / "file3.py" ).write_text ("print('Hello, world!')" )
122+ (Path (tmp_dir ) / "file4.js" ).write_text ("console.log('Hello, world!');" )
123+
124+ with tempfile .NamedTemporaryFile (suffix = ".tempdb" ) as tmp_db :
125+ runner = CliRunner ()
126+
127+ result = runner .invoke (
128+ app ,
129+ ["--database" , tmp_db .name , "add" , tmp_dir , "--exclude" , "py,js" ],
130+ )
131+ assert result .exit_code == 0
132+
133+ # Check that only .txt and .md files were added
134+ assert "Processing 2 files" in result .stdout
135+ assert "file1.txt" in result .stdout
136+ assert "file2.md" in result .stdout
137+ assert "file3.py" not in result .stdout
138+ assert "file4.js" not in result .stdout
139+
140+ def test_add_with_only_extensions (self ):
141+ with tempfile .TemporaryDirectory () as tmp_dir :
142+ (Path (tmp_dir ) / "file1.txt" ).write_text ("This is a text file." )
143+ (Path (tmp_dir ) / "file2.md" ).write_text ("# This is a markdown file." )
144+ (Path (tmp_dir ) / "file3.py" ).write_text ("print('Hello, world!')" )
145+ (Path (tmp_dir ) / "file4.js" ).write_text ("console.log('Hello, world!');" )
146+
147+ with tempfile .NamedTemporaryFile (suffix = ".tempdb" ) as tmp_db :
148+ runner = CliRunner ()
149+
150+ result = runner .invoke (
151+ app ,
152+ [
153+ "--database" ,
154+ tmp_db .name ,
155+ "add" ,
156+ tmp_dir ,
157+ "--only" ,
158+ "md,txt" ,
159+ ],
160+ )
161+ assert result .exit_code == 0
162+
163+ # Check that only .txt and .md files were added
164+ assert "Processing 2 files" in result .stdout
165+ assert "file1.txt" in result .stdout
166+ assert "file2.md" in result .stdout
167+ assert "file3.py" not in result .stdout
168+ assert "file4.js" not in result .stdout
169+
170+ def test_add_with_only_and_exclude_extensions_are_normilized (self ):
171+ with tempfile .TemporaryDirectory () as tmp_dir :
172+ (Path (tmp_dir ) / "file1.txt" ).write_text ("This is a text file." )
173+ (Path (tmp_dir ) / "file2.md" ).write_text ("# This is a markdown file." )
174+ (Path (tmp_dir ) / "file3.py" ).write_text ("print('Hello, world!')" )
175+
176+ with tempfile .NamedTemporaryFile (suffix = ".tempdb" ) as tmp_db :
177+ runner = CliRunner ()
178+
179+ result = runner .invoke (
180+ app ,
181+ [
182+ "--database" ,
183+ tmp_db .name ,
184+ "add" ,
185+ tmp_dir ,
186+ "--only" ,
187+ ".md, .txt,py" ,
188+ "--exclude" ,
189+ ".py " , # wins over --only
190+ ],
191+ )
192+ assert result .exit_code == 0
193+
194+ # Check that only .txt and .md files were added
195+ assert "Processing 2 files" in result .stdout
196+ assert "file1.txt" in result .stdout
197+ assert "file2.md" in result .stdout
198+ assert "file3.py" not in result .stdout
0 commit comments