Browse Source

Yet another attempt to fix the intermittent failure of gpg git test (#9146)

* Yet another attempt to fix the race in gpg_git_test

* add some fail nows

* Need to set preparetestenv

* Ensure that http messages go to the correct server
tags/v1.11.0-rc1
zeripath 4 years ago
parent
commit
9d9e6ac411
2 changed files with 33 additions and 5 deletions
  1. 1
    0
      integrations/git_helper_for_declarative_test.go
  2. 32
    5
      integrations/gpg_git_test.go

+ 1
- 0
integrations/git_helper_for_declarative_test.go View File

assert.NoError(t, err) assert.NoError(t, err)
listener, err := net.Listen("tcp", u.Host) listener, err := net.Listen("tcp", u.Host)
assert.NoError(t, err) assert.NoError(t, err)
u.Host = listener.Addr().String()


defer func() { defer func() {
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Minute) ctx, cancel := context.WithTimeout(context.Background(), 2*time.Minute)

+ 32
- 5
integrations/gpg_git_test.go View File

) )


func TestGPGGit(t *testing.T) { func TestGPGGit(t *testing.T) {
prepareTestEnv(t)
username := "user2" username := "user2"


// OK Set a new GPG home // OK Set a new GPG home
t.Run("CreateCRUDFile-Always", crudActionCreateFile( t.Run("CreateCRUDFile-Always", crudActionCreateFile(
t, testCtx, user, "master", "always", "signed-always.txt", func(t *testing.T, response api.FileResponse) { t, testCtx, user, "master", "always", "signed-always.txt", func(t *testing.T, response api.FileResponse) {
assert.True(t, response.Verification.Verified) assert.True(t, response.Verification.Verified)
if !response.Verification.Verified {
t.FailNow()
return
}
assert.Equal(t, "gitea@fake.local", response.Verification.Signer.Email) assert.Equal(t, "gitea@fake.local", response.Verification.Signer.Email)
})) }))
t.Run("CreateCRUDFile-ParentSigned-always", crudActionCreateFile( t.Run("CreateCRUDFile-ParentSigned-always", crudActionCreateFile(
t, testCtx, user, "parentsigned", "parentsigned-always", "signed-parent2.txt", func(t *testing.T, response api.FileResponse) { t, testCtx, user, "parentsigned", "parentsigned-always", "signed-parent2.txt", func(t *testing.T, response api.FileResponse) {
assert.True(t, response.Verification.Verified) assert.True(t, response.Verification.Verified)
if !response.Verification.Verified {
t.FailNow()
return
}
assert.Equal(t, "gitea@fake.local", response.Verification.Signer.Email) assert.Equal(t, "gitea@fake.local", response.Verification.Signer.Email)
})) }))
}) })
t.Run("CreateCRUDFile-Always-ParentSigned", crudActionCreateFile( t.Run("CreateCRUDFile-Always-ParentSigned", crudActionCreateFile(
t, testCtx, user, "always", "always-parentsigned", "signed-always-parentsigned.txt", func(t *testing.T, response api.FileResponse) { t, testCtx, user, "always", "always-parentsigned", "signed-always-parentsigned.txt", func(t *testing.T, response api.FileResponse) {
assert.True(t, response.Verification.Verified) assert.True(t, response.Verification.Verified)
if !response.Verification.Verified {
t.FailNow()
return
}
assert.Equal(t, "gitea@fake.local", response.Verification.Signer.Email) assert.Equal(t, "gitea@fake.local", response.Verification.Signer.Email)
})) }))
}) })
assert.NotNil(t, branch.Commit) assert.NotNil(t, branch.Commit)
assert.NotNil(t, branch.Commit.Verification) assert.NotNil(t, branch.Commit.Verification)
assert.True(t, branch.Commit.Verification.Verified) assert.True(t, branch.Commit.Verification.Verified)
if !branch.Commit.Verification.Verified {
t.FailNow()
return
}
assert.Equal(t, "gitea@fake.local", branch.Commit.Verification.Signer.Email) assert.Equal(t, "gitea@fake.local", branch.Commit.Verification.Signer.Email)
})) }))
}) })


t.Run("AlwaysSign-Initial-CRUD-Never", func(t *testing.T) { t.Run("AlwaysSign-Initial-CRUD-Never", func(t *testing.T) {
defer PrintCurrentTest(t)() defer PrintCurrentTest(t)()
testCtx := NewAPITestContext(t, username, "initial-always")
testCtx := NewAPITestContext(t, username, "initial-always-never")
t.Run("CreateRepository", doAPICreateRepository(testCtx, false))
t.Run("CreateCRUDFile-Never", crudActionCreateFile( t.Run("CreateCRUDFile-Never", crudActionCreateFile(
t, testCtx, user, "master", "never", "unsigned-never.txt", func(t *testing.T, response api.FileResponse) { t, testCtx, user, "master", "never", "unsigned-never.txt", func(t *testing.T, response api.FileResponse) {
assert.False(t, response.Verification.Verified) assert.False(t, response.Verification.Verified)
setting.Repository.Signing.CRUDActions = []string{"parentsigned"} setting.Repository.Signing.CRUDActions = []string{"parentsigned"}
onGiteaRun(t, func(t *testing.T, u *url.URL) { onGiteaRun(t, func(t *testing.T, u *url.URL) {
u.Path = baseAPITestContext.GitPath() u.Path = baseAPITestContext.GitPath()

t.Run("AlwaysSign-Initial-CRUD-ParentSigned-On-Always", func(t *testing.T) { t.Run("AlwaysSign-Initial-CRUD-ParentSigned-On-Always", func(t *testing.T) {
defer PrintCurrentTest(t)() defer PrintCurrentTest(t)()
testCtx := NewAPITestContext(t, username, "initial-always")
testCtx := NewAPITestContext(t, username, "initial-always-parent")
t.Run("CreateRepository", doAPICreateRepository(testCtx, false))
t.Run("CreateCRUDFile-ParentSigned", crudActionCreateFile( t.Run("CreateCRUDFile-ParentSigned", crudActionCreateFile(
t, testCtx, user, "master", "parentsigned", "signed-parent.txt", func(t *testing.T, response api.FileResponse) { t, testCtx, user, "master", "parentsigned", "signed-parent.txt", func(t *testing.T, response api.FileResponse) {
assert.True(t, response.Verification.Verified) assert.True(t, response.Verification.Verified)
if !response.Verification.Verified {
t.FailNow()
return
}
assert.Equal(t, "gitea@fake.local", response.Verification.Signer.Email) assert.Equal(t, "gitea@fake.local", response.Verification.Signer.Email)
})) }))
}) })


t.Run("AlwaysSign-Initial-CRUD-Always", func(t *testing.T) { t.Run("AlwaysSign-Initial-CRUD-Always", func(t *testing.T) {
defer PrintCurrentTest(t)() defer PrintCurrentTest(t)()
testCtx := NewAPITestContext(t, username, "initial-always")
testCtx := NewAPITestContext(t, username, "initial-always-always")
t.Run("CreateRepository", doAPICreateRepository(testCtx, false))
t.Run("CreateCRUDFile-Always", crudActionCreateFile( t.Run("CreateCRUDFile-Always", crudActionCreateFile(
t, testCtx, user, "master", "always", "signed-always.txt", func(t *testing.T, response api.FileResponse) { t, testCtx, user, "master", "always", "signed-always.txt", func(t *testing.T, response api.FileResponse) {
assert.True(t, response.Verification.Verified) assert.True(t, response.Verification.Verified)
if !response.Verification.Verified {
t.FailNow()
return
}
assert.Equal(t, "gitea@fake.local", response.Verification.Signer.Email) assert.Equal(t, "gitea@fake.local", response.Verification.Signer.Email)
})) }))


Email: user.Email, Email: user.Email,
}, },
}, },
Content: base64.StdEncoding.EncodeToString([]byte("This is new text")),
Content: base64.StdEncoding.EncodeToString([]byte(fmt.Sprintf("This is new text for %s", path))),
}, callback...) }, callback...)
} }



Loading…
Cancel
Save