You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@buildstream.apache.org by no...@apache.org on 2020/12/29 12:35:46 UTC
[buildstream] 14/15: workspace.py: Adapt to use the standard source
tests
This is an automated email from the ASF dual-hosted git repository.
not-in-ldap pushed a commit to branch bschubert/standardize-source-tests
in repository https://gitbox.apache.org/repos/asf/buildstream.git
commit 567a9be1a29cd528a8eabc6471566a09a3bbd853
Author: Benjamin Schubert <co...@benschubert.me>
AuthorDate: Fri Oct 9 12:07:17 2020 +0000
workspace.py: Adapt to use the standard source tests
---
src/buildstream/testing/_sourcetests/__init__.py | 2 +
src/buildstream/testing/_sourcetests/workspace.py | 54 +++++++++++------------
2 files changed, 29 insertions(+), 27 deletions(-)
diff --git a/src/buildstream/testing/_sourcetests/__init__.py b/src/buildstream/testing/_sourcetests/__init__.py
index e0b2e41..9c42e85 100644
--- a/src/buildstream/testing/_sourcetests/__init__.py
+++ b/src/buildstream/testing/_sourcetests/__init__.py
@@ -25,6 +25,7 @@ from .mirror import MirrorSourceTests
from .source_determinism import SourceDeterminismTests
from .track_cross_junction import TrackCrossJunctionTests
from .track import TrackSourceTests
+from .workspace import WorkspaceSourceTests
__all__ = ["SourceTests"]
@@ -36,5 +37,6 @@ class SourceTests(
SourceDeterminismTests,
TrackCrossJunctionTests,
TrackSourceTests,
+ WorkspaceSourceTests,
):
"""Definition of standardized tests that each source should pass."""
diff --git a/src/buildstream/testing/_sourcetests/workspace.py b/src/buildstream/testing/_sourcetests/workspace.py
index 9edd9d9..aac4c51 100644
--- a/src/buildstream/testing/_sourcetests/workspace.py
+++ b/src/buildstream/testing/_sourcetests/workspace.py
@@ -23,46 +23,46 @@ import os
import pytest
from buildstream import _yaml
-from .. import create_repo
from .. import cli # pylint: disable=unused-import
-from .utils import kind # pylint: disable=unused-import
+from .base import BaseSourceTests
# Project directory
TOP_DIR = os.path.dirname(os.path.realpath(__file__))
DATA_DIR = os.path.join(TOP_DIR, "project")
-@pytest.mark.datafiles(DATA_DIR)
-def test_open(cli, tmpdir_factory, datafiles, kind):
- project_path = str(datafiles)
- bin_files_path = os.path.join(project_path, "files", "bin-files")
+class WorkspaceSourceTests(BaseSourceTests):
+ @pytest.mark.datafiles(DATA_DIR)
+ def test_open(self, cli, tmpdir_factory, datafiles):
+ project_path = str(datafiles)
+ bin_files_path = os.path.join(project_path, "files", "bin-files")
- element_name = "workspace-test-{}.bst".format(kind)
- element_path = os.path.join(project_path, "elements")
+ element_name = "workspace-test-{}.bst".format(self.KIND)
+ element_path = os.path.join(project_path, "elements")
- # Create our repo object of the given source type with
- # the bin files, and then collect the initial ref.
- repo = create_repo(kind, str(tmpdir_factory.mktemp("repo-{}".format(kind))))
- ref = repo.create(bin_files_path)
+ # Create our repo object of the given source type with
+ # the bin files, and then collect the initial ref.
+ repo = self.REPO(str(tmpdir_factory.mktemp("repo-{}".format(self.KIND))))
+ ref = repo.create(bin_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 that there is no reference, a fetch is needed
- assert cli.get_element_state(project_path, element_name) == "fetch needed"
+ # Assert that there is no reference, a fetch is needed
+ assert cli.get_element_state(project_path, element_name) == "fetch needed"
- workspace_dir = os.path.join(tmpdir_factory.mktemp("opened_workspace"))
+ workspace_dir = os.path.join(tmpdir_factory.mktemp("opened_workspace"))
- # Now open the workspace, this should have the effect of automatically
- # fetching the source from the repo.
- result = cli.run(project=project_path, args=["workspace", "open", "--directory", workspace_dir, element_name])
+ # Now open the workspace, this should have the effect of automatically
+ # fetching the source from the repo.
+ result = cli.run(project=project_path, args=["workspace", "open", "--directory", workspace_dir, element_name])
- result.assert_success()
+ result.assert_success()
- # Assert that we are now buildable because the source is now cached.
- assert cli.get_element_state(project_path, element_name) == "buildable"
+ # Assert that we are now buildable because the source is now cached.
+ assert cli.get_element_state(project_path, element_name) == "buildable"
- # Check that the executable hello file is found in each workspace
- filename = os.path.join(workspace_dir, "usr", "bin", "hello")
- assert os.path.exists(filename)
+ # Check that the executable hello file is found in each workspace
+ filename = os.path.join(workspace_dir, "usr", "bin", "hello")
+ assert os.path.exists(filename)