summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Schubert <contact@benschubert.me>2020-08-23 10:28:02 +0000
committerBenjamin Schubert <contact@benschubert.me>2020-10-15 20:15:52 +0000
commit984b44e6f856773755c9fc8f5e25ddf1e26c503f (patch)
treed6149515dfe4b38db40dba201a6e55e511ddef48
parentad99234e3a853ad8a64dca18193ac6eaa776222c (diff)
downloadbuildstream-984b44e6f856773755c9fc8f5e25ddf1e26c503f.tar.gz
build_checkout.py: Adapt to use the standard source tests
-rw-r--r--src/buildstream/testing/_sourcetests/__init__.py3
-rw-r--r--src/buildstream/testing/_sourcetests/build_checkout.py64
2 files changed, 31 insertions, 36 deletions
diff --git a/src/buildstream/testing/_sourcetests/__init__.py b/src/buildstream/testing/_sourcetests/__init__.py
index 3a8a50665..f033c5719 100644
--- a/src/buildstream/testing/_sourcetests/__init__.py
+++ b/src/buildstream/testing/_sourcetests/__init__.py
@@ -19,10 +19,11 @@
# been refactored
# pylint: disable=cyclic-import
+from .build_checkout import BuildCheckoutSourceTests
from .fetch import FetchSourceTests
__all__ = ["SourceTests"]
-class SourceTests(FetchSourceTests):
+class SourceTests(BuildCheckoutSourceTests, FetchSourceTests):
"""Definition of standardized tests that each source should pass."""
diff --git a/src/buildstream/testing/_sourcetests/build_checkout.py b/src/buildstream/testing/_sourcetests/build_checkout.py
index 782d99814..8209fceff 100644
--- a/src/buildstream/testing/_sourcetests/build_checkout.py
+++ b/src/buildstream/testing/_sourcetests/build_checkout.py
@@ -22,14 +22,8 @@
import os
import pytest
-from buildstream.testing import create_repo
-from buildstream.testing import cli # pylint: disable=unused-import
from buildstream import _yaml
-from .utils import kind # pylint: disable=unused-import
-
-# Project directory
-TOP_DIR = os.path.dirname(os.path.realpath(__file__))
-DATA_DIR = os.path.join(TOP_DIR, "project")
+from .base import BaseSourceTests
def strict_args(args, strict):
@@ -38,36 +32,36 @@ def strict_args(args, strict):
return args
-@pytest.mark.datafiles(DATA_DIR)
-@pytest.mark.parametrize("strict", ["strict", "non-strict"])
-def test_fetch_build_checkout(cli, tmpdir, datafiles, strict, kind):
- checkout = os.path.join(cli.directory, "checkout")
- project = str(datafiles)
- dev_files_path = os.path.join(project, "files", "dev-files")
- element_path = os.path.join(project, "elements")
- element_name = "build-test-{}.bst".format(kind)
+class BuildCheckoutSourceTests(BaseSourceTests):
+ @pytest.mark.parametrize("strict", ["strict", "non-strict"])
+ def test_fetch_build_checkout(self, cli, tmpdir, datafiles, strict):
+ checkout = os.path.join(cli.directory, "checkout")
+ project = str(datafiles)
+ dev_files_path = os.path.join(project, "files", "dev-files")
+ element_path = os.path.join(project, "elements")
+ element_name = "build-test-{}.bst".format(self.KIND)
- # Create our repo object of the given source type with
- # the dev files, and then collect the initial ref.
- #
- repo = create_repo(kind, str(tmpdir))
- ref = repo.create(dev_files_path)
+ # Create our repo object of the given source type with
+ # the dev files, and then collect the initial ref.
+ #
+ repo = self.REPO(str(tmpdir))
+ ref = repo.create(dev_files_path)
- # Write out our test target
- element = {"kind": "import", "sources": [repo.source_config(ref=ref)]}
- _yaml.roundtrip_dump(element, os.path.join(element_path, element_name))
+ # Write out our test target
+ element = {"kind": "import", "sources": [repo.source_config(ref=ref)]}
+ _yaml.roundtrip_dump(element, os.path.join(element_path, element_name))
- assert cli.get_element_state(project, element_name) == "fetch needed"
- result = cli.run(project=project, args=strict_args(["build", element_name], strict))
- result.assert_success()
- assert cli.get_element_state(project, element_name) == "cached"
+ assert cli.get_element_state(project, element_name) == "fetch needed"
+ result = cli.run(project=project, args=strict_args(["build", element_name], strict))
+ result.assert_success()
+ assert cli.get_element_state(project, element_name) == "cached"
- # Now check it out
- result = cli.run(
- project=project, args=strict_args(["artifact", "checkout", element_name, "--directory", checkout], strict)
- )
- result.assert_success()
+ # Now check it out
+ result = cli.run(
+ project=project, args=strict_args(["artifact", "checkout", element_name, "--directory", checkout], strict)
+ )
+ result.assert_success()
- # Check that the pony.h include from files/dev-files exists
- filename = os.path.join(checkout, "usr", "include", "pony.h")
- assert os.path.exists(filename)
+ # Check that the pony.h include from files/dev-files exists
+ filename = os.path.join(checkout, "usr", "include", "pony.h")
+ assert os.path.exists(filename)