def test_clone_branch_repo(self): # create an empty directory- and set that as the workspace repo_resolver.resolve(test_dir, branch_dependency) folder_path = os.path.join(test_dir, branch_dependency["Path"]) details = repo_resolver.get_details(folder_path) self.assertEqual(details['Url'], branch_dependency['Url']) self.assertEqual(details['Branch'], branch_dependency['Branch'])
def fetch(self): # def resolve(file_system_path, dependency, force=False, ignore=False, update_ok=False): repo_resolver.resolve(self._local_repo_root_path, self._repo_resolver_dep_obj, update_ok=True) # Add a file to track the state of the dependency. self.update_state_file()
def test_will_switch_branches(self): repo_resolver.resolve(test_dir, branch_dependency) folder_path = os.path.join(test_dir, branch_dependency["Path"]) repo_resolver.resolve(test_dir, sub_branch_dependency, force=True) details = repo_resolver.get_details(folder_path) self.assertEqual(details['Url'], branch_dependency['Url']) self.assertEqual(details['Branch'], sub_branch_dependency['Branch'])
def test_cant_switch_urls(self): # create an empty directory- and set that as the workspace repo_resolver.resolve(test_dir, branch_dependency) folder_path = os.path.join(test_dir, branch_dependency["Path"]) details = repo_resolver.get_details(folder_path) self.assertEqual(details['Url'], branch_dependency['Url']) # first we checkout with self.assertRaises(Exception): repo_resolver.resolve(test_dir, microsoft_branch_dependency) details = repo_resolver.get_details(folder_path) self.assertEqual(details['Url'], branch_dependency['Url'])
def test_wont_delete_dirty_repo(self): repo_resolver.resolve(test_dir, commit_dependency) folder_path = os.path.join(test_dir, commit_dependency["Path"]) file_path = get_first_file(folder_path) # make sure the file already exists self.assertTrue(os.path.isfile(file_path)) out_file = open(file_path, "a+") out_file.write("Make sure we don't delete this") out_file.close() self.assertTrue(os.path.exists(file_path)) with self.assertRaises(Exception): repo_resolver.resolve(test_dir, commit_dependency, update_ok=True)
def test_will_delete_files(self): folder_path = os.path.join(test_dir, commit_dependency["Path"]) os.makedirs(folder_path) file_path = os.path.join(folder_path, "test.txt") out_file = open(file_path, "w+") out_file.write("Make sure we don't delete this") out_file.close() self.assertTrue(os.path.exists(file_path)) try: repo_resolver.resolve(test_dir, commit_dependency, force=True) except: self.fail("We shouldn't fail when we are forcing") details = repo_resolver.get_details(folder_path) self.assertEqual(details['Url'], commit_dependency['Url'])
def test_wont_delete_files(self): folder_path = os.path.join(test_dir, commit_dependency["Path"]) os.makedirs(folder_path) file_path = os.path.join(folder_path, "test.txt") file_path = os.path.join(test_dir, branch_dependency["Path"], "test.txt") out_file = open(file_path, "w+") out_file.write("Make sure we don't delete this") out_file.close() self.assertTrue(os.path.isfile(file_path)) with self.assertRaises(Exception): repo_resolver.resolve(test_dir, branch_dependency) self.fail("We shouldn't make it here") self.assertTrue(os.path.isfile(file_path))
def test_fail_update(self): # create an empty directory- and set that as the workspace repo_resolver.resolve(test_dir, commit_dependency) folder_path = os.path.join(test_dir, commit_dependency["Path"]) details = repo_resolver.get_details(folder_path) self.assertEqual(details['Url'], commit_dependency['Url']) self.assertEqual(details['Commit'], commit_dependency['Commit']) # first we checkout with self.assertRaises(Exception): repo_resolver.resolve(test_dir, commit_later_dependency) details = repo_resolver.get_details(folder_path) self.assertEqual(details['Url'], commit_dependency['Url']) self.assertEqual(details['Commit'], commit_dependency['Commit'])
def test_ignore(self): # create an empty directory- and set that as the workspace repo_resolver.resolve(test_dir, branch_dependency) folder_path = os.path.join(test_dir, branch_dependency["Path"]) details = repo_resolver.get_details(folder_path) self.assertEqual(details['Url'], branch_dependency['Url']) # first we checkout repo_resolver.resolve( test_dir, microsoft_branch_dependency, ignore=True) details = repo_resolver.get_details(folder_path) self.assertEqual(details['Url'], branch_dependency['Url'])
def test_will_delete_dirty_repo(self): repo_resolver.resolve(test_dir, commit_dependency) folder_path = os.path.join(test_dir, commit_dependency["Path"]) file_path = get_first_file(folder_path) # make sure the file already exists self.assertTrue(os.path.isfile(file_path)) out_file = open(file_path, "a+") out_file.write("Make sure we don't delete this") out_file.close() self.assertTrue(os.path.exists(file_path)) try: repo_resolver.resolve(test_dir, commit_later_dependency, force=True) except: self.fail("We shouldn't fail when we are forcing")
def test_will_switch_urls(self): # create an empty directory- and set that as the workspace repo_resolver.resolve(test_dir, branch_dependency) folder_path = os.path.join(test_dir, branch_dependency["Path"]) details = repo_resolver.get_details(folder_path) self.assertEqual(details['Url'], branch_dependency['Url']) # first we checkout try: repo_resolver.resolve( test_dir, microsoft_branch_dependency, force=True) except: self.fail("We shouldn't fail when we are forcing") details = repo_resolver.get_details(folder_path) self.assertEqual(details['Url'], microsoft_branch_dependency['Url'])
def test_does_update(self): # create an empty directory- and set that as the workspace repo_resolver.resolve(test_dir, commit_dependency) folder_path = os.path.join(test_dir, commit_dependency["Path"]) details = repo_resolver.get_details(folder_path) self.assertEqual(details['Url'], commit_dependency['Url']) self.assertEqual(details['Commit'], commit_dependency['Commit']) # first we checkout try: repo_resolver.resolve( test_dir, commit_later_dependency, update_ok=True) except: self.fail("We are not supposed to throw an exception") details = repo_resolver.get_details(folder_path) self.assertEqual(details['Url'], commit_later_dependency['Url']) self.assertEqual(details['Commit'], commit_later_dependency['Commit'])
def test_identical_environments(self): scopes = ("corebuild", "project_mu") mu_basecore_dependency_1 = mu_basecore_dependency.copy() mu_basecore_dependency_2 = mu_basecore_dependency.copy() basecore_1_dir = "basecore_1" basecore_2_dir = "basecore_2" mu_basecore_dependency_1["Path"] = basecore_1_dir mu_basecore_dependency_2["Path"] = basecore_2_dir repo_resolver.resolve(test_dir, mu_basecore_dependency_1) repo_resolver.resolve(test_dir, mu_basecore_dependency_2) (build_env_1, shell_env_1) = do_update(os.path.normpath(basecore_1_dir), scopes) (build_env_2, shell_env_2) = do_update(os.path.normpath(basecore_2_dir), scopes) self.assertFalse(build_env_changed(build_env_1, build_env_2))
def test_does_update(self): # create an empty directory- and set that as the workspace logging.info(f"Resolving at {test_dir}") repo_resolver.resolve(test_dir, commit_dependency) folder_path = os.path.join(test_dir, commit_dependency["Path"]) logging.info(f"Getting details at {folder_path}") details = repo_resolver.get_details(folder_path) self.assertEqual(details['Url'], commit_dependency['Url']) self.assertEqual(details['Commit'], commit_dependency['Commit']) # next we checkout and go to the later commit try: repo_resolver.resolve(test_dir, commit_later_dependency, update_ok=True) except: self.fail("We are not supposed to throw an exception") details = repo_resolver.get_details(folder_path) logging.info(f"Checking {folder_path} for current git commit") self.assertEqual(details['Url'], commit_later_dependency['Url']) self.assertEqual(details['Commit'], commit_later_dependency['Commit'])