|
10 | 10 |
|
11 | 11 |
|
12 | 12 | class TestDependencySelector: |
13 | | - @patch("twyn.dependency_parser.poetry_lock.PoetryLockParser.file_exists") |
14 | | - @patch("twyn.dependency_parser.requirements_txt.RequirementsTxtParser.file_exists") |
15 | | - @patch("twyn.dependency_parser.dependency_selector.DependencySelector._raise_for_selected_parsers") |
16 | 13 | @pytest.mark.parametrize( |
17 | | - "file_name, requirements_exists, poetry_exists, parser_obj", |
| 14 | + "file_name, parser_obj", |
18 | 15 | [ |
19 | | - (None, True, False, RequirementsTxtParser), # auto detect requirements.txt |
20 | | - (None, False, True, PoetryLockParser), # auto detect poetry.lock |
21 | 16 | ( |
22 | 17 | "requirements.txt", |
23 | | - None, |
24 | | - None, |
25 | 18 | RequirementsTxtParser, |
26 | 19 | ), # because file is specified, we won't autocheck |
27 | | - ("poetry.lock", None, None, PoetryLockParser), |
28 | | - ("/some/path/poetry.lock", None, None, PoetryLockParser), |
29 | | - ("/some/path/requirements.txt", None, None, RequirementsTxtParser), |
| 20 | + ("poetry.lock", PoetryLockParser), |
| 21 | + ("/some/path/poetry.lock", PoetryLockParser), |
| 22 | + ("/some/path/requirements.txt", RequirementsTxtParser), |
30 | 23 | ], |
31 | 24 | ) |
32 | | - def test_get_dependency_parser( |
33 | | - self, |
34 | | - _raise_for_selected_parsers, |
35 | | - req_exists, |
36 | | - poet_exists, |
37 | | - file_name, |
38 | | - requirements_exists, |
39 | | - poetry_exists, |
40 | | - parser_obj, |
41 | | - ): |
42 | | - req_exists.return_value = requirements_exists |
43 | | - poet_exists.return_value = poetry_exists |
| 25 | + def test_get_dependency_parser(self, file_name, parser_obj): |
44 | 26 | parser = DependencySelector(file_name).get_dependency_parser() |
45 | 27 | assert isinstance(parser, parser_obj) |
| 28 | + assert str(parser.file_handler.file_path).endswith(file_name) |
| 29 | + |
| 30 | + @patch("twyn.dependency_parser.poetry_lock.PoetryLockParser.file_exists") |
| 31 | + @patch("twyn.dependency_parser.requirements_txt.RequirementsTxtParser.file_exists") |
| 32 | + def test_get_dependency_parser_auto_detect_requirements_file( |
| 33 | + self, req_file_exists, poetry_file_exists, requirements_txt_file |
| 34 | + ): |
| 35 | + # Twyn finds the local poetry.lock file. |
| 36 | + # It proves that it can show a requirements.txt file still after mocking the poetry file parser. |
| 37 | + poetry_file_exists.return_value = False |
| 38 | + req_file_exists.return_value = True |
| 39 | + |
| 40 | + parser = DependencySelector("").get_dependency_parser() |
| 41 | + assert isinstance(parser, RequirementsTxtParser) |
| 42 | + |
| 43 | + def test_get_dependency_parser_auto_detect_poetry_file(self, poetry_lock_file_lt_1_5): |
| 44 | + parser = DependencySelector("").get_dependency_parser() |
| 45 | + assert isinstance(parser, PoetryLockParser) |
46 | 46 |
|
47 | 47 | @pytest.mark.parametrize( |
48 | 48 | "exists, exception", |
|
0 commit comments