You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@buildstream.apache.org by be...@apache.org on 2022/01/18 20:43:32 UTC

[buildstream] 01/03: workspace.py: Remove assumption on specific kinds to testing multiple

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

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

commit 667fe33482bb0c646a80aacc13d1315c9acad355
Author: Benjamin Schubert <co...@benschubert.me>
AuthorDate: Sat Jan 15 15:56:21 2022 +0000

    workspace.py: Remove assumption on specific kinds to testing multiple
    
    This makes the test more explicit in testing that it can actually open
    multiple different projects at the same time, and removes the need of
    actually using multiple kinds
---
 tests/frontend/workspace.py | 25 +++++++++++++++----------
 1 file changed, 15 insertions(+), 10 deletions(-)

diff --git a/tests/frontend/workspace.py b/tests/frontend/workspace.py
index 66e195c..1a7c879 100644
--- a/tests/frontend/workspace.py
+++ b/tests/frontend/workspace.py
@@ -30,6 +30,7 @@ import os
 import stat
 import shutil
 import subprocess
+import tempfile
 
 import pytest
 
@@ -74,8 +75,19 @@ class WorkspaceCreator:
 
         # Create our repo object of the given source type with
         # the bin files, and then collect the initial ref.
-        repo = create_repo(kind, str(self.tmpdir))
-        ref = repo.create(self.bin_files_path)
+        # And ensure we store it in a suffix-specific directory, to avoid clashes
+        # if using multiple times the same kind element here.
+        repo = create_repo(kind, str(self.tmpdir), "repo-for-{}".format(element_name))
+
+        with tempfile.TemporaryDirectory() as tempdir:
+            dst_repo = os.path.join(tempdir, "repo")
+            shutil.copytree(self.bin_files_path, dst_repo)
+            # Touch a file with the element name in, to allow validating that this
+            # is the correct repo
+            # pylint: disable=consider-using-with
+            open(os.path.join(dst_repo, element_name), "a", encoding="utf-8").close()
+
+            ref = repo.create(os.path.join(tempdir, "repo"))
 
         # Write out our test target
         element = {"kind": "import", "sources": [repo.source_config(ref=ref)]}
@@ -175,20 +187,13 @@ def test_open_bzr_customize(cli, tmpdir, datafiles):
 
 @pytest.mark.datafiles(DATA_DIR)
 def test_open_multi(cli, tmpdir, datafiles):
-
     workspace_object = WorkspaceCreator(cli, tmpdir, datafiles)
     workspaces = workspace_object.open_workspaces(repo_kinds)
 
     for (elname, workspace), kind in zip(workspaces, repo_kinds):
         assert kind in elname
         workspace_lsdir = os.listdir(workspace)
-        if kind == "git":
-            assert ".git" in workspace_lsdir
-        elif kind == "bzr":
-            assert ".bzr" in workspace_lsdir
-        else:
-            assert ".git" not in workspace_lsdir
-            assert ".bzr" not in workspace_lsdir
+        assert elname in workspace_lsdir
 
 
 @pytest.mark.skipif(os.geteuid() == 0, reason="root may have CAP_DAC_OVERRIDE and ignore permissions")