<#12499 flaky test - src/python/pants/engine/proce...
# github-notifications
q
#12499 flaky test - src/python/pants/engine/process_test.py Issue created by tdyas Flaky test failure seen in CI: https://github.com/pantsbuild/pants/runs/3246796066?check_suite_focus=true#step:11:367 Passes locally.
Copy code
=================================== 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/pants