@@ -73,13 +73,13 @@ def go_mod_file(tmp_path: Path, request: pytest.FixtureRequest) -> Path:
7373@mock .patch ("cachito.workers.pkg_managers.gomod.get_golang_version" )
7474@mock .patch ("cachito.workers.pkg_managers.gomod.GoCacheTemporaryDirectory" )
7575@mock .patch ("cachito.workers.pkg_managers.gomod._merge_bundle_dirs" )
76- @mock .patch ("cachito.workers.pkg_managers.gomod._vet_local_deps " )
76+ @mock .patch ("cachito.workers.pkg_managers.gomod._vet_local_file_dep_paths " )
7777@mock .patch ("cachito.workers.pkg_managers.gomod._set_full_local_dep_relpaths" )
7878@mock .patch ("subprocess.run" )
7979def test_resolve_gomod (
8080 mock_run : mock .Mock ,
8181 mock_set_full_relpaths : mock .Mock ,
82- mock_vet_local_deps : mock .Mock ,
82+ mock_vet_local_file_dep_paths : mock .Mock ,
8383 mock_merge_tree : mock .Mock ,
8484 mock_temp_dir : mock .Mock ,
8585 mock_golang_version : mock .Mock ,
@@ -182,16 +182,14 @@ def test_resolve_gomod(
182182 str (RequestBundleDir (request ["id" ]).gomod_download_dir ),
183183 )
184184
185- expect_module_name = expect_gomod ["module" ]["name" ]
186185 expect_module_deps = expect_gomod ["module_deps" ]
187186 expect_pkg_deps = expect_gomod ["packages" ][0 ]["pkg_deps" ]
188187
189- mock_vet_local_deps .assert_has_calls (
188+ mock_vet_local_file_dep_paths .assert_has_calls (
190189 [
191- mock .call (expect_module_deps , expect_module_name , module_dir , module_dir ),
190+ mock .call (expect_module_deps , module_dir , module_dir ),
192191 mock .call (
193192 expect_pkg_deps ,
194- expect_module_name ,
195193 module_dir ,
196194 module_dir ,
197195 ),
@@ -687,26 +685,17 @@ def test_merge_files(file_1_content, file_2_content, result_file_content):
687685 assert_directories_equal (dir_2 , dir_3 )
688686
689687
690- @mock .patch ("cachito.workers.pkg_managers.gomod._validate_local_dependency_path" )
691- def test_vet_local_deps (mock_validate_dep_path ):
688+ def test_vet_local_file_dep_paths ():
692689 dependencies = [
693- {"name" : "foo" , "version" : "./local/foo" },
694- {"name" : "bar" , "version" : "v1.0.0" },
695- {"name" : "baz" , "version" : "./local/baz" },
690+ {"name" : "stdlib-dep" , "version" : None },
691+ {"name" : "versioned-dep" , "version" : "v1.0.0" },
692+ {"name" : "local-file-dep" , "version" : "./local/foo" },
693+ {"name" : "local-file-dep-parent-dir" , "version" : "../local/bar" },
696694 ]
697- module_name = "some-module"
698695 app_dir = Path ("/repo/some-module" )
699696 git_dir = Path ("/repo" )
700- mock_validate_dep_path .return_value = None
701697
702- gomod ._vet_local_deps (dependencies , module_name , app_dir , git_dir )
703-
704- mock_validate_dep_path .assert_has_calls (
705- [
706- mock .call (app_dir , git_dir , "./local/foo" ),
707- mock .call (app_dir , git_dir , "./local/baz" ),
708- ],
709- )
698+ gomod ._vet_local_file_dep_paths (dependencies , app_dir , git_dir )
710699
711700
712701@pytest .mark .parametrize (
@@ -717,37 +706,29 @@ def test_vet_local_deps(mock_validate_dep_path):
717706 "C:\\ Users\\ user\\ go\\ src\\ k8s.io\\ kubectl" ,
718707 ],
719708)
720- def test_vet_local_deps_abspath (platform_specific_path ):
709+ def test_vet_local_file_dep_paths_abspath (platform_specific_path ):
721710 dependencies = [{"name" : "foo" , "version" : platform_specific_path }]
722711 app_dir = Path ("/some/path" )
723712
724713 expect_error = re .escape (
725714 f"Absolute paths to gomod dependencies are not supported: { platform_specific_path } "
726715 )
727716 with pytest .raises (UnsupportedFeature , match = expect_error ):
728- gomod ._vet_local_deps (dependencies , "some-module" , app_dir , app_dir )
717+ gomod ._vet_local_file_dep_paths (dependencies , app_dir , app_dir )
729718
730719
731- @pytest .mark .parametrize (
732- "app_dir, git_dir, dep_path, expect_error" ,
733- [
734- ("foo" , "foo" , "./.." , True ),
735- ("foo/bar" , "foo" , "./.." , False ),
736- ("foo/bar" , "foo" , "./../.." , True ),
737- ],
738- )
739- def test_validate_local_dependency_path (
740- tmp_path : Path , app_dir : str , git_dir : str , dep_path : str , expect_error : bool
741- ):
742- tmp_git_dir = tmp_path / git_dir
743- tmp_app_dir = tmp_path / app_dir
744- tmp_app_dir .mkdir (parents = True , exist_ok = True )
720+ def test_vet_local_file_dep_paths_outside_repo ():
721+ dependencies = [
722+ {"name" : "local-file-dep" , "version" : "../../local/foo" },
723+ ]
724+ app_dir = Path ("/repo/some-module" )
725+ git_dir = Path ("/repo" )
745726
746- if expect_error :
747- with pytest . raises ( ValidationError ):
748- gomod . _validate_local_dependency_path ( tmp_app_dir , tmp_git_dir , dep_path )
749- else :
750- gomod ._validate_local_dependency_path ( tmp_app_dir , tmp_git_dir , dep_path )
727+ expect_error = re . escape (
728+ f"The local file dependency path { dependencies [ 0 ][ 'version' ] } is outside the repository"
729+ )
730+ with pytest . raises ( ValidationError , match = expect_error ) :
731+ gomod ._vet_local_file_dep_paths ( dependencies , app_dir , git_dir )
751732
752733
753734@pytest .mark .parametrize (
0 commit comments