chore: fix test to avoid data race (#7731)
- The global Git version can be accessed by background services such as the PR checker, to minimize data race because of `MockVariableValue` resetting it. Run the mocked Git version as first test. - Followup of forgejo/forgejo#7527 CI that is failing: https://codeberg.org/forgejo/forgejo/actions/runs/73021/jobs/10 Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/7731 Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org> Co-authored-by: Gusted <postmaster@gusted.xyz> Co-committed-by: Gusted <postmaster@gusted.xyz>
This commit is contained in:
		
					parent
					
						
							
								c5d274a384
							
						
					
				
			
			
				commit
				
					
						d7baf25a6b
					
				
			
		
					 1 changed files with 25 additions and 14 deletions
				
			
		| 
						 | 
				
			
			@ -303,26 +303,37 @@ func TestCantMergeConflict(t *testing.T) {
 | 
			
		|||
		gitRepo, err := gitrepo.OpenRepository(git.DefaultContext, repo1)
 | 
			
		||||
		require.NoError(t, err)
 | 
			
		||||
 | 
			
		||||
		err = pull.Merge(t.Context(), pr, user1, gitRepo, repo_model.MergeStyleMerge, "", "CONFLICT", false)
 | 
			
		||||
		require.Error(t, err, "Merge should return an error due to conflict")
 | 
			
		||||
		assert.True(t, models.IsErrMergeConflicts(err), "Merge error is not a conflict error")
 | 
			
		||||
		t.Run("Rebase", func(t *testing.T) {
 | 
			
		||||
			t.Run("Git version without replay", func(t *testing.T) {
 | 
			
		||||
				defer tests.PrintCurrentTest(t)()
 | 
			
		||||
				oldVersion, err := version.NewVersion("2.43.0")
 | 
			
		||||
				require.NoError(t, err)
 | 
			
		||||
				defer test.MockVariableValue(&git.GitVersion, oldVersion)()
 | 
			
		||||
 | 
			
		||||
		t.Run("Git version with replay", func(t *testing.T) {
 | 
			
		||||
			require.NoError(t, git.CheckGitVersionAtLeast("2.44"))
 | 
			
		||||
				err = pull.Merge(t.Context(), pr, user1, gitRepo, repo_model.MergeStyleRebase, "", "CONFLICT", false)
 | 
			
		||||
				require.Error(t, err, "Merge should return an error due to conflict")
 | 
			
		||||
				assert.True(t, models.IsErrRebaseConflicts(err), "Merge error is not a conflict error")
 | 
			
		||||
			})
 | 
			
		||||
			t.Run("Git version with replay", func(t *testing.T) {
 | 
			
		||||
				defer tests.PrintCurrentTest(t)()
 | 
			
		||||
				if git.CheckGitVersionAtLeast("2.44") != nil {
 | 
			
		||||
					t.SkipNow()
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
			err = pull.Merge(t.Context(), pr, user1, gitRepo, repo_model.MergeStyleRebase, "", "CONFLICT", false)
 | 
			
		||||
			require.Error(t, err, "Merge should return an error due to conflict")
 | 
			
		||||
			assert.True(t, models.IsErrRebaseConflicts(err), "Merge error is not a conflict error")
 | 
			
		||||
				err = pull.Merge(t.Context(), pr, user1, gitRepo, repo_model.MergeStyleRebase, "", "CONFLICT", false)
 | 
			
		||||
				require.Error(t, err, "Merge should return an error due to conflict")
 | 
			
		||||
				assert.True(t, models.IsErrRebaseConflicts(err), "Merge error is not a conflict error")
 | 
			
		||||
			})
 | 
			
		||||
		})
 | 
			
		||||
		t.Run("Git version without replay", func(t *testing.T) {
 | 
			
		||||
			oldVersion, err := version.NewVersion("2.43.0")
 | 
			
		||||
			require.NoError(t, err)
 | 
			
		||||
			defer test.MockVariableValue(&git.GitVersion, oldVersion)()
 | 
			
		||||
 | 
			
		||||
			err = pull.Merge(t.Context(), pr, user1, gitRepo, repo_model.MergeStyleRebase, "", "CONFLICT", false)
 | 
			
		||||
		t.Run("Merge", func(t *testing.T) {
 | 
			
		||||
			defer tests.PrintCurrentTest(t)()
 | 
			
		||||
 | 
			
		||||
			err = pull.Merge(t.Context(), pr, user1, gitRepo, repo_model.MergeStyleMerge, "", "CONFLICT", false)
 | 
			
		||||
			require.Error(t, err, "Merge should return an error due to conflict")
 | 
			
		||||
			assert.True(t, models.IsErrRebaseConflicts(err), "Merge error is not a conflict error")
 | 
			
		||||
			assert.True(t, models.IsErrMergeConflicts(err), "Merge error is not a conflict error")
 | 
			
		||||
		})
 | 
			
		||||
 | 
			
		||||
		gitRepo.Close()
 | 
			
		||||
	})
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue