mirror of
				https://github.com/go-gitea/gitea
				synced 2025-10-31 03:18:24 +00:00 
			
		
		
		
	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
 | |
| }
 |