test: fix data race triggered by testing mocks in TestSetJobResultConcurrency
==================
WARNING: DATA RACE
Read at 0x00c000168d88 by goroutine 943:
code.forgejo.org/forgejo/runner/v9/act/model.(*Workflow).GetJob()
/home/debian/.cache/act/8afb5309fced9ef8/hostexecutor/act/model/workflow.go:742
+0x244
code.forgejo.org/forgejo/runner/v9/act/model.(*Run).Job()
/home/debian/.cache/act/8afb5309fced9ef8/hostexecutor/act/model/planner.go:50
+0xab
code.forgejo.org/forgejo/runner/v9/act/runner.setJobResult()
/home/debian/.cache/act/8afb5309fced9ef8/hostexecutor/act/runner/job_executor.go:166
+0x7c
code.forgejo.org/forgejo/runner/v9/act/runner.TestSetJobResultConcurrency.func2()
/home/debian/.cache/act/8afb5309fced9ef8/hostexecutor/act/runner/job_executor_test.go:404
+0xfb
Previous write at 0x00c000168d88 by goroutine 944:
code.forgejo.org/forgejo/runner/v9/act/model.(*Workflow).GetJob()
/home/debian/.cache/act/8afb5309fced9ef8/hostexecutor/act/model/workflow.go:743
+0x258
code.forgejo.org/forgejo/runner/v9/act/model.(*Run).Job()
/home/debian/.cache/act/8afb5309fced9ef8/hostexecutor/act/model/planner.go:50
+0xab
code.forgejo.org/forgejo/runner/v9/act/runner.setJobResult()
/home/debian/.cache/act/8afb5309fced9ef8/hostexecutor/act/runner/job_executor.go:166
+0x7c
code.forgejo.org/forgejo/runner/v9/act/runner.TestSetJobResultConcurrency.func3()
/home/debian/.cache/act/8afb5309fced9ef8/hostexecutor/act/runner/job_executor_test.go:409
+0xf8
...
==================
This commit is contained in:
parent
76bf87f472
commit
586980007f
1 changed files with 6 additions and 0 deletions
|
|
@ -362,6 +362,12 @@ func TestSetJobResultConcurrency(t *testing.T) {
|
|||
},
|
||||
},
|
||||
}
|
||||
// Hack: Job() invokes GetJob() which can mutate the job name, this will trip the data race detector if it is
|
||||
// encountered later when `setJobResult()` is being tested. This is a false-positive caused by this test invoking
|
||||
// setJobResult outside of the regular RunContext, so it's invoked here before the goroutines are spawned to prevent
|
||||
// the false positive.
|
||||
rc1.Run.Job()
|
||||
rc2.Run.Job()
|
||||
|
||||
jim.On("matrix").Return(map[string]interface{}{
|
||||
"python": []string{"3.10", "3.11", "3.12"},
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue