quaint-telephone-89068
04/28/2026, 4:26 PM=================================== FAILURES ===================================
_________________________ test_cache_scope_per_restart _________________________
def test_cache_scope_per_restart() -> None:
success_argv = ("/bin/bash", "-c", "echo $RANDOM")
failure_argv = ("/bin/bash", "-c", "echo $RANDOM; exit 1")
always_cache_success = Process(
success_argv, cache_scope=ProcessCacheScope.PER_RESTART_ALWAYS, description="foo"
)
always_cache_failure = Process(
failure_argv, cache_scope=ProcessCacheScope.PER_RESTART_ALWAYS, description="foo"
)
success_cache_success = Process(
success_argv, cache_scope=ProcessCacheScope.PER_RESTART_SUCCESSFUL, description="foo"
)
success_cache_failure = Process(
failure_argv, cache_scope=ProcessCacheScope.PER_RESTART_SUCCESSFUL, description="foo"
)
runner_one = new_rule_runner()
def run1(process: Process) -> FallibleProcessResult:
return runner_one.request(FallibleProcessResult, [process])
always_cache_success_res1 = run1(always_cache_success)
always_cache_failure_res1 = run1(always_cache_failure)
success_cache_success_res1 = run1(success_cache_success)
success_cache_failure_res1 = run1(success_cache_failure)
runner_one.new_session("new session")
always_cache_success_res2 = run1(always_cache_success)
always_cache_failure_res2 = run1(always_cache_failure)
success_cache_success_res2 = run1(success_cache_success)
success_cache_failure_res2 = run1(success_cache_failure)
# Even with a new session, most results should be memoized.
assert always_cache_success_res1 is always_cache_success_res2
assert always_cache_failure_res1 is always_cache_failure_res2
assert success_cache_success_res1 is success_cache_success_res2
assert success_cache_failure_res1 != success_cache_failure_res2
# But a new scheduler removes all memoization. We do not cache to disk.
runner_two = new_rule_runner()
def run2(process: Process) -> FallibleProcessResult:
return runner_two.request(FallibleProcessResult, [process])
assert run2(always_cache_success) != always_cache_success_res1
assert run2(always_cache_failure) != always_cache_failure_res1
> assert run2(success_cache_success) != success_cache_success_res1
E AssertionError: assert FallibleProcessResult(stdout=b'14394\n', stdout_digest=FileDigest(fingerprint='7569b115ec6d27beadf23f00d500736a08fced4...es_length=0), exit_code=0, output_digest=Digest('e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 0)) != FallibleProcessResult(stdout=b'14394\n', stdout_digest=FileDigest(fingerprint='7569b115ec6d27beadf23f00d500736a08fced4...es_length=0), exit_code=0, output_digest=Digest('e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 0))
E + where FallibleProcessResult(stdout=b'14394\n', stdout_digest=FileDigest(fingerprint='7569b115ec6d27beadf23f00d500736a08fced4...es_length=0), exit_code=0, output_digest=Digest('e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', 0)) = <function test_cache_scope_per_restart.<locals>.run2 at 0x7fe52d0d2950>(Process(argv=('/bin/bash', '-c', 'echo $RANDOM'), description='foo', level=<LogLevel.INFO: 'info'>, input_digest=Diges...=False, execution_slot_variable=None, cache_scope=<ProcessCacheScope.PER_RESTART_SUCCESSFUL: 'per_restart_successful'>))
src/python/pants/engine/process_test.py:221: AssertionError
pantsbuild/pantsquaint-telephone-89068
04/28/2026, 4:26 PM