From d93763daa96c159fbf891219b71a7e5e9a31a971 Mon Sep 17 00:00:00 2001 From: Tom Pollard Date: Thu, 21 Mar 2019 12:59:56 +0000 Subject: plugintestutils/runcli.py: Add TestArtifact() 'abstraction' class This adds the initial Artifact 'abstractions', taking existing test methods into a dedicated Artifact class. The class is accessed via an instance attribute of the generic Cli() fixture. This is in preperation for AaaP, to ensure existing tests pass whilst creating an entry point for further abstractions when necessary. --- tests/integration/artifact.py | 22 ++++++---------------- tests/integration/pullbuildtrees.py | 20 ++++---------------- 2 files changed, 10 insertions(+), 32 deletions(-) (limited to 'tests/integration') diff --git a/tests/integration/artifact.py b/tests/integration/artifact.py index f9470ed6b..0718de893 100644 --- a/tests/integration/artifact.py +++ b/tests/integration/artifact.py @@ -58,16 +58,6 @@ def test_cache_buildtrees(cli, tmpdir, datafiles): 'cachedir': str(tmpdir) }) - @contextmanager - def cas_extract_buildtree(digest): - extractdir = tempfile.mkdtemp(prefix="tmp", dir=str(tmpdir)) - try: - cas = CASCache(str(tmpdir)) - cas.checkout(extractdir, digest) - yield os.path.join(extractdir, 'buildtree') - finally: - utils._force_rmtree(extractdir) - # Build autotools element with the default behavior of caching buildtrees # only when necessary. The artifact should be successfully pushed to the share1 remote # and cached locally with an 'empty' buildtree digest, as it's not a @@ -80,7 +70,7 @@ def test_cache_buildtrees(cli, tmpdir, datafiles): # The buildtree dir should not exist, as we set the config to not cache buildtrees. cache_key = cli.get_element_key(project, element_name) elementdigest = share1.has_artifact('test', element_name, cache_key) - with cas_extract_buildtree(elementdigest) as buildtreedir: + with cli.artifact.extract_buildtree(tmpdir, elementdigest) as buildtreedir: assert not os.path.isdir(buildtreedir) # Delete the local cached artifacts, and assert the when pulled with --pull-buildtrees @@ -89,7 +79,7 @@ def test_cache_buildtrees(cli, tmpdir, datafiles): assert cli.get_element_state(project, element_name) != 'cached' result = cli.run(project=project, args=['--pull-buildtrees', 'artifact', 'pull', element_name]) assert element_name in result.get_pulled_elements() - with cas_extract_buildtree(elementdigest) as buildtreedir: + with cli.artifact.extract_buildtree(tmpdir, elementdigest) as buildtreedir: assert not os.path.isdir(buildtreedir) shutil.rmtree(os.path.join(str(tmpdir), 'cas')) @@ -99,7 +89,7 @@ def test_cache_buildtrees(cli, tmpdir, datafiles): # leading to no buildtreedir being extracted result = cli.run(project=project, args=['artifact', 'pull', element_name]) assert element_name in result.get_pulled_elements() - with cas_extract_buildtree(elementdigest) as buildtreedir: + with cli.artifact.extract_buildtree(tmpdir, elementdigest) as buildtreedir: assert not os.path.isdir(buildtreedir) shutil.rmtree(os.path.join(str(tmpdir), 'cas')) @@ -116,7 +106,7 @@ def test_cache_buildtrees(cli, tmpdir, datafiles): # Cache key will be the same however the digest hash will have changed as expected, so reconstruct paths elementdigest = share2.has_artifact('test', element_name, cache_key) - with cas_extract_buildtree(elementdigest) as buildtreedir: + with cli.artifact.extract_buildtree(tmpdir, elementdigest) as buildtreedir: assert os.path.isdir(buildtreedir) assert os.listdir(buildtreedir) @@ -126,7 +116,7 @@ def test_cache_buildtrees(cli, tmpdir, datafiles): assert cli.get_element_state(project, element_name) != 'cached' result = cli.run(project=project, args=['--pull-buildtrees', 'artifact', 'pull', element_name]) assert element_name in result.get_pulled_elements() - with cas_extract_buildtree(elementdigest) as buildtreedir: + with cli.artifact.extract_buildtree(tmpdir, elementdigest) as buildtreedir: assert os.path.isdir(buildtreedir) assert os.listdir(buildtreedir) shutil.rmtree(os.path.join(str(tmpdir), 'cas')) @@ -144,6 +134,6 @@ def test_cache_buildtrees(cli, tmpdir, datafiles): assert cli.get_element_state(project, element_name) == 'cached' cache_key = cli.get_element_key(project, element_name) elementdigest = share3.has_artifact('test', element_name, cache_key) - with cas_extract_buildtree(elementdigest) as buildtreedir: + with cli.artifact.extract_buildtree(tmpdir, elementdigest) as buildtreedir: assert os.path.isdir(buildtreedir) assert os.listdir(buildtreedir) diff --git a/tests/integration/pullbuildtrees.py b/tests/integration/pullbuildtrees.py index e8f84d50d..1a89f776a 100644 --- a/tests/integration/pullbuildtrees.py +++ b/tests/integration/pullbuildtrees.py @@ -51,18 +51,6 @@ def test_pullbuildtrees(cli2, tmpdir, datafiles): 'cache': {'cache-buildtrees': 'always'}, }) - @contextmanager - def cas_extract_buildtree(digest): - extractdir = tempfile.mkdtemp(prefix="tmp", dir=str(tmpdir)) - try: - cas = CASCache(str(tmpdir)) - cas.checkout(extractdir, digest) - yield os.path.join(extractdir, 'buildtree') - except FileNotFoundError: - yield None - finally: - utils._force_rmtree(extractdir) - # Build autotools element, checked pushed, delete local result = cli2.run(project=project, args=['build', element_name]) assert result.exit_code == 0 @@ -88,11 +76,11 @@ def test_pullbuildtrees(cli2, tmpdir, datafiles): result = cli2.run(project=project, args=['artifact', 'pull', element_name]) assert element_name in result.get_pulled_elements() elementdigest = share1.has_artifact('test', element_name, cli2.get_element_key(project, element_name)) - with cas_extract_buildtree(elementdigest) as buildtreedir: + with cli2.artifact.extract_buildtree(tmpdir, elementdigest) as buildtreedir: assert not buildtreedir result = cli2.run(project=project, args=['--pull-buildtrees', 'artifact', 'pull', element_name]) assert element_name in result.get_pulled_elements() - with cas_extract_buildtree(elementdigest) as buildtreedir: + with cli2.artifact.extract_buildtree(tmpdir, elementdigest) as buildtreedir: assert os.path.isdir(buildtreedir) default_state(cli2, tmpdir, share1) @@ -151,7 +139,7 @@ def test_pullbuildtrees(cli2, tmpdir, datafiles): result = cli2.run(project=project, args=['--pull-buildtrees', 'artifact', 'push', element_name]) assert "Attempting to fetch missing artifact buildtrees" in result.stderr assert element_name not in result.get_pulled_elements() - with cas_extract_buildtree(elementdigest) as buildtreedir: + with cli2.artifact.extract_buildtree(tmpdir, elementdigest) as buildtreedir: assert not buildtreedir assert element_name not in result.get_pushed_elements() assert not share3.has_artifact('test', element_name, cli2.get_element_key(project, element_name)) @@ -164,7 +152,7 @@ def test_pullbuildtrees(cli2, tmpdir, datafiles): result = cli2.run(project=project, args=['--pull-buildtrees', 'artifact', 'push', element_name]) assert "Attempting to fetch missing artifact buildtrees" in result.stderr assert element_name in result.get_pulled_elements() - with cas_extract_buildtree(elementdigest) as buildtreedir: + with cli2.artifact.extract_buildtree(tmpdir, elementdigest) as buildtreedir: assert os.path.isdir(buildtreedir) assert element_name in result.get_pushed_elements() assert share3.has_artifact('test', element_name, cli2.get_element_key(project, element_name)) -- cgit v1.2.1