44
55import pytest
66from tomlkit import TOMLDocument , dumps , parse
7- from twyn .base .constants import DEFAULT_TOP_PYPI_PACKAGES , AvailableLoggingLevels
7+ from twyn .base .constants import DEFAULT_PROJECT_TOML_FILE , DEFAULT_TOP_PYPI_PACKAGES , AvailableLoggingLevels
88from twyn .config .config_handler import ConfigHandler , ReadTwynConfiguration , TwynConfiguration
99from twyn .config .exceptions import (
1010 AllowlistPackageAlreadyExistsError ,
1111 AllowlistPackageDoesNotExistError ,
1212 TOMLError ,
1313)
14+ from twyn .file_handler .exceptions import PathNotFoundError
15+ from twyn .file_handler .file_handler import FileHandler
1416
1517
1618class TestConfig :
1719 def throw_exception (self ):
18- raise FileNotFoundError
20+ raise PathNotFoundError
1921
20- @patch ("twyn.config.config_handler.ConfigHandler._get_toml_file_pointer " )
22+ @patch ("twyn.file_handler.file_handler.FileHandler.read " )
2123 def test_enforce_file_error (self , mock_is_file ):
2224 mock_is_file .side_effect = self .throw_exception
2325 with pytest .raises (TOMLError ):
24- ConfigHandler (enforce_file = True ).resolve_config ()
26+ ConfigHandler (FileHandler ( DEFAULT_PROJECT_TOML_FILE ), enforce_file = True ).resolve_config ()
2527
26- @patch ("twyn.config.config_handler.ConfigHandler._get_toml_file_pointer " )
28+ @patch ("twyn.file_handler.file_handler.FileHandler.read " )
2729 def test_no_enforce_file_on_non_existent_file (self , mock_is_file ):
2830 """Resolving the config without enforcing the file to be present gives you defaults."""
2931 mock_is_file .side_effect = self .throw_exception
30- config = ConfigHandler (enforce_file = False ).resolve_config ()
32+ config = ConfigHandler (FileHandler ( DEFAULT_PROJECT_TOML_FILE ), enforce_file = False ).resolve_config ()
3133
3234 assert config == TwynConfiguration (
3335 dependency_file = None ,
@@ -39,20 +41,20 @@ def test_no_enforce_file_on_non_existent_file(self, mock_is_file):
3941
4042 def test_config_raises_for_unknown_file (self ):
4143 with pytest .raises (TOMLError ):
42- ConfigHandler (file_path = "non-existent-file.toml" ).resolve_config ()
44+ ConfigHandler (FileHandler ( "non-existent-file.toml" ) ).resolve_config ()
4345
4446 def test_read_config_values (self , pyproject_toml_file ):
45- config = ConfigHandler (file_path = pyproject_toml_file ).resolve_config ()
47+ config = ConfigHandler (file_handler = FileHandler ( pyproject_toml_file ) ).resolve_config ()
4648 assert config .dependency_file == "my_file.txt"
4749 assert config .selector_method == "my_selector"
4850 assert config .logging_level == AvailableLoggingLevels .debug
4951 assert config .allowlist == {"boto4" , "boto2" }
5052
5153 def test_get_twyn_data_from_file (self , pyproject_toml_file ):
52- handler = ConfigHandler (file_path = pyproject_toml_file )
54+ handler = ConfigHandler (FileHandler ( str ( pyproject_toml_file )) )
5355
5456 toml = handler ._read_toml ()
55- twyn_data = ConfigHandler (file_path = pyproject_toml_file )._get_read_config (toml )
57+ twyn_data = ConfigHandler (FileHandler ( pyproject_toml_file ) )._get_read_config (toml )
5658 assert twyn_data == ReadTwynConfiguration (
5759 dependency_file = "my_file.txt" ,
5860 selector_method = "my_selector" ,
@@ -62,7 +64,7 @@ def test_get_twyn_data_from_file(self, pyproject_toml_file):
6264 )
6365
6466 def test_write_toml (self , pyproject_toml_file ):
65- handler = ConfigHandler (file_path = pyproject_toml_file )
67+ handler = ConfigHandler (FileHandler ( pyproject_toml_file ) )
6668 toml = handler ._read_toml ()
6769
6870 initial_config = handler .resolve_config ()
@@ -103,12 +105,12 @@ def test_write_toml(self, pyproject_toml_file):
103105
104106
105107class TestAllowlistConfigHandler :
106- @patch ("twyn.config.config_handler.ConfigHandler._write_toml " )
108+ @patch ("twyn.file_handler.file_handler.FileHandler.write " )
107109 @patch ("twyn.config.config_handler.ConfigHandler._read_toml" )
108110 def test_allowlist_add (self , mock_toml , mock_write_toml ):
109111 mock_toml .return_value = TOMLDocument ()
110112
111- config = ConfigHandler ()
113+ config = ConfigHandler (FileHandler ( "some-file" ) )
112114
113115 config .add_package_to_allowlist ("mypackage" )
114116
@@ -122,7 +124,7 @@ def test_allowlist_add(self, mock_toml, mock_write_toml):
122124 def test_allowlist_add_duplicate_error (self , mock_toml , mock_write_toml ):
123125 mock_toml .return_value = parse (dumps ({"tool" : {"twyn" : {"allowlist" : ["mypackage" ]}}}))
124126
125- config = ConfigHandler ()
127+ config = ConfigHandler (FileHandler ( "some-file" ) )
126128 with pytest .raises (
127129 AllowlistPackageAlreadyExistsError ,
128130 match = "Package 'mypackage' is already present in the allowlist. Skipping." ,
@@ -136,7 +138,7 @@ def test_allowlist_add_duplicate_error(self, mock_toml, mock_write_toml):
136138 def test_allowlist_remove_completely (self , mock_toml , mock_write_toml ):
137139 mock_toml .return_value = parse (dumps ({"tool" : {"twyn" : {"allowlist" : ["mypackage" ]}}}))
138140
139- config = ConfigHandler ()
141+ config = ConfigHandler (FileHandler ( "some-file" ) )
140142
141143 config .remove_package_from_allowlist ("mypackage" )
142144 assert config ._read_toml () == {"tool" : {"twyn" : {}}}
@@ -146,7 +148,7 @@ def test_allowlist_remove_completely(self, mock_toml, mock_write_toml):
146148 def test_allowlist_remove (self , mock_toml , mock_write_toml ):
147149 mock_toml .return_value = parse (dumps ({"tool" : {"twyn" : {"allowlist" : ["mypackage" , "another-package" ]}}}))
148150
149- config = ConfigHandler ()
151+ config = ConfigHandler (FileHandler ( "some-file" ) )
150152
151153 config .remove_package_from_allowlist ("mypackage" )
152154 assert config ._read_toml () == {"tool" : {"twyn" : {"allowlist" : ["another-package" ]}}}
@@ -156,7 +158,7 @@ def test_allowlist_remove(self, mock_toml, mock_write_toml):
156158 def test_allowlist_remove_non_existent_package_error (self , mock_toml , mock_write_toml ):
157159 mock_toml .return_value = parse (dumps ({"tool" : {"twyn" : {"allowlist" : ["mypackage" ]}}}))
158160
159- config = ConfigHandler ()
161+ config = ConfigHandler (FileHandler ( "some-file" ) )
160162 with pytest .raises (
161163 AllowlistPackageDoesNotExistError ,
162164 match = "Package 'mypackage2' is not present in the allowlist. Skipping." ,
0 commit comments