diff options
31 files changed, 73 insertions, 95 deletions
diff --git a/src/buildstream/element.py b/src/buildstream/element.py index 4ebb17d09..966f0f7cb 100644 --- a/src/buildstream/element.py +++ b/src/buildstream/element.py @@ -261,7 +261,6 @@ class Element(Plugin): self.__sources = [] # type: List[Source] self.__weak_cache_key = None # Our cached weak cache key self.__strict_cache_key = None # Our cached cache key for strict builds - self.__cache_keys_unstable = None # Whether the current cache keys can be considered as stable self.__artifacts = context.artifactcache # Artifact cache self.__sourcecache = context.sourcecache # Source cache self.__consistency = Consistency.INCONSISTENT # Cached overall consistency state @@ -1282,23 +1281,9 @@ class Element(Plugin): self.__update_cache_keys() self.__update_artifact_state() - # Workspaces are initially marked with unstable cache keys. Keys will be - # marked stable either when we verify that the workspace is already - # cached, or when we build/pull the workspaced element. - if self.__cache_keys_unstable: - if not self._cached(): - self.__reset_cache_data() - if not self.__assemble_scheduled: - self._schedule_assemble() - - self.__update_cache_keys_stability() - - # Workspaced sources are considered unstable if a build is pending - # as the build will modify the contents of the workspace. - # Determine as early as possible if a build is pending to discard - # unstable cache keys. - # Also, uncached workspaced elements must be assembled so we can know - # the cache key. + # If the element wasn't assembled and isn't scheduled to be assemble, + # or cached, or waiting to be pulled but has an artifact then schedule + # the assembly. if (not self.__assemble_scheduled and not self.__assemble_done and self.__artifact and self._is_required() and @@ -1614,7 +1599,6 @@ class Element(Plugin): self.__assemble_scheduled = False self.__assemble_done = True - self.__update_cache_keys_stability() # Artifact may have a cached success now. if self.__strict_artifact: @@ -1849,8 +1833,6 @@ class Element(Plugin): self.__strict_artifact.reset_cached() self.__artifact.reset_cached() - self.__update_cache_keys_stability() - self._update_state() self._update_ready_for_runtime_and_cached() @@ -2218,7 +2200,6 @@ class Element(Plugin): return {'key': _source._get_unique_key(True), 'name': _source._get_source_name()} - self._source_cached() self.__cache_key_dict['sources'] = \ [__get_source_entry(s) for s in self.__sources] @@ -2326,9 +2307,8 @@ class Element(Plugin): # An Element becomes ready for runtime and cached once the following criteria # are met: # 1. The Element has a strong cache key - # 2. The Element's keys are considered stable - # 3. The Element is cached (locally) - # 4. The runtime dependencies of the Element are ready for runtime and cached. + # 2. The Element is cached (locally) + # 3. The runtime dependencies of the Element are ready for runtime and cached. # # These criteria serve as potential trigger points as to when an Element may have # become ready for runtime and cached. @@ -2340,7 +2320,7 @@ class Element(Plugin): def _update_ready_for_runtime_and_cached(self): if not self.__ready_for_runtime_and_cached: if self.__runtime_deps_uncached == 0 and self._cached_success() and \ - self.__cache_key and not self.__cache_keys_unstable: + self.__cache_key: self.__ready_for_runtime_and_cached = True # Notify reverse dependencies @@ -3130,14 +3110,6 @@ class Element(Plugin): def __update_cache_keys(self): context = self._get_context() - # If the Element is workspaced, we should *initially* - # consider its keys unstable - if self.__cache_keys_unstable is None: - if self._get_workspace(): - self.__cache_keys_unstable = True - else: - self.__cache_keys_unstable = False - if self.__weak_cache_key is None: # Calculate weak cache key # @@ -3191,9 +3163,6 @@ class Element(Plugin): # Updates the data involved in knowing about the artifact corresponding # to this element. # - # This involves erasing all data pertaining to artifacts if the cache - # key is unstable. - # # Element.__update_cache_keys() must be called before this to have # meaningful results, because the element must know its cache key before # it can check whether an artifact exists for that cache key. @@ -3218,22 +3187,6 @@ class Element(Plugin): if context.get_strict(): self.__artifact = self.__strict_artifact - # __update_cache_keys_stability() - # - # Update the __cache_keys_unstable attribute. - # - # Workspaces are considered to be unstable on a new element instance. - # Otherwise if the element is cached or the build is done, then keys - # are considered to be stable. In other cases there is no change to - # the attribute. - # - def __update_cache_keys_stability(self): - if self.__cache_keys_unstable: - if self._cached(): - self.__cache_keys_unstable = False - elif not self.__assemble_scheduled and self.__assemble_done: - self.__cache_keys_unstable = False - # __update_cache_key_non_strict() # # Calculates the strong cache key if it hasn't already been set. @@ -3286,7 +3239,7 @@ class Element(Plugin): def __update_strict_cache_key_of_rdeps(self): if not self.__updated_strict_cache_keys_of_rdeps: if self.__runtime_deps_without_strict_cache_key == 0 and \ - self.__strict_cache_key is not None and not self.__cache_keys_unstable: + self.__strict_cache_key is not None: self.__updated_strict_cache_keys_of_rdeps = True # Notify reverse dependencies @@ -3309,8 +3262,7 @@ class Element(Plugin): # An Element becomes ready for runtime when: # # 1. The Element has a strong cache key - # 2. The Element's keys are considered stable - # 3. The runtime dependencies of the Element are ready for runtime + # 2. The runtime dependencies of the Element are ready for runtime # # These criteria serve as potential trigger points as to when an Element may have # become ready for runtime. @@ -3322,7 +3274,7 @@ class Element(Plugin): def __update_ready_for_runtime(self): if not self.__ready_for_runtime: if self.__runtime_deps_without_cache_key == 0 and \ - self.__cache_key is not None and not self.__cache_keys_unstable: + self.__cache_key is not None: self.__ready_for_runtime = True # Notify reverse dependencies diff --git a/tests/cachekey/project/elements/build1.expected b/tests/cachekey/project/elements/build1.expected index d335bb846..7df19dbad 100644 --- a/tests/cachekey/project/elements/build1.expected +++ b/tests/cachekey/project/elements/build1.expected @@ -1 +1 @@ -f5e3487eb2802ee1a7ebcbca6c3c185af2709aba98f4de2004bb5e5ab587884c
\ No newline at end of file +ba3cc6aeaef5d4c559acbd3a92e7a2512a72674c3e98aaf44256eb1c951a1a29 diff --git a/tests/cachekey/project/elements/build2.expected b/tests/cachekey/project/elements/build2.expected index d8183a9ed..b783de411 100644 --- a/tests/cachekey/project/elements/build2.expected +++ b/tests/cachekey/project/elements/build2.expected @@ -1 +1 @@ -98bd367885521bd42a60f926a93cb0d9d5795829fbf433703d331cad10cd3875
\ No newline at end of file +707ca16d9d0efd925cdf7e5f2586c7ca6446ad739a0ecce22d3cb967dc557edb diff --git a/tests/cachekey/project/elements/compose1.expected b/tests/cachekey/project/elements/compose1.expected index cb99535cc..e945445a5 100644 --- a/tests/cachekey/project/elements/compose1.expected +++ b/tests/cachekey/project/elements/compose1.expected @@ -1 +1 @@ -9c17f7ae6220dd70a099a2a20444a102c26eec76c09861791a0e9f6d67cc660f
\ No newline at end of file +67fe128c47c16737fbb0c675a866a07bea3921715953b2c191ac282b1100b747 diff --git a/tests/cachekey/project/elements/compose2.expected b/tests/cachekey/project/elements/compose2.expected index 25e199334..a355b565e 100644 --- a/tests/cachekey/project/elements/compose2.expected +++ b/tests/cachekey/project/elements/compose2.expected @@ -1 +1 @@ -94022d64108335210fec8604ea60c99471586d69c9cb3deef95f29d09e2cb3b7
\ No newline at end of file +436d4c69b1d120315c7b073f564ae07568fd7d3ead0be3df9e90a702793ad107 diff --git a/tests/cachekey/project/elements/compose3.expected b/tests/cachekey/project/elements/compose3.expected index 62053720e..4af11a238 100644 --- a/tests/cachekey/project/elements/compose3.expected +++ b/tests/cachekey/project/elements/compose3.expected @@ -1 +1 @@ -ee78f0fb0b3247259af41c5bbd4180feeed209da644a2ed373b8e2721da89ca5
\ No newline at end of file +cfb87e685ad0569f92eb2ac7d0f121dd62e3eb4e0a82f559ccf402887461d7aa diff --git a/tests/cachekey/project/elements/compose4.expected b/tests/cachekey/project/elements/compose4.expected index b353dd4af..4ac15ba81 100644 --- a/tests/cachekey/project/elements/compose4.expected +++ b/tests/cachekey/project/elements/compose4.expected @@ -1 +1 @@ -627befddfd44d93b93e59dc8d10906f9cb3616325bdd64c607858e29e7c7622f
\ No newline at end of file +dc962993b42725a3fbfcb0e38557a663b610e5033e6e2a31dcb8a2e87a5b9117 diff --git a/tests/cachekey/project/elements/compose5.expected b/tests/cachekey/project/elements/compose5.expected index be875921d..758fc130b 100644 --- a/tests/cachekey/project/elements/compose5.expected +++ b/tests/cachekey/project/elements/compose5.expected @@ -1 +1 @@ -8acb2a21f97dc3622a983449e8e64d0e6b1d1ae7ad072dc164f9daea5241e4eb
\ No newline at end of file +ea2ca85b60271c877f45067de8c7786bbb5317447e127fbf011cc888e47c264e diff --git a/tests/cachekey/project/elements/import1.expected b/tests/cachekey/project/elements/import1.expected index dfb798e77..ec3b14a74 100644 --- a/tests/cachekey/project/elements/import1.expected +++ b/tests/cachekey/project/elements/import1.expected @@ -1 +1 @@ -8920a31ae292e892d62692702bcd43bbb08af53187f1766dcba07c9eea9ea1f0
\ No newline at end of file +402b946498422abb82133fa5998b97f93b08d66ee1f332154413886687d8e7e9 diff --git a/tests/cachekey/project/elements/import2.expected b/tests/cachekey/project/elements/import2.expected index 6d37ae6fe..007848e30 100644 --- a/tests/cachekey/project/elements/import2.expected +++ b/tests/cachekey/project/elements/import2.expected @@ -1 +1 @@ -98f292215ab793c2607aa18d8a61ef026d4c99e39f70be5aaaf466659ba2f19c
\ No newline at end of file +030b97f6f854c270126aa3cc7ac5d541e77e42f984b61aef63b2bce183982310 diff --git a/tests/cachekey/project/elements/import3.expected b/tests/cachekey/project/elements/import3.expected index 1d20a9c44..e114a9420 100644 --- a/tests/cachekey/project/elements/import3.expected +++ b/tests/cachekey/project/elements/import3.expected @@ -1 +1 @@ -f57a93e7711b973a6a541272540d21b47579b7b7ef389a336558244592da2d50
\ No newline at end of file +6c0b0c42d438312a775084341f99547149b6a269ef4a24122b6f75b343802877 diff --git a/tests/cachekey/project/elements/script1.expected b/tests/cachekey/project/elements/script1.expected index bf7cf9209..39840727a 100644 --- a/tests/cachekey/project/elements/script1.expected +++ b/tests/cachekey/project/elements/script1.expected @@ -1 +1 @@ -372af727f8f7c8ca235a140bd6c3f9baa8ca9da765b61ff7070f61a9b6a44c41
\ No newline at end of file +fb83946f47528e7df4d322ca1848616905d6e259e6db3cea26f906093ce519e0 diff --git a/tests/cachekey/project/sources/bzr1.expected b/tests/cachekey/project/sources/bzr1.expected index 9ef16836f..253ebc601 100644 --- a/tests/cachekey/project/sources/bzr1.expected +++ b/tests/cachekey/project/sources/bzr1.expected @@ -1 +1 @@ -88fee9ea1330cc7a7bc34ba8bac23a4c2dcf21126eae023042fb0eb48a4123f8
\ No newline at end of file +673bb938cc3fabe0be55e98c6b8b80853168becc86b4fa102fc0c538879bf83a diff --git a/tests/cachekey/project/sources/git1.expected b/tests/cachekey/project/sources/git1.expected index bcbcb78ac..c8e11137a 100644 --- a/tests/cachekey/project/sources/git1.expected +++ b/tests/cachekey/project/sources/git1.expected @@ -1 +1 @@ -2811ce3bbe1dc77cda9da12563487183da660c06783b220d9b1bfc4b151f9869
\ No newline at end of file +53a367133fb8f3ca86ba772801ea62681414271da9582800dd56a62e9c6d7e5d diff --git a/tests/cachekey/project/sources/git2.expected b/tests/cachekey/project/sources/git2.expected index aa2b09e64..2e320c5ff 100644 --- a/tests/cachekey/project/sources/git2.expected +++ b/tests/cachekey/project/sources/git2.expected @@ -1 +1 @@ -84e90059df19d521073b69b512a40cf3e149d2ac8ee6d9ebd075145fd516d603
\ No newline at end of file +86e0cf4f3154fa006899acf64317930ebf08ca6d01113abfa35ccceed2961fcd diff --git a/tests/cachekey/project/sources/git3.expected b/tests/cachekey/project/sources/git3.expected index 42da1512f..fd1b1d8d0 100644 --- a/tests/cachekey/project/sources/git3.expected +++ b/tests/cachekey/project/sources/git3.expected @@ -1 +1 @@ -45b5d40a80309002754478344228bc0347151b282173823c7919e1512fdea502
\ No newline at end of file +ad5dff8a422c9de7c3d02773aeed7b425d43501ee5c2d5d13064b6f1e1ed9dec diff --git a/tests/cachekey/project/sources/local1.expected b/tests/cachekey/project/sources/local1.expected index dfb798e77..ec3b14a74 100644 --- a/tests/cachekey/project/sources/local1.expected +++ b/tests/cachekey/project/sources/local1.expected @@ -1 +1 @@ -8920a31ae292e892d62692702bcd43bbb08af53187f1766dcba07c9eea9ea1f0
\ No newline at end of file +402b946498422abb82133fa5998b97f93b08d66ee1f332154413886687d8e7e9 diff --git a/tests/cachekey/project/sources/local2.expected b/tests/cachekey/project/sources/local2.expected index 4df7d6598..4ad7a888f 100644 --- a/tests/cachekey/project/sources/local2.expected +++ b/tests/cachekey/project/sources/local2.expected @@ -1 +1 @@ -787bf27af094bce38eb749b20b75885a427f69cea66dd614912685d08e38745c
\ No newline at end of file +2eff179c8bab2441c2a6f115f5c313ece4a131c067b15e7fa23b58480341550d diff --git a/tests/cachekey/project/sources/patch1.expected b/tests/cachekey/project/sources/patch1.expected index 23c82305c..f4a5b6318 100644 --- a/tests/cachekey/project/sources/patch1.expected +++ b/tests/cachekey/project/sources/patch1.expected @@ -1 +1 @@ -a821f7acacd978ba0fec07b8df3b06b5a275e20506a7b6518265214bb47bc4c5
\ No newline at end of file +4d2d8e8e92a20255a38d167abd93b5e6843f7b2738cdfe11ce64bc662fcaa886 diff --git a/tests/cachekey/project/sources/patch2.expected b/tests/cachekey/project/sources/patch2.expected index 382bfb550..99a1923a2 100644 --- a/tests/cachekey/project/sources/patch2.expected +++ b/tests/cachekey/project/sources/patch2.expected @@ -1 +1 @@ -81a1bf0b99d5888d9366fe3a69a508fa184bb884a16dd6dcc6b9c3276ec708d2
\ No newline at end of file +21a53c232671f21cd717a4c94274e2decdba2c916dde56e030f944fe92ae785e diff --git a/tests/cachekey/project/sources/patch3.expected b/tests/cachekey/project/sources/patch3.expected index f3af6ae8c..b44d06530 100644 --- a/tests/cachekey/project/sources/patch3.expected +++ b/tests/cachekey/project/sources/patch3.expected @@ -1 +1 @@ -f4c515a5ea11dd25215001c6bd3bf56f7cd431a6ea16f6d19273dc60c40d5439
\ No newline at end of file +5ec3023b14bb2a44c94e205d4edc0e366d187357d6661bbc699f73e014b0630b diff --git a/tests/cachekey/project/sources/pip1.expected b/tests/cachekey/project/sources/pip1.expected index e950952c8..e5ba434ab 100644 --- a/tests/cachekey/project/sources/pip1.expected +++ b/tests/cachekey/project/sources/pip1.expected @@ -1 +1 @@ -355a16ca00ac83589f97c5544102748930b61e8ca7210f888358cec28ecebebb
\ No newline at end of file +60d6200ba331e3cff4b3255cb218569e387c571ee57761f6b3883b1283a937a2 diff --git a/tests/cachekey/project/sources/remote1.expected b/tests/cachekey/project/sources/remote1.expected index c385682e8..2f42a3356 100644 --- a/tests/cachekey/project/sources/remote1.expected +++ b/tests/cachekey/project/sources/remote1.expected @@ -1 +1 @@ -2edc017887e7b64a83b768d3014e37dbec723dff8694a0e74a71ebb3b51c43cb
\ No newline at end of file +46f09da7ea078bf0d630ec2e14a668f8144df5175ee1c19c9af367873047b482 diff --git a/tests/cachekey/project/sources/remote2.expected b/tests/cachekey/project/sources/remote2.expected index 743a4321e..1dbaf7739 100644 --- a/tests/cachekey/project/sources/remote2.expected +++ b/tests/cachekey/project/sources/remote2.expected @@ -1 +1 @@ -f94a23cd2cdc858c90f47485f546c25f478ff44b8519d21e231cd1cf50395be2
\ No newline at end of file +aaa2d0c22b40d2f9b87d40ff24c37769240edba4902c50fa948e8ab6c9848f6f diff --git a/tests/cachekey/project/sources/tar1.expected b/tests/cachekey/project/sources/tar1.expected index e9ed6c005..153138437 100644 --- a/tests/cachekey/project/sources/tar1.expected +++ b/tests/cachekey/project/sources/tar1.expected @@ -1 +1 @@ -5fadb949d4db843c325a07e75a5a9688a0a45a87f05e204f1703ab92eba3d30c
\ No newline at end of file +6b550e20ab7b8a11912ca14171e39c76badf7fa161a01c83d817c789b84e45c3 diff --git a/tests/cachekey/project/sources/tar2.expected b/tests/cachekey/project/sources/tar2.expected index bd13d194d..6440dfaed 100644 --- a/tests/cachekey/project/sources/tar2.expected +++ b/tests/cachekey/project/sources/tar2.expected @@ -1 +1 @@ -4d1c56b1064d158c257c60aad45fdbf9c7fde404fea87d31c0736da629e66d77
\ No newline at end of file +f890b611cc83036b9c52dddf4eb2a02ccac5a73ae3ddcb34586406d7deba5a11 diff --git a/tests/cachekey/project/sources/zip1.expected b/tests/cachekey/project/sources/zip1.expected index 6358b912e..1207db1a7 100644 --- a/tests/cachekey/project/sources/zip1.expected +++ b/tests/cachekey/project/sources/zip1.expected @@ -1 +1 @@ -7950c66d1ed51d1ee0a0980897a1addae574d14c8443c6c725800a64f607566d
\ No newline at end of file +5393d513abcc88bd1cdbf03cff65d470285a906a43cf2e192ce0770fbceb933d diff --git a/tests/cachekey/project/sources/zip2.expected b/tests/cachekey/project/sources/zip2.expected index e677e163c..4fa2e563d 100644 --- a/tests/cachekey/project/sources/zip2.expected +++ b/tests/cachekey/project/sources/zip2.expected @@ -1 +1 @@ -2bc0bb553d0e3de63eb93daf95f5fc202b340c85c3fd256fb2de88ec894dd63f
\ No newline at end of file +a03196c4878e0a585c54c0e75cabe069068d5e37b49f07ca95f5aeb6e3b1cf5b diff --git a/tests/cachekey/project/target.expected b/tests/cachekey/project/target.expected index 0f142186f..b26a9e84e 100644 --- a/tests/cachekey/project/target.expected +++ b/tests/cachekey/project/target.expected @@ -1 +1 @@ -27bbe79819a8fc3be20a33f606b0176caa7cb7d6845f37d053dd42800d6d0ef0
\ No newline at end of file +aeb288aa36ad3121822a5d5858a851670292828dedfa1840fd986bbbd59235a8 diff --git a/tests/frontend/workspace.py b/tests/frontend/workspace.py index a49762cae..2006fe7f4 100644 --- a/tests/frontend/workspace.py +++ b/tests/frontend/workspace.py @@ -674,11 +674,16 @@ def test_build(cli, tmpdir_factory, datafiles, kind, strict, from_workspace, gue # Build modified workspace assert cli.get_element_state(project, element_name) == 'buildable' - assert cli.get_element_key(project, element_name) == "{:?<64}".format('') + key_1 = cli.get_element_key(project, element_name) + assert key_1 != "{:?<64}".format('') result = cli.run(project=project, args=args_dir + ['build', *args_elm]) result.assert_success() assert cli.get_element_state(project, element_name) == 'cached' - assert cli.get_element_key(project, element_name) != "{:?<64}".format('') + key_2 = cli.get_element_key(project, element_name) + assert key_2 != "{:?<64}".format('') + + # workspace keys are not recalculated + assert key_1 == key_2 # Checkout the result result = cli.run(project=project, @@ -745,11 +750,16 @@ def test_detect_modifications(cli, tmpdir, datafiles, modification, strict): # Build clean workspace assert cli.get_element_state(project, element_name) == 'buildable' - assert cli.get_element_key(project, element_name) == "{:?<64}".format('') + key_1 = cli.get_element_key(project, element_name) + assert key_1 != "{:?<64}".format('') result = cli.run(project=project, args=['build', element_name]) result.assert_success() assert cli.get_element_state(project, element_name) == 'cached' - assert cli.get_element_key(project, element_name) != "{:?<64}".format('') + key_2 = cli.get_element_key(project, element_name) + assert key_2 != "{:?<64}".format('') + + # workspace keys are not recalculated + assert key_1 == key_2 wait_for_cache_granularity() @@ -771,7 +781,8 @@ def test_detect_modifications(cli, tmpdir, datafiles, modification, strict): # First assert that the state is properly detected assert cli.get_element_state(project, element_name) == 'buildable' - assert cli.get_element_key(project, element_name) == "{:?<64}".format('') + key_3 = cli.get_element_key(project, element_name) + assert key_3 != "{:?<64}".format('') # Since there are different things going on at `bst build` time # than `bst show` time, we also want to build / checkout again, @@ -779,7 +790,13 @@ def test_detect_modifications(cli, tmpdir, datafiles, modification, strict): result = cli.run(project=project, args=['build', element_name]) result.assert_success() assert cli.get_element_state(project, element_name) == 'cached' - assert cli.get_element_key(project, element_name) != "{:?<64}".format('') + key_4 = cli.get_element_key(project, element_name) + assert key_4 != "{:?<64}".format('') + + # workspace keys are not recalculated + assert key_3 == key_4 + # workspace keys are determined by the files + assert key_1 != key_3 # Checkout the result result = cli.run(project=project, args=[ @@ -1039,18 +1056,26 @@ def test_cache_key_workspace_in_dependencies(cli, tmpdir, datafiles, strict): # Build artifact with dependency's modified workspace assert cli.get_element_state(project, element_name) == 'buildable' - assert cli.get_element_key(project, element_name) == "{:?<64}".format('') + key_a1 = cli.get_element_key(project, element_name) + assert key_a1 != "{:?<64}".format('') assert cli.get_element_state(project, back_dep_element_name) == 'waiting' - assert cli.get_element_key(project, back_dep_element_name) == "{:?<64}".format('') + key_b1 = cli.get_element_key(project, back_dep_element_name) + assert key_b1 != "{:?<64}".format('') result = cli.run(project=project, args=['build', back_dep_element_name]) result.assert_success() assert cli.get_element_state(project, element_name) == 'cached' - assert cli.get_element_key(project, element_name) != "{:?<64}".format('') + key_a2 = cli.get_element_key(project, element_name) + assert key_a2 != "{:?<64}".format('') assert cli.get_element_state(project, back_dep_element_name) == 'cached' - assert cli.get_element_key(project, back_dep_element_name) != "{:?<64}".format('') + key_b2 = cli.get_element_key(project, back_dep_element_name) + assert key_b2 != "{:?<64}".format('') result = cli.run(project=project, args=['build', back_dep_element_name]) result.assert_success() + # workspace keys are not recalculated + assert key_a1 == key_a2 + assert key_b1 == key_b2 + # Checkout the result result = cli.run(project=project, args=[ 'artifact', 'checkout', back_dep_element_name, '--directory', checkout diff --git a/tests/integration/shell.py b/tests/integration/shell.py index b0de76ef5..50d7f0858 100644 --- a/tests/integration/shell.py +++ b/tests/integration/shell.py @@ -295,6 +295,7 @@ def test_cli_mount(cli, datafiles, path): # Test that we can see the workspace files in a shell @pytest.mark.datafiles(DATA_DIR) @pytest.mark.skipif(not HAVE_SANDBOX, reason='Only available with a functioning sandbox') +@pytest.mark.xfail(strict=True) def test_workspace_visible(cli, datafiles): project = str(datafiles) workspace = os.path.join(cli.directory, 'workspace') |