mirror of
https://github.com/go-gitea/gitea.git
synced 2024-11-24 11:09:44 +08:00
dc04044716
assert.Fail() will continue to execute the code while assert.FailNow() not. I thought those uses of assert.Fail() should exit immediately. PS: perhaps it's a good idea to use [require](https://pkg.go.dev/github.com/stretchr/testify/require) somewhere because the assert package's default behavior does not exit when an error occurs, which makes it difficult to find the root error reason.
70 lines
1.9 KiB
Go
70 lines
1.9 KiB
Go
// Copyright 2019 The Gitea Authors.
|
|
// All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package pull
|
|
|
|
import (
|
|
"context"
|
|
"strconv"
|
|
"testing"
|
|
"time"
|
|
|
|
"code.gitea.io/gitea/models/db"
|
|
issues_model "code.gitea.io/gitea/models/issues"
|
|
"code.gitea.io/gitea/models/unittest"
|
|
"code.gitea.io/gitea/modules/queue"
|
|
"code.gitea.io/gitea/modules/setting"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestPullRequest_AddToTaskQueue(t *testing.T) {
|
|
assert.NoError(t, unittest.PrepareTestDatabase())
|
|
|
|
idChan := make(chan int64, 10)
|
|
testHandler := func(items ...string) []string {
|
|
for _, s := range items {
|
|
id, _ := strconv.ParseInt(s, 10, 64)
|
|
idChan <- id
|
|
}
|
|
return nil
|
|
}
|
|
|
|
cfg, err := setting.GetQueueSettings(setting.CfgProvider, "pr_patch_checker")
|
|
assert.NoError(t, err)
|
|
prPatchCheckerQueue, err = queue.NewWorkerPoolQueueWithContext(context.Background(), "pr_patch_checker", cfg, testHandler, true)
|
|
assert.NoError(t, err)
|
|
|
|
pr := unittest.AssertExistsAndLoadBean(t, &issues_model.PullRequest{ID: 2})
|
|
AddToTaskQueue(db.DefaultContext, pr)
|
|
|
|
assert.Eventually(t, func() bool {
|
|
pr = unittest.AssertExistsAndLoadBean(t, &issues_model.PullRequest{ID: 2})
|
|
return pr.Status == issues_model.PullRequestStatusChecking
|
|
}, 1*time.Second, 100*time.Millisecond)
|
|
|
|
has, err := prPatchCheckerQueue.Has(strconv.FormatInt(pr.ID, 10))
|
|
assert.True(t, has)
|
|
assert.NoError(t, err)
|
|
|
|
go prPatchCheckerQueue.Run()
|
|
|
|
select {
|
|
case id := <-idChan:
|
|
assert.EqualValues(t, pr.ID, id)
|
|
case <-time.After(time.Second):
|
|
assert.FailNow(t, "Timeout: nothing was added to pullRequestQueue")
|
|
}
|
|
|
|
has, err = prPatchCheckerQueue.Has(strconv.FormatInt(pr.ID, 10))
|
|
assert.False(t, has)
|
|
assert.NoError(t, err)
|
|
|
|
pr = unittest.AssertExistsAndLoadBean(t, &issues_model.PullRequest{ID: 2})
|
|
assert.Equal(t, issues_model.PullRequestStatusChecking, pr.Status)
|
|
|
|
prPatchCheckerQueue.ShutdownWait(5 * time.Second)
|
|
prPatchCheckerQueue = nil
|
|
}
|