def test_verify_no_directory(self): ext_dep_file_path = os.path.join(test_dir, "hw_ext_dep.json") with open(ext_dep_file_path, "w+") as ext_dep_file: ext_dep_file.write(hw_json_template % invalid_version) ext_dep_descriptor = EDF.ExternDepDescriptor(ext_dep_file_path).descriptor_contents ext_dep = GitDependency(ext_dep_descriptor) self.assertFalse(ext_dep.verify(logversion=False))
def test_verify_up_to_date(self): ext_dep_file_path = os.path.join(test_dir, "hw_ext_dep.json") with open(ext_dep_file_path, "w+") as ext_dep_file: ext_dep_file.write(hw_json_template % uptodate_version) ext_dep_descriptor = EDF.ExternDepDescriptor(ext_dep_file_path).descriptor_contents ext_dep = GitDependency(ext_dep_descriptor) ext_dep.fetch() self.assertTrue(ext_dep.verify(logversion=False))
def test_verify_empty_repo_dir(self): ext_dep_file_path = os.path.join(test_dir, "hw_ext_dep.json") with open(ext_dep_file_path, "w+") as ext_dep_file: ext_dep_file.write(hw_json_template % invalid_version) ext_dep_descriptor = EDF.ExternDepDescriptor(ext_dep_file_path).descriptor_contents ext_dep = GitDependency(ext_dep_descriptor) os.makedirs(ext_dep._local_repo_root_path, exist_ok=True) self.assertFalse(ext_dep.verify(logversion=False))
def test_clean_no_directory(self): ext_dep_file_path = os.path.join(test_dir, "hw_ext_dep.json") with open(ext_dep_file_path, "w+") as ext_dep_file: ext_dep_file.write(hw_json_template % uptodate_version) ext_dep_descriptor = EDF.ExternDepDescriptor(ext_dep_file_path).descriptor_contents ext_dep = GitDependency(ext_dep_descriptor) self.assertFalse(os.path.isdir(ext_dep.contents_dir), "Confirm not ext dep directory before cleaning") ext_dep.clean() self.assertFalse(os.path.isdir(ext_dep.contents_dir))
def test_fetch_verify_non_existant_repo_commit_hash(self): ext_dep_file_path = os.path.join(test_dir, "hw_ext_dep.json") with open(ext_dep_file_path, "w+") as ext_dep_file: ext_dep_file.write(hw_json_template % invalid_version) ext_dep_descriptor = EDF.ExternDepDescriptor(ext_dep_file_path).descriptor_contents ext_dep = GitDependency(ext_dep_descriptor) ext_dep.fetch() self.assertEqual(ext_dep.version, invalid_version) self.assertFalse(ext_dep.verify(logversion=False), "Should not verify")
def test_fetch_verify_good_repo_at_not_top_of_tree(self): ext_dep_file_path = os.path.join(test_dir, "hw_ext_dep.json") with open(ext_dep_file_path, "w+") as ext_dep_file: ext_dep_file.write(hw_json_template % behind_one_version) ext_dep_descriptor = EDF.ExternDepDescriptor(ext_dep_file_path).descriptor_contents ext_dep = GitDependency(ext_dep_descriptor) ext_dep.fetch() self.assertTrue(ext_dep.verify(logversion=False)) self.assertEqual(ext_dep.version, behind_one_version)
def test_clean_dir_but_not_git_repo(self): ext_dep_file_path = os.path.join(test_dir, "hw_ext_dep.json") with open(ext_dep_file_path, "w+") as ext_dep_file: ext_dep_file.write(hw_json_template % invalid_version) ext_dep_descriptor = EDF.ExternDepDescriptor(ext_dep_file_path).descriptor_contents ext_dep = GitDependency(ext_dep_descriptor) os.makedirs(ext_dep._local_repo_root_path, exist_ok=True) with open(os.path.join(ext_dep._local_repo_root_path, "testfile.txt"), 'a') as myfile: myfile.write("Test code\n") ext_dep.clean() self.assertFalse(os.path.isdir(ext_dep.contents_dir))
def test_verify_dirty_git_repo(self): ext_dep_file_path = os.path.join(test_dir, "hw_ext_dep.json") with open(ext_dep_file_path, "w+") as ext_dep_file: ext_dep_file.write(hw_json_template % uptodate_version) ext_dep_descriptor = EDF.ExternDepDescriptor(ext_dep_file_path).descriptor_contents ext_dep = GitDependency(ext_dep_descriptor) ext_dep.fetch() # now write a new file with open(os.path.join(ext_dep._local_repo_root_path, "testfile.txt"), 'a') as myfile: myfile.write("Test code to make repo dirty\n") self.assertFalse(ext_dep.verify(logversion=False))
def test_url_should_not_be_modified_without_env(self): my_test_descriptor = copy.copy(TestGitDependencyUrlPatching.TEST_DESCRIPTOR) # Add the indicator for patching. my_test_descriptor['url_creds_var'] = 'test_creds_var' # Initialize the GitDependency object. gdep = GitDependency(my_test_descriptor) # Assert that the URL is identical. self.assertEqual(gdep.source, my_test_descriptor['source'])
def test_url_should_not_be_modified_without_descriptor_field(self): my_test_descriptor = copy.copy(TestGitDependencyUrlPatching.TEST_DESCRIPTOR) env = ShellEnvironment.GetEnvironment() # Add the var to the environment. env.set_shell_var('test_creds_var', 'my_stuff') # Initialize the GitDependency object. gdep = GitDependency(my_test_descriptor) # Assert that the URL is identical. self.assertEqual(gdep.source, my_test_descriptor['source'])
def test_clean_clean_repo(self): ext_dep_file_path = os.path.join(test_dir, "hw_ext_dep.json") with open(ext_dep_file_path, "w+") as ext_dep_file: ext_dep_file.write(hw_json_template % uptodate_version) ext_dep_descriptor = EDF.ExternDepDescriptor(ext_dep_file_path).descriptor_contents ext_dep = GitDependency(ext_dep_descriptor) ext_dep.fetch() self.assertTrue(ext_dep.verify(), "Confirm repo is valid and clean") ext_dep.clean() self.assertFalse(os.path.isdir(ext_dep.contents_dir))
def ExtDepFactory(descriptor): # Add all supported external dependencies here to avoid import errors. from MuEnvironment.WebDependency import WebDependency from MuEnvironment.NugetDependency import NugetDependency from MuEnvironment.GitDependency import GitDependency if descriptor['type'] == NugetDependency.TypeString: return NugetDependency(descriptor) elif descriptor['type'] == WebDependency.TypeString: return WebDependency(descriptor) elif descriptor['type'] == GitDependency.TypeString: return GitDependency(descriptor) raise ValueError("Unknown extdep type '%s' requested!" % descriptor['type'])
def test_url_should_be_modified_if_creds_are_indicated_and_supplied(self): my_test_descriptor = copy.copy(TestGitDependencyUrlPatching.TEST_DESCRIPTOR) # Add the indicator for patching. my_test_descriptor['url_creds_var'] = 'test_creds_var' env = ShellEnvironment.GetEnvironment() # Add the var to the environment. env.set_shell_var('test_creds_var', 'my_stuff') # Initialize the GitDependency object. gdep = GitDependency(my_test_descriptor) # Assert that the URL is identical. self.assertEqual(gdep.source, "https://[email protected]/octocat/Hello-World.git")
def test_verify_down_level_repo(self): ext_dep_file_path = os.path.join(test_dir, "hw_ext_dep.json") with open(ext_dep_file_path, "w+") as ext_dep_file: ext_dep_file.write(hw_json_template % behind_one_version) ext_dep_descriptor = EDF.ExternDepDescriptor(ext_dep_file_path).descriptor_contents ext_dep = GitDependency(ext_dep_descriptor) ext_dep.fetch() self.assertTrue(ext_dep.verify(logversion=False), "Confirm valid ext_dep at one commit behind") with open(ext_dep_file_path, "w+") as ext_dep_file: ext_dep_file.write(hw_json_template % uptodate_version) ext_dep_descriptor = EDF.ExternDepDescriptor(ext_dep_file_path).descriptor_contents ext_dep = GitDependency(ext_dep_descriptor) self.assertFalse(ext_dep.verify(logversion=False), "Confirm downlevel repo fails to verify") ext_dep.fetch() self.assertTrue(ext_dep.verify(logversion=False), "Confirm repo can be updated")