def test_good_cached_package(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 % good_version) ext_dep_descriptor = EDF.ExternDepDescriptor( ext_dep_file_path).descriptor_contents ext_dep = NugetDependency(ext_dep_descriptor) # # Create a cache with a good cached package. # # First, create the cache. cache_dir = os.path.join(test_dir, 'nuget_test_good_cache') os.mkdir(cache_dir) ext_dep.global_cache_path = cache_dir # Then create the directories inside the cache that should hold the contents. package_cache_dir = os.path.join(cache_dir, hw_package_name.lower(), good_version) os.makedirs(package_cache_dir) # Create a directory that doesn't match the heuristic. test_cache_contents = os.path.join(package_cache_dir, hw_package_name, "working_blah") os.makedirs(test_cache_contents) self.assertTrue(ext_dep._fetch_from_cache(hw_package_name)) # Make sure that the contents were copied correctly. final_path = os.path.join(ext_dep.contents_dir, "working_blah") self.assertTrue(os.path.isdir(final_path)) self.assertTrue(ext_dep.verify())
def test_bad_cached_package(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 % good_version) ext_dep_descriptor = EDF.ExternDepDescriptor( ext_dep_file_path).descriptor_contents ext_dep = NugetDependency(ext_dep_descriptor) # # Create a cache with a bad cached package. # # First, create the cache. cache_dir = os.path.join(test_dir, 'nuget_test_bad_cache') os.mkdir(cache_dir) ext_dep.global_cache_path = cache_dir # Then create the directories inside the cache that should hold the contents. package_cache_dir = os.path.join(cache_dir, hw_package_name.lower(), good_version) os.makedirs(package_cache_dir) # There are no package directories inside the cache. self.assertFalse(ext_dep._fetch_from_cache(hw_package_name)) # Create a directory that doesn't match the heuristic. test_cache_contents = os.path.join(package_cache_dir, "contents", "blah") os.makedirs(test_cache_contents) self.assertFalse(ext_dep._fetch_from_cache(hw_package_name))
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())
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())
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())
def test_download_missing_nuget(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 % missing_version) ext_dep_descriptor = EDF.ExternDepDescriptor(ext_dep_file_path).descriptor_contents ext_dep = NugetDependency(ext_dep_descriptor) with self.assertRaises(RuntimeError): ext_dep.fetch() self.assertFalse(ext_dep.verify()) self.assertEqual(ext_dep.version, missing_version)
def test_download_bad_nuget(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 % bad_version) ext_dep_descriptor = EDF.ExternDepDescriptor(ext_dep_file_path).descriptor_contents ext_dep = NugetDependency(ext_dep_descriptor) with self.assertRaises(RuntimeError): # we should throw an exception because we don't know how to parse the version ext_dep.fetch() self.assertFalse(ext_dep.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()) self.assertEqual(ext_dep.version, behind_one_version)
def test_cache_path_not_found(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 % good_version) ext_dep_descriptor = EDF.ExternDepDescriptor( ext_dep_file_path).descriptor_contents ext_dep = NugetDependency(ext_dep_descriptor) ext_dep.global_cache_path = "not_a_real_path" self.assertFalse(ext_dep._fetch_from_cache(hw_package_name))
def test_fail_with_bad_url(self): ext_dep_file_path = os.path.join(test_dir, "bad_ext_dep.json") with open(ext_dep_file_path, "w+") as ext_dep_file: ext_dep_file.write(bad_json_file) ext_dep_descriptor = EDF.ExternDepDescriptor( ext_dep_file_path).descriptor_contents ext_dep = WebDependency(ext_dep_descriptor) with self.assertRaises(urllib.error.HTTPError): ext_dep.fetch() self.fail("should have thrown an Exception")
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(), "Should not verify")
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 test_download_good_nuget(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 % good_version) ext_dep_descriptor = EDF.ExternDepDescriptor(ext_dep_file_path).descriptor_contents ext_dep = NugetDependency(ext_dep_descriptor) ext_dep.fetch() self.assertTrue(ext_dep.verify()) self.assertEqual(ext_dep.version, good_version) # make sure we clean up after ourselves ext_dep.clean()
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_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(), "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(), "Confirm downlevel repo fails to verify") ext_dep.fetch() self.assertTrue(ext_dep.verify(), "Confirm repo can be updated")
def test_verify_invalid_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 my_file: my_file.write("Test code\n") self.assertFalse(ext_dep.verify(logversion=False))
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 my_file: my_file.write("Test code to make repo dirty\n") self.assertFalse(ext_dep.verify())
def test_single_file(self): ext_dep_file_path = os.path.join(test_dir, "good_ext_dep.json") with open(ext_dep_file_path, "w+") as ext_dep_file: ext_dep_file.write( json.dumps(single_file_extdep)) # dump to a file ext_dep_descriptor = EDF.ExternDepDescriptor( ext_dep_file_path).descriptor_contents ext_dep = WebDependency(ext_dep_descriptor) ext_dep.fetch() ext_dep_name = single_file_extdep['name'] + "_extdep" file_path = os.path.join(test_dir, ext_dep_name, single_file_extdep['internal_path']) if not os.path.isfile(file_path): self.fail("The downloaded file isn't there")
def test_sha256_lowercase_single_file(self): ext_dep_file_path = os.path.join(test_dir, "good_ext_dep.json") jquery_json = jquery_json_file.copy() jquery_json["sha256"] = jquery_json["sha256"].lower() with open(ext_dep_file_path, "w+") as ext_dep_file: ext_dep_file.write(json.dumps(jquery_json)) # dump to a file ext_dep_descriptor = EDF.ExternDepDescriptor( ext_dep_file_path).descriptor_contents ext_dep = WebDependency(ext_dep_descriptor) ext_dep.fetch() ext_dep_name = jquery_json['name'] + "_extdep" file_path = os.path.join(test_dir, ext_dep_name, jquery_json['internal_path']) if not os.path.isfile(file_path): self.fail("The downloaded file isn't there")
def test_sha256_whole_tar_directory(self): ext_dep_file_path = os.path.join(test_dir, "good_ext_dep.json") with open(ext_dep_file_path, "w+") as ext_dep_file: ext_dep_file.write( json.dumps(tar_directory_extdep)) # dump to a file ext_dep_descriptor = EDF.ExternDepDescriptor( ext_dep_file_path).descriptor_contents ext_dep = WebDependency(ext_dep_descriptor) ext_dep.fetch() ext_dep_name = tar_directory_extdep['name'] + "_extdep" folder_path = os.path.join(test_dir, ext_dep_name) if not os.path.exists(os.path.join(folder_path, "README")): logging.warning(folder_path) self.fail()