summaryrefslogtreecommitdiff
path: root/tests/sourcecache/workspace.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/sourcecache/workspace.py')
-rw-r--r--tests/sourcecache/workspace.py59
1 files changed, 59 insertions, 0 deletions
diff --git a/tests/sourcecache/workspace.py b/tests/sourcecache/workspace.py
new file mode 100644
index 000000000..440ca81b8
--- /dev/null
+++ b/tests/sourcecache/workspace.py
@@ -0,0 +1,59 @@
+#
+# Copyright (C) 2019 Bloomberg Finance LP
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library. If not, see <http://www.gnu.org/licenses/>.
+#
+# Authors:
+# Raoul Hidalgo Charman <raoul.hidalgocharman@codethink.co.uk>
+#
+import os
+import pytest
+import shutil
+
+from buildstream.plugintestutils.runcli import cli
+
+from tests.testutils.element_generators import create_element_size
+
+
+DATA_DIR = os.path.dirname(os.path.realpath(__file__))
+
+
+# Test that when we have sources only in the local CAS buildstream fetches them
+# for opening a workspace
+@pytest.mark.datafiles(DATA_DIR)
+def test_workspace_source_fetch(tmpdir, datafiles, cli):
+ project_dir = os.path.join(str(tmpdir), 'project')
+ element_path = 'elements'
+ source_dir = os.path.join(str(tmpdir), 'cache', 'sources')
+ workspace = os.path.join(cli.directory, 'workspace')
+
+ cli.configure({
+ 'cachedir': os.path.join(str(tmpdir), 'cache')
+ })
+
+ create_element_size('target.bst', project_dir, element_path, [], 10000)
+ res = cli.run(project=project_dir, args=['build', 'target.bst'])
+ res.assert_success()
+ assert 'Fetching from' in res.stderr
+
+ # remove the original sources
+ shutil.rmtree(source_dir)
+
+ # Open a workspace and check that fetches the original sources
+ res = cli.run(project=project_dir,
+ args=['workspace', 'open', 'target.bst', '--directory', workspace])
+ res.assert_success()
+ assert 'Fetching from' in res.stderr
+
+ assert os.listdir(workspace) != []