You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@buildstream.apache.org by tv...@apache.org on 2021/02/04 07:25:49 UTC

[buildstream] 09/15: build_checkout.py: Adapt to use the standard source tests

This is an automated email from the ASF dual-hosted git repository.

tvb pushed a commit to branch bschubert/standardize-source-tests
in repository https://gitbox.apache.org/repos/asf/buildstream.git

commit 984b44e6f856773755c9fc8f5e25ddf1e26c503f
Author: Benjamin Schubert <co...@benschubert.me>
AuthorDate: Sun Aug 23 10:28:02 2020 +0000

    build_checkout.py: Adapt to use the standard source tests
---
 src/buildstream/testing/_sourcetests/__init__.py   |  3 +-
 .../testing/_sourcetests/build_checkout.py         | 64 ++++++++++------------
 2 files changed, 31 insertions(+), 36 deletions(-)

diff --git a/src/buildstream/testing/_sourcetests/__init__.py b/src/buildstream/testing/_sourcetests/__init__.py
index 3a8a506..f033c57 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 782d998..8209fce 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)