def get_artifact_name(self, project, project_name, element_name, cache_key=None): if not cache_key: cache_key = self.get_element_key(project, element_name) # Replace path separator and chop off the .bst suffix for normal name normal_name = _get_normal_name(element_name) return _compose_artifact_name(project_name, normal_name, cache_key)
def test_artifact_delete_artifacts_build_deps(cli, tmpdir, datafiles): project = str(datafiles) element = "target.bst" # Configure a local cache local_cache = os.path.join(str(tmpdir), "cache") cli.configure({"cachedir": local_cache}) # First build an element so that we can find its artifact result = cli.run(project=project, args=["build", element]) result.assert_success() # Obtain the artifact ref cache_key = cli.get_element_key(project, element) artifact = os.path.join("test", os.path.splitext(element)[0], cache_key) # Explicitly check that the ARTIFACT exists in the cache assert os.path.exists( os.path.join(local_cache, "artifacts", "refs", artifact)) # get the artifact refs of the build dependencies bdep_refs = [] bdep_states = cli.get_element_states(project, [element], deps="build") for bdep in bdep_states.keys(): bdep_refs.append( os.path.join("test", _get_normal_name(bdep), cli.get_element_key(project, bdep))) # Assert build dependencies are cached for ref in bdep_refs: assert os.path.exists( os.path.join(local_cache, "artifacts", "refs", ref)) # Delete the artifact result = cli.run(project=project, args=["artifact", "delete", "--deps", "build", artifact]) result.assert_success() # Check that the artifact's build deps are no longer in the cache # Assert build dependencies have been deleted and that the artifact remains for ref in bdep_refs: assert not os.path.exists( os.path.join(local_cache, "artifacts", "refs", ref)) assert os.path.exists( os.path.join(local_cache, "artifacts", "refs", artifact))