mirror of
https://code.forgejo.org/forgejo/runner.git
synced 2025-09-15 18:57:01 +00:00
test: fix data race triggered by testing mocks in TestSetJobResultConcurrency (#869)
#862 caused a **new** data race in its mock testing while fixing `setJobResult`'s data race. 🤣 I'm going backwards! ``` ================== 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 ... ================== ``` <!--start release-notes-assistant--> <!--URL:https://code.forgejo.org/forgejo/runner--> - other - [PR](https://code.forgejo.org/forgejo/runner/pulls/869): <!--number 869 --><!--line 0 --><!--description dGVzdDogZml4IGRhdGEgcmFjZSB0cmlnZ2VyZWQgYnkgdGVzdGluZyBtb2NrcyBpbiBUZXN0U2V0Sm9iUmVzdWx0Q29uY3VycmVuY3k=-->test: fix data race triggered by testing mocks in TestSetJobResultConcurrency<!--description--> <!--end release-notes-assistant--> Reviewed-on: https://code.forgejo.org/forgejo/runner/pulls/869 Co-authored-by: Mathieu Fenniak <mathieu@fenniak.net> Co-committed-by: Mathieu Fenniak <mathieu@fenniak.net>
This commit is contained in:
parent
cf1a723a88
commit
fccf857bce
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