summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRaoul Hidalgo Charman <raoul.hidalgocharman@codethink.co.uk>2019-01-23 15:59:04 +0000
committerJürg Billeter <j@bitron.ch>2019-02-19 17:05:17 +0000
commitc7f76268cc6f35209587749df85f3af9cfbaabf1 (patch)
tree5743ab0d84c47ba28fb5659acd266fadca7d82fd
parent52c0c185d964bf696e320be97663c412e020b427 (diff)
downloadbuildstream-c7f76268cc6f35209587749df85f3af9cfbaabf1.tar.gz
cachedir: add new dir option that's default root to other dirs
Makes artifactdir and builddir obsolete. Fixes #870
-rw-r--r--buildstream/_context.py33
-rw-r--r--buildstream/data/userconfig.yaml7
-rw-r--r--buildstream/plugintestutils/runcli.py24
-rwxr-xr-xconftest.py12
-rwxr-xr-xdoc/bst2html.py5
-rw-r--r--doc/sessions/running-commands.run2
-rw-r--r--tests/artifactcache/cache_size.py3
-rw-r--r--tests/artifactcache/expiry.py2
-rw-r--r--tests/artifactcache/junctions.py4
-rw-r--r--tests/artifactcache/pull.py30
-rw-r--r--tests/artifactcache/push.py32
-rw-r--r--tests/frontend/pull.py28
-rw-r--r--tests/integration/pullbuildtrees.py5
-rw-r--r--tests/integration/shellbuildtrees.py8
-rw-r--r--tests/integration/source-determinism.py12
15 files changed, 116 insertions, 91 deletions
diff --git a/buildstream/_context.py b/buildstream/_context.py
index 2fbf415fb..cb537cf60 100644
--- a/buildstream/_context.py
+++ b/buildstream/_context.py
@@ -58,12 +58,21 @@ class Context():
# Filename indicating which configuration file was used, or None for the defaults
self.config_origin = None
+ # The directory under which other directories are based
+ self.cachedir = None
+
# The directory where various sources are stored
self.sourcedir = None
# The directory where build sandboxes will be created
self.builddir = None
+ # The directory for CAS
+ self.casdir = None
+
+ # The directory for temporary files
+ self.tmpdir = None
+
# Default root location for workspaces
self.workspacedir = None
@@ -179,13 +188,24 @@ class Context():
user_config = _yaml.load(config)
_yaml.composite(defaults, user_config)
+ # Give obsoletion warnings
+ if defaults.get('builddir'):
+ raise LoadError(LoadErrorReason.INVALID_DATA,
+ "builddir is obsolete, use cachedir")
+
+ if defaults.get('artifactdir'):
+ print("artifactdir is deprecated, use cachedir")
+ else:
+ defaults['artifactdir'] = os.path.join(defaults['cachedir'], 'artifacts')
+
_yaml.node_validate(defaults, [
- 'sourcedir', 'builddir', 'artifactdir', 'logdir',
+ 'cachedir', 'sourcedir', 'builddir', 'artifactdir', 'logdir',
'scheduler', 'artifacts', 'logging', 'projects',
- 'cache', 'prompt', 'workspacedir', 'remote-execution'
+ 'cache', 'prompt', 'workspacedir', 'remote-execution',
])
- for directory in ['sourcedir', 'builddir', 'artifactdir', 'logdir', 'workspacedir']:
+ for directory in ['cachedir', 'sourcedir', 'artifactdir', 'logdir',
+ 'workspacedir']:
# Allow the ~ tilde expansion and any environment variables in
# path specification in the config files.
#
@@ -195,6 +215,11 @@ class Context():
path = os.path.normpath(path)
setattr(self, directory, path)
+ # add directories not set by users
+ self.tmpdir = os.path.join(self.cachedir, 'tmp')
+ self.casdir = os.path.join(self.cachedir, 'cas')
+ self.builddir = os.path.join(self.cachedir, 'build')
+
# Load quota configuration
# We need to find the first existing directory in the path of
# our artifactdir - the artifactdir may not have been created
@@ -640,7 +665,7 @@ class Context():
def get_cascache(self):
if self._cascache is None:
- self._cascache = CASCache(self.artifactdir)
+ self._cascache = CASCache(self.cachedir)
return self._cascache
diff --git a/buildstream/data/userconfig.yaml b/buildstream/data/userconfig.yaml
index f17dac88c..d27e56ef2 100644
--- a/buildstream/data/userconfig.yaml
+++ b/buildstream/data/userconfig.yaml
@@ -13,11 +13,8 @@
# Location to store sources
sourcedir: ${XDG_CACHE_HOME}/buildstream/sources
-# Location to perform builds
-builddir: ${XDG_CACHE_HOME}/buildstream/build
-
-# Location to store local binary artifacts
-artifactdir: ${XDG_CACHE_HOME}/buildstream/artifacts
+# Root location for other directories in the cache
+cachedir: ${XDG_CACHE_HOME}/buildstream
# Location to store build logs
logdir: ${XDG_CACHE_HOME}/buildstream/logs
diff --git a/buildstream/plugintestutils/runcli.py b/buildstream/plugintestutils/runcli.py
index fb7c23c6c..83fdff721 100644
--- a/buildstream/plugintestutils/runcli.py
+++ b/buildstream/plugintestutils/runcli.py
@@ -277,10 +277,10 @@ class Cli():
*, cache_dir=None):
# Read configuration to figure out where artifacts are stored
if not cache_dir:
- default = os.path.join(project, 'cache', 'artifacts')
+ default = os.path.join(project, 'cache')
if self.config is not None:
- cache_dir = self.config.get('artifactdir', default)
+ cache_dir = self.config.get('cachedir', default)
else:
cache_dir = default
@@ -582,11 +582,21 @@ def cli_integration(tmpdir, integration_cache):
# We want to cache sources for integration tests more permanently,
# to avoid downloading the huge base-sdk repeatedly
fixture.configure({
+ 'cachedir': integration_cache.cachedir,
'sourcedir': integration_cache.sources,
- 'artifactdir': integration_cache.artifacts
})
- return fixture
+ yield fixture
+
+ # remove following folders if necessary
+ try:
+ shutil.rmtree(os.path.join(integration_cache.cachedir, 'build'))
+ except FileNotFoundError:
+ pass
+ try:
+ shutil.rmtree(os.path.join(integration_cache.cachedir, 'tmp'))
+ except FileNotFoundError:
+ pass
@contextmanager
@@ -626,10 +636,8 @@ def configured(directory, config=None):
if not config.get('sourcedir', False):
config['sourcedir'] = os.path.join(directory, 'sources')
- if not config.get('builddir', False):
- config['builddir'] = os.path.join(directory, 'build')
- if not config.get('artifactdir', False):
- config['artifactdir'] = os.path.join(directory, 'artifacts')
+ if not config.get('cachedir', False):
+ config['cachedir'] = directory
if not config.get('logdir', False):
config['logdir'] = os.path.join(directory, 'logs')
diff --git a/conftest.py b/conftest.py
index 6fc24c2d6..7f8da3633 100755
--- a/conftest.py
+++ b/conftest.py
@@ -53,16 +53,16 @@ def pytest_runtest_setup(item):
class IntegrationCache():
def __init__(self, cache):
- cache = os.path.abspath(cache)
+ self.root = os.path.abspath(cache)
os.makedirs(cache, exist_ok=True)
# Use the same sources every time
- self.sources = os.path.join(cache, 'sources')
+ self.sources = os.path.join(self.root, 'sources')
# Create a temp directory for the duration of the test for
# the artifacts directory
try:
- self.artifacts = tempfile.mkdtemp(dir=cache, prefix='artifacts-')
+ self.cachedir = tempfile.mkdtemp(dir=self.root, prefix='cache-')
except OSError as e:
raise AssertionError("Unable to create test directory !") from e
@@ -84,7 +84,11 @@ def integration_cache(request):
# Clean up the artifacts after each test run - we only want to
# cache sources between runs
try:
- shutil.rmtree(cache.artifacts)
+ shutil.rmtree(cache.cachedir)
+ except FileNotFoundError:
+ pass
+ try:
+ shutil.rmtree(os.path.join(cache.root, 'cas'))
except FileNotFoundError:
pass
diff --git a/doc/bst2html.py b/doc/bst2html.py
index af35efe24..2f4012695 100755
--- a/doc/bst2html.py
+++ b/doc/bst2html.py
@@ -194,10 +194,9 @@ def workdir(source_cache=None):
bst_config_file = os.path.join(tempdir, 'buildstream.conf')
config = {
+ 'cachedir': tempdir,
'sourcedir': source_cache,
- 'artifactdir': os.path.join(tempdir, 'artifacts'),
'logdir': os.path.join(tempdir, 'logs'),
- 'builddir': os.path.join(tempdir, 'build'),
}
_yaml.dump(config, bst_config_file)
@@ -411,12 +410,10 @@ def run_session(description, tempdir, source_cache, palette, config_file, force)
# Encode and save the output if that was asked for
output = _yaml.node_get(command, str, 'output', default_value=None)
if output is not None:
-
# Convert / Generate a nice <div>
converted = generate_html(command_out, directory, config_file,
source_cache, tempdir, palette,
command_str, command_fake_output is not None)
-
# Save it
filename = os.path.join(desc_dir, output)
filename = os.path.realpath(filename)
diff --git a/doc/sessions/running-commands.run b/doc/sessions/running-commands.run
index ce8eccd2f..41d165799 100644
--- a/doc/sessions/running-commands.run
+++ b/doc/sessions/running-commands.run
@@ -2,7 +2,7 @@
commands:
# Make it fetch first
- directory: ../examples/running-commands
- command: fetch hello.bst
+ command: source fetch hello.bst
# Capture a show output
- directory: ../examples/running-commands
diff --git a/tests/artifactcache/cache_size.py b/tests/artifactcache/cache_size.py
index 88f8eaddf..980289157 100644
--- a/tests/artifactcache/cache_size.py
+++ b/tests/artifactcache/cache_size.py
@@ -51,7 +51,8 @@ def test_cache_size_write(cli, tmpdir):
# Artifact cache must be in a known place
artifactdir = os.path.join(project_dir, "artifacts")
- cli.configure({"artifactdir": artifactdir})
+ casdir = os.path.join(project_dir, "cas")
+ cli.configure({"cachedir": project_dir})
# Build, to populate the cache
res = cli.run(project=project_dir, args=["build", "test.bst"])
diff --git a/tests/artifactcache/expiry.py b/tests/artifactcache/expiry.py
index d92e68f0b..ac122eb19 100644
--- a/tests/artifactcache/expiry.py
+++ b/tests/artifactcache/expiry.py
@@ -436,7 +436,7 @@ def test_extract_expiry(cli, datafiles, tmpdir):
# Now we should have a directory for the cached target2.bst, which
# replaced target.bst in the cache, we should not have a directory
# for the target.bst
- refsdir = os.path.join(project, 'cache', 'artifacts', 'cas', 'refs', 'heads')
+ refsdir = os.path.join(project, 'cache', 'cas', 'refs', 'heads')
refsdirtest = os.path.join(refsdir, 'test')
refsdirtarget = os.path.join(refsdirtest, 'target')
refsdirtarget2 = os.path.join(refsdirtest, 'target2')
diff --git a/tests/artifactcache/junctions.py b/tests/artifactcache/junctions.py
index d5de16282..693a3eb1f 100644
--- a/tests/artifactcache/junctions.py
+++ b/tests/artifactcache/junctions.py
@@ -70,8 +70,8 @@ def test_push_pull(cli, tmpdir, datafiles):
# Now we've pushed, delete the user's local artifact cache
# directory and try to redownload it from the share
#
- artifacts = os.path.join(cli.directory, 'artifacts')
- shutil.rmtree(artifacts)
+ cas = os.path.join(cli.directory, 'cas')
+ shutil.rmtree(cas)
# Assert that nothing is cached locally anymore
state = cli.get_element_state(project, 'target.bst')
diff --git a/tests/artifactcache/pull.py b/tests/artifactcache/pull.py
index 4ab35f066..3113061ca 100644
--- a/tests/artifactcache/pull.py
+++ b/tests/artifactcache/pull.py
@@ -57,7 +57,7 @@ def test_pull(cli, tmpdir, datafiles):
# Set up an artifact cache.
with create_artifact_share(os.path.join(str(tmpdir), 'artifactshare')) as share:
# Configure artifact share
- artifact_dir = os.path.join(str(tmpdir), 'cache', 'artifacts')
+ cache_dir = os.path.join(str(tmpdir), 'cache')
user_config_file = str(tmpdir.join('buildstream.conf'))
user_config = {
'scheduler': {
@@ -66,7 +66,8 @@ def test_pull(cli, tmpdir, datafiles):
'artifacts': {
'url': share.repo,
'push': True,
- }
+ },
+ 'cachedir': cache_dir
}
# Write down the user configuration file
@@ -93,7 +94,6 @@ def test_pull(cli, tmpdir, datafiles):
# Fake minimal context
context = Context()
context.load(config=user_config_file)
- context.artifactdir = os.path.join(str(tmpdir), 'cache', 'artifacts')
context.set_message_handler(message_handler)
# Load the project and CAS cache
@@ -111,7 +111,7 @@ def test_pull(cli, tmpdir, datafiles):
# See https://github.com/grpc/grpc/blob/master/doc/fork_support.md for details
process = multiprocessing.Process(target=_queue_wrapper,
args=(_test_pull, queue, user_config_file, project_dir,
- artifact_dir, 'target.bst', element_key))
+ cache_dir, 'target.bst', element_key))
try:
# Keep SIGINT blocked in the child process
@@ -128,12 +128,14 @@ def test_pull(cli, tmpdir, datafiles):
assert cas.contains(element, element_key)
-def _test_pull(user_config_file, project_dir, artifact_dir,
+def _test_pull(user_config_file, project_dir, cache_dir,
element_name, element_key, queue):
# Fake minimal context
context = Context()
context.load(config=user_config_file)
- context.artifactdir = artifact_dir
+ context.cachedir = cache_dir
+ context.casdir = os.path.join(cache_dir, 'cas')
+ context.tmpdir = os.path.join(cache_dir, 'tmp')
context.set_message_handler(message_handler)
# Load the project manually
@@ -166,7 +168,7 @@ def test_pull_tree(cli, tmpdir, datafiles):
# Set up an artifact cache.
with create_artifact_share(os.path.join(str(tmpdir), 'artifactshare')) as share:
# Configure artifact share
- artifact_dir = os.path.join(str(tmpdir), 'cache', 'artifacts')
+ rootcache_dir = os.path.join(str(tmpdir), 'cache')
user_config_file = str(tmpdir.join('buildstream.conf'))
user_config = {
'scheduler': {
@@ -175,7 +177,8 @@ def test_pull_tree(cli, tmpdir, datafiles):
'artifacts': {
'url': share.repo,
'push': True,
- }
+ },
+ 'cachedir': rootcache_dir
}
# Write down the user configuration file
@@ -196,7 +199,6 @@ def test_pull_tree(cli, tmpdir, datafiles):
# Fake minimal context
context = Context()
context.load(config=user_config_file)
- context.artifactdir = os.path.join(str(tmpdir), 'cache', 'artifacts')
context.set_message_handler(message_handler)
# Load the project and CAS cache
@@ -219,7 +221,7 @@ def test_pull_tree(cli, tmpdir, datafiles):
# See https://github.com/grpc/grpc/blob/master/doc/fork_support.md for details
process = multiprocessing.Process(target=_queue_wrapper,
args=(_test_push_tree, queue, user_config_file, project_dir,
- artifact_dir, artifact_digest))
+ artifact_digest))
try:
# Keep SIGINT blocked in the child process
@@ -247,7 +249,7 @@ def test_pull_tree(cli, tmpdir, datafiles):
# Use subprocess to avoid creation of gRPC threads in main BuildStream process
process = multiprocessing.Process(target=_queue_wrapper,
args=(_test_pull_tree, queue, user_config_file, project_dir,
- artifact_dir, tree_digest))
+ tree_digest))
try:
# Keep SIGINT blocked in the child process
@@ -269,11 +271,10 @@ def test_pull_tree(cli, tmpdir, datafiles):
assert os.path.exists(cas.objpath(directory_digest))
-def _test_push_tree(user_config_file, project_dir, artifact_dir, artifact_digest, queue):
+def _test_push_tree(user_config_file, project_dir, artifact_digest, queue):
# Fake minimal context
context = Context()
context.load(config=user_config_file)
- context.artifactdir = artifact_dir
context.set_message_handler(message_handler)
# Load the project manually
@@ -305,11 +306,10 @@ def _test_push_tree(user_config_file, project_dir, artifact_dir, artifact_digest
queue.put("No remote configured")
-def _test_pull_tree(user_config_file, project_dir, artifact_dir, artifact_digest, queue):
+def _test_pull_tree(user_config_file, project_dir, artifact_digest, queue):
# Fake minimal context
context = Context()
context.load(config=user_config_file)
- context.artifactdir = artifact_dir
context.set_message_handler(message_handler)
# Load the project manually
diff --git a/tests/artifactcache/push.py b/tests/artifactcache/push.py
index 3b2e1be09..0a39f5344 100644
--- a/tests/artifactcache/push.py
+++ b/tests/artifactcache/push.py
@@ -51,7 +51,7 @@ def test_push(cli, tmpdir, datafiles):
# Set up an artifact cache.
with create_artifact_share(os.path.join(str(tmpdir), 'artifactshare')) as share:
# Configure artifact share
- artifact_dir = os.path.join(str(tmpdir), 'cache', 'artifacts')
+ rootcache_dir = os.path.join(str(tmpdir), 'cache')
user_config_file = str(tmpdir.join('buildstream.conf'))
user_config = {
'scheduler': {
@@ -60,7 +60,8 @@ def test_push(cli, tmpdir, datafiles):
'artifacts': {
'url': share.repo,
'push': True,
- }
+ },
+ 'cachedir': rootcache_dir
}
# Write down the user configuration file
@@ -69,7 +70,6 @@ def test_push(cli, tmpdir, datafiles):
# Fake minimal context
context = Context()
context.load(config=user_config_file)
- context.artifactdir = artifact_dir
context.set_message_handler(message_handler)
# Load the project manually
@@ -89,7 +89,7 @@ def test_push(cli, tmpdir, datafiles):
# See https://github.com/grpc/grpc/blob/master/doc/fork_support.md for details
process = multiprocessing.Process(target=_queue_wrapper,
args=(_test_push, queue, user_config_file, project_dir,
- artifact_dir, 'target.bst', element_key))
+ 'target.bst', element_key))
try:
# Keep SIGINT blocked in the child process
@@ -106,12 +106,10 @@ def test_push(cli, tmpdir, datafiles):
assert share.has_artifact('test', 'target.bst', element_key)
-def _test_push(user_config_file, project_dir, artifact_dir,
- element_name, element_key, queue):
+def _test_push(user_config_file, project_dir, element_name, element_key, queue):
# Fake minimal context
context = Context()
context.load(config=user_config_file)
- context.artifactdir = artifact_dir
context.set_message_handler(message_handler)
# Load the project manually
@@ -152,7 +150,7 @@ def test_push_directory(cli, tmpdir, datafiles):
# Set up an artifact cache.
with create_artifact_share(os.path.join(str(tmpdir), 'artifactshare')) as share:
# Configure artifact share
- artifact_dir = os.path.join(str(tmpdir), 'cache', 'artifacts')
+ rootcache_dir = os.path.join(str(tmpdir), 'cache')
user_config_file = str(tmpdir.join('buildstream.conf'))
user_config = {
'scheduler': {
@@ -161,7 +159,8 @@ def test_push_directory(cli, tmpdir, datafiles):
'artifacts': {
'url': share.repo,
'push': True,
- }
+ },
+ 'cachedir': rootcache_dir
}
# Write down the user configuration file
@@ -170,7 +169,6 @@ def test_push_directory(cli, tmpdir, datafiles):
# Fake minimal context
context = Context()
context.load(config=user_config_file)
- context.artifactdir = os.path.join(str(tmpdir), 'cache', 'artifacts')
context.set_message_handler(message_handler)
# Load the project and CAS cache
@@ -198,7 +196,7 @@ def test_push_directory(cli, tmpdir, datafiles):
# See https://github.com/grpc/grpc/blob/master/doc/fork_support.md for details
process = multiprocessing.Process(target=_queue_wrapper,
args=(_test_push_directory, queue, user_config_file,
- project_dir, artifact_dir, artifact_digest))
+ project_dir, artifact_digest))
try:
# Keep SIGINT blocked in the child process
@@ -216,11 +214,10 @@ def test_push_directory(cli, tmpdir, datafiles):
assert share.has_object(artifact_digest)
-def _test_push_directory(user_config_file, project_dir, artifact_dir, artifact_digest, queue):
+def _test_push_directory(user_config_file, project_dir, artifact_digest, queue):
# Fake minimal context
context = Context()
context.load(config=user_config_file)
- context.artifactdir = artifact_dir
context.set_message_handler(message_handler)
# Load the project manually
@@ -254,6 +251,7 @@ def test_push_message(cli, tmpdir, datafiles):
with create_artifact_share(os.path.join(str(tmpdir), 'artifactshare')) as share:
# Configure artifact share
artifact_dir = os.path.join(str(tmpdir), 'cache', 'artifacts')
+ rootcache_dir = os.path.join(str(tmpdir), 'cache')
user_config_file = str(tmpdir.join('buildstream.conf'))
user_config = {
'scheduler': {
@@ -262,7 +260,8 @@ def test_push_message(cli, tmpdir, datafiles):
'artifacts': {
'url': share.repo,
'push': True,
- }
+ },
+ 'cachedir': rootcache_dir
}
# Write down the user configuration file
@@ -273,7 +272,7 @@ def test_push_message(cli, tmpdir, datafiles):
# See https://github.com/grpc/grpc/blob/master/doc/fork_support.md for details
process = multiprocessing.Process(target=_queue_wrapper,
args=(_test_push_message, queue, user_config_file,
- project_dir, artifact_dir))
+ project_dir))
try:
# Keep SIGINT blocked in the child process
@@ -292,11 +291,10 @@ def test_push_message(cli, tmpdir, datafiles):
assert share.has_object(message_digest)
-def _test_push_message(user_config_file, project_dir, artifact_dir, queue):
+def _test_push_message(user_config_file, project_dir, queue):
# Fake minimal context
context = Context()
context.load(config=user_config_file)
- context.artifactdir = artifact_dir
context.set_message_handler(message_handler)
# Load the project manually
diff --git a/tests/frontend/pull.py b/tests/frontend/pull.py
index 2555355d3..072b76e69 100644
--- a/tests/frontend/pull.py
+++ b/tests/frontend/pull.py
@@ -64,8 +64,8 @@ def test_push_pull_all(cli, tmpdir, datafiles):
# Now we've pushed, delete the user's local artifact cache
# directory and try to redownload it from the share
#
- artifacts = os.path.join(cli.directory, 'artifacts')
- shutil.rmtree(artifacts)
+ cas = os.path.join(cli.directory, 'cas')
+ shutil.rmtree(cas)
# Assert that nothing is cached locally anymore
states = cli.get_element_states(project, all_elements)
@@ -114,7 +114,7 @@ def test_push_pull_default_targets(cli, tmpdir, datafiles):
# Now we've pushed, delete the user's local artifact cache
# directory and try to redownload it from the share
#
- artifacts = os.path.join(cli.directory, 'artifacts')
+ artifacts = os.path.join(cli.directory, 'cas')
shutil.rmtree(artifacts)
# Assert that nothing is cached locally anymore
@@ -156,8 +156,8 @@ def test_pull_secondary_cache(cli, tmpdir, datafiles):
assert_shared(cli, share2, project, 'target.bst')
# Delete the user's local artifact cache.
- artifacts = os.path.join(cli.directory, 'artifacts')
- shutil.rmtree(artifacts)
+ cas = os.path.join(cli.directory, 'cas')
+ shutil.rmtree(cas)
# Assert that the element is not cached anymore.
assert cli.get_element_state(project, 'target.bst') != 'cached'
@@ -210,8 +210,8 @@ def test_push_pull_specific_remote(cli, tmpdir, datafiles):
# Now we've pushed, delete the user's local artifact cache
# directory and try to redownload it from the good_share.
#
- artifacts = os.path.join(cli.directory, 'artifacts')
- shutil.rmtree(artifacts)
+ cas = os.path.join(cli.directory, 'cas')
+ shutil.rmtree(cas)
result = cli.run(project=project, args=['artifact', 'pull', 'target.bst', '--remote',
good_share.repo])
@@ -251,8 +251,8 @@ def test_push_pull_non_strict(cli, tmpdir, datafiles):
# Now we've pushed, delete the user's local artifact cache
# directory and try to redownload it from the share
#
- artifacts = os.path.join(cli.directory, 'artifacts')
- shutil.rmtree(artifacts)
+ cas = os.path.join(cli.directory, 'cas')
+ shutil.rmtree(cas)
# Assert that nothing is cached locally anymore
for element_name in all_elements:
@@ -301,8 +301,8 @@ def test_push_pull_track_non_strict(cli, tmpdir, datafiles):
# Now we've pushed, delete the user's local artifact cache
# directory and try to redownload it from the share
#
- artifacts = os.path.join(cli.directory, 'artifacts')
- shutil.rmtree(artifacts)
+ cas = os.path.join(cli.directory, 'cas')
+ shutil.rmtree(cas)
# Assert that nothing is cached locally anymore
for element_name in all_elements:
@@ -337,7 +337,7 @@ def test_push_pull_cross_junction(cli, tmpdir, datafiles):
result.assert_success()
assert cli.get_element_state(project, 'junction.bst:import-etc.bst') == 'cached'
- cache_dir = os.path.join(project, 'cache', 'artifacts')
+ cache_dir = os.path.join(project, 'cache', 'cas')
shutil.rmtree(cache_dir)
assert cli.get_element_state(project, 'junction.bst:import-etc.bst') == 'buildable'
@@ -372,8 +372,8 @@ def test_pull_missing_blob(cli, tmpdir, datafiles):
# Now we've pushed, delete the user's local artifact cache
# directory and try to redownload it from the share
#
- artifacts = os.path.join(cli.directory, 'artifacts')
- shutil.rmtree(artifacts)
+ cas = os.path.join(cli.directory, 'cas')
+ shutil.rmtree(cas)
# Assert that nothing is cached locally anymore
for element_name in all_elements:
diff --git a/tests/integration/pullbuildtrees.py b/tests/integration/pullbuildtrees.py
index 24fac7e00..7beb515e7 100644
--- a/tests/integration/pullbuildtrees.py
+++ b/tests/integration/pullbuildtrees.py
@@ -22,9 +22,10 @@ DATA_DIR = os.path.join(
# cleared as just forcefully removing the refpath leaves dangling objects.
def default_state(cli, tmpdir, share):
shutil.rmtree(os.path.join(str(tmpdir), 'artifacts'))
+ shutil.rmtree(os.path.join(str(tmpdir), 'cas'))
cli.configure({
'artifacts': {'url': share.repo, 'push': False},
- 'artifactdir': os.path.join(str(tmpdir), 'artifacts'),
+ 'cachedir': str(tmpdir),
'cache': {'pull-buildtrees': False},
})
@@ -45,7 +46,7 @@ def test_pullbuildtrees(cli2, tmpdir, datafiles):
create_artifact_share(os.path.join(str(tmpdir), 'share3')) as share3:
cli2.configure({
'artifacts': {'url': share1.repo, 'push': True},
- 'artifactdir': os.path.join(str(tmpdir), 'artifacts')
+ 'cachedir': str(tmpdir),
})
# Build autotools element, checked pushed, delete local
diff --git a/tests/integration/shellbuildtrees.py b/tests/integration/shellbuildtrees.py
index 4d9d24e26..e6b50c098 100644
--- a/tests/integration/shellbuildtrees.py
+++ b/tests/integration/shellbuildtrees.py
@@ -231,10 +231,8 @@ def test_buildtree_options(cli, tmpdir, datafiles):
assert share.has_artifact('test', element_name, cli.get_element_key(project, element_name))
# Discard the cache
- cli.configure({
- 'artifacts': {'url': share.repo, 'push': True},
- 'artifactdir': os.path.join(cli.directory, 'artifacts2')
- })
+ shutil.rmtree(str(os.path.join(str(tmpdir), 'cache', 'artifacts')))
+ shutil.rmtree(str(os.path.join(str(tmpdir), 'cache', 'cas')))
assert cli.get_element_state(project, element_name) != 'cached'
# Pull from cache, but do not include buildtrees.
@@ -274,7 +272,7 @@ def test_buildtree_options(cli, tmpdir, datafiles):
])
assert 'Attempting to fetch missing artifact buildtree' in res.stderr
assert 'Hi' in res.output
- shutil.rmtree(os.path.join(os.path.join(cli.directory, 'artifacts2')))
+ shutil.rmtree(os.path.join(os.path.join(str(tmpdir), 'cache', 'cas')))
assert cli.get_element_state(project, element_name) != 'cached'
# Check it's not loading the shell at all with always set for the buildtree, when the
diff --git a/tests/integration/source-determinism.py b/tests/integration/source-determinism.py
index f7b2bf2ac..0b69346cd 100644
--- a/tests/integration/source-determinism.py
+++ b/tests/integration/source-determinism.py
@@ -31,7 +31,7 @@ def create_test_directory(*path, mode=0o644):
@pytest.mark.datafiles(DATA_DIR)
@pytest.mark.parametrize("kind", [(kind) for kind in ALL_REPO_KINDS] + ['local'])
@pytest.mark.skipif(not HAVE_SANDBOX, reason='Only available with a functioning sandbox')
-def test_deterministic_source_umask(cli, tmpdir, datafiles, kind, integration_cache):
+def test_deterministic_source_umask(cli, tmpdir, datafiles, kind):
project = str(datafiles)
element_name = 'list.bst'
element_path = os.path.join(project, 'elements', element_name)
@@ -94,9 +94,7 @@ def test_deterministic_source_umask(cli, tmpdir, datafiles, kind, integration_ca
return f.read()
finally:
os.umask(old_umask)
- cache_dir = integration_cache.artifacts
- cli.remove_artifact_from_cache(project, element_name,
- cache_dir=cache_dir)
+ cli.remove_artifact_from_cache(project, element_name)
assert get_value_for_umask(0o022) == get_value_for_umask(0o077)
@@ -104,7 +102,7 @@ def test_deterministic_source_umask(cli, tmpdir, datafiles, kind, integration_ca
@pytest.mark.integration
@pytest.mark.datafiles(DATA_DIR)
@pytest.mark.skipif(not HAVE_SANDBOX, reason='Only available with a functioning sandbox')
-def test_deterministic_source_local(cli, tmpdir, datafiles, integration_cache):
+def test_deterministic_source_local(cli, tmpdir, datafiles):
"""Only user rights should be considered for local source.
"""
project = str(datafiles)
@@ -156,8 +154,6 @@ def test_deterministic_source_local(cli, tmpdir, datafiles, integration_cache):
with open(os.path.join(checkoutdir, 'ls-l'), 'r') as f:
return f.read()
finally:
- cache_dir = integration_cache.artifacts
- cli.remove_artifact_from_cache(project, element_name,
- cache_dir=cache_dir)
+ cli.remove_artifact_from_cache(project, element_name)
assert get_value_for_mask(0o7777) == get_value_for_mask(0o0700)