Skip to content

Commit febe0ed

Browse files
committed
fix: avoid cross-call snapshot assertions.
1 parent fcd0f88 commit febe0ed

1 file changed

Lines changed: 13 additions & 19 deletions

File tree

tests/test_workspace_path_thread_safety.py

Lines changed: 13 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
sys.path.insert(0, REPO_ROOT)
2020

2121
from utils.workspace_path import (
22-
get_workspace_path_override,
2322
resolve_workspace_path,
2423
set_workspace_path_override,
2524
)
@@ -35,9 +34,15 @@ def setUp(self):
3534
self.path_b = os.path.join(self.tmp, "storage-b")
3635
os.makedirs(self.path_a)
3736
os.makedirs(self.path_b)
37+
self.allowed_resolved = {
38+
os.path.realpath(self.path_a),
39+
os.path.realpath(self.path_b),
40+
}
3841
self._prior_workspace_env = os.environ.pop("WORKSPACE_PATH", None)
3942
self.addCleanup(self._restore_workspace_env)
4043
self.addCleanup(set_workspace_path_override, None)
44+
set_workspace_path_override(None)
45+
self.fallback_resolved = resolve_workspace_path()
4146

4247
def _restore_workspace_env(self):
4348
if self._prior_workspace_env is None:
@@ -60,18 +65,10 @@ def writer() -> None:
6065
def reader() -> None:
6166
start.wait()
6267
for _ in range(iterations):
63-
override = get_workspace_path_override()
64-
if override is None:
65-
errors.append("override was unexpectedly cleared during run")
66-
continue
67-
if override not in (self.path_a, self.path_b):
68-
errors.append(f"override returned unexpected value: {override!r}")
69-
continue
7068
resolved = resolve_workspace_path()
71-
expected = os.path.realpath(override)
72-
if resolved != expected:
69+
if resolved not in self.allowed_resolved:
7370
errors.append(
74-
f"resolve {resolved!r} != realpath(override) {expected!r}"
71+
f"resolve returned unexpected path: {resolved!r}"
7572
)
7673

7774
with ThreadPoolExecutor(max_workers=9) as pool:
@@ -100,16 +97,13 @@ def toggler() -> None:
10097
def reader() -> None:
10198
start.wait()
10299
for _ in range(iterations):
103-
override = get_workspace_path_override()
104100
resolved = resolve_workspace_path()
105-
if override is None:
101+
if (
102+
resolved in self.allowed_resolved
103+
or resolved == self.fallback_resolved
104+
):
106105
continue
107-
if override not in (self.path_a, self.path_b):
108-
errors.append(f"unexpected override: {override!r}")
109-
elif resolved != os.path.realpath(override):
110-
errors.append(
111-
f"resolve {resolved!r} != realpath({override!r})"
112-
)
106+
errors.append(f"resolve returned unexpected path: {resolved!r}")
113107

114108
with ThreadPoolExecutor(max_workers=5) as pool:
115109
futures = [pool.submit(toggler)]

0 commit comments

Comments
 (0)