11from pathlib import Path
22
33import pytest
4- from twyn .dependency_parser import PoetryLockParser , RequirementsTxtParser , UvLockParser
4+ from twyn .dependency_parser import (
5+ DockerComposeParser ,
6+ DockerfileParser ,
7+ PoetryLockParser ,
8+ RequirementsTxtParser ,
9+ UvLockParser ,
10+ )
511from twyn .dependency_parser .dependency_selector import DependencySelector
612from twyn .dependency_parser .exceptions import (
713 NoMatchingParserError ,
@@ -15,17 +21,16 @@ class TestDependencySelector:
1521 @pytest .mark .parametrize (
1622 ("file_name" , "parser_class" ),
1723 [
18- (
19- "requirements.txt" ,
20- RequirementsTxtParser ,
21- ), # because file is specified, we won't autocheck
24+ ("requirements.txt" , RequirementsTxtParser ),
2225 ("poetry.lock" , PoetryLockParser ),
2326 ("uv.lock" , UvLockParser ),
24- ("/some/path/poetry.lock" , PoetryLockParser ),
25- ("/some/path/uv.lock" , UvLockParser ),
26- ("/some/path/requirements.txt" , RequirementsTxtParser ),
27- ("/some/path/yarn.lock" , YarnLockParser ),
28- ("/some/path/package-lock.json" , PackageLockJsonParser ),
27+ ("yarn.lock" , YarnLockParser ),
28+ ("package-lock.json" , PackageLockJsonParser ),
29+ ("Dockerfile" , DockerfileParser ),
30+ ("docker-compose.yml" , DockerComposeParser ),
31+ ("docker-compose.yaml" , DockerComposeParser ),
32+ ("compose.yml" , DockerComposeParser ),
33+ ("compose.yaml" , DockerComposeParser ),
2934 ],
3035 )
3136 def test_get_dependency_parser (self , file_name : str , parser_class : type [AbstractParser ]) -> None :
@@ -35,31 +40,18 @@ def test_get_dependency_parser(self, file_name: str, parser_class: type[Abstract
3540 assert isinstance (parser [0 ], parser_class )
3641 assert str (parser [0 ].file_handler .file_path ).endswith (file_name )
3742
38- def test_get_dependency_parser_auto_detect_requirements_file (
39- self , requirements_txt_file : Path , tmp_path : Path
40- ) -> None :
43+ def test_get_dependency_parser_auto_detects_file (self , requirements_txt_file : Path , tmp_path : Path ) -> None :
4144 parser = DependencySelector ("" , root_path = str (tmp_path )).get_dependency_parsers ()
4245 assert isinstance (parser [0 ], RequirementsTxtParser )
4346
44- def test_get_dependency_parser_auto_detect_poetry_lock_file (
45- self , poetry_lock_file_ge_1_5 : Path , tmp_path : Path
46- ) -> None :
47- selector = DependencySelector ("" , root_path = str (tmp_path ))
48- parser = selector .get_dependency_parsers ()
49- assert isinstance (parser [0 ], PoetryLockParser )
50-
51- def test_get_dependency_parser_auto_detect_uv_lock_file (self , uv_lock_file : Path , tmp_path : Path ) -> None :
52- parser = DependencySelector ("" , root_path = str (tmp_path )).get_dependency_parsers ()
53- assert isinstance (parser [0 ], UvLockParser )
54-
5547 def test_auto_detect_dependency_file_parser_exceptions (self , tmp_path : Path ) -> None :
5648 with pytest .raises (NoMatchingParserError ):
5749 DependencySelector (root_path = str (tmp_path )).get_dependency_parsers ()
5850
5951 @pytest .mark .parametrize ("file_name" , ["unknown.txt" , "" ])
6052 def test_get_dependency_file_parser_unknown_file_type (self , file_name : str ) -> None :
6153 with pytest .raises (NoMatchingParserError ):
62- DependencySelector (file_name ). get_dependency_file_parsers_from_file_name ()
54+ DependencySelector ({ file_name }). get_dependency_parsers ()
6355
6456 def test_auto_detect_dependency_file_parser_scans_subdirectories (self , tmp_path : Path ) -> None :
6557 # Create nested directories and dependency files
0 commit comments