Skip to content

Commit 7b75603

Browse files
authored
Fix intermittent GPG Git test failure (#8968)
1 parent b41f303 commit 7b75603

File tree

2 files changed

+209
-126
lines changed

2 files changed

+209
-126
lines changed

integrations/git_helper_for_declarative_test.go

+4-2
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,10 @@ func allowLFSFilters() []string {
7979
return globalArgs
8080
}
8181

82-
func onGiteaRun(t *testing.T, callback func(*testing.T, *url.URL)) {
83-
prepareTestEnv(t, 1)
82+
func onGiteaRun(t *testing.T, callback func(*testing.T, *url.URL), prepare ...bool) {
83+
if len(prepare) == 0 || prepare[0] {
84+
prepareTestEnv(t, 1)
85+
}
8486
s := http.Server{
8587
Handler: mac,
8688
}

integrations/gpg_git_test.go

+205-124
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,7 @@ import (
2323
)
2424

2525
func TestGPGGit(t *testing.T) {
26-
onGiteaRun(t, testGPGGit)
27-
}
28-
29-
func testGPGGit(t *testing.T, u *url.URL) {
3026
username := "user2"
31-
baseAPITestContext := NewAPITestContext(t, username, "repo1")
32-
33-
u.Path = baseAPITestContext.GitPath()
3427

3528
// OK Set a new GPG home
3629
tmpDir, err := ioutil.TempDir("", "temp-gpg")
@@ -65,130 +58,218 @@ func testGPGGit(t *testing.T, u *url.URL) {
6558
setting.Repository.Signing.SigningEmail = "[email protected]"
6659
user := models.AssertExistsAndLoadBean(t, &models.User{Name: username}).(*models.User)
6760

68-
t.Run("Unsigned-Initial", func(t *testing.T) {
69-
PrintCurrentTest(t)
70-
setting.Repository.Signing.InitialCommit = []string{"never"}
71-
testCtx := NewAPITestContext(t, username, "initial-unsigned")
72-
t.Run("CreateRepository", doAPICreateRepository(testCtx, false))
73-
t.Run("CheckMasterBranchUnsigned", doAPIGetBranch(testCtx, "master", func(t *testing.T, branch api.Branch) {
74-
assert.NotNil(t, branch.Commit)
75-
assert.NotNil(t, branch.Commit.Verification)
76-
assert.False(t, branch.Commit.Verification.Verified)
77-
assert.Empty(t, branch.Commit.Verification.Signature)
78-
}))
79-
setting.Repository.Signing.CRUDActions = []string{"never"}
80-
t.Run("CreateCRUDFile-Never", crudActionCreateFile(
81-
t, testCtx, user, "master", "never", "unsigned-never.txt", func(t *testing.T, response api.FileResponse) {
82-
assert.False(t, response.Verification.Verified)
83-
}))
84-
t.Run("CreateCRUDFile-Never", crudActionCreateFile(
85-
t, testCtx, user, "never", "never2", "unsigned-never2.txt", func(t *testing.T, response api.FileResponse) {
86-
assert.False(t, response.Verification.Verified)
87-
}))
88-
setting.Repository.Signing.CRUDActions = []string{"parentsigned"}
89-
t.Run("CreateCRUDFile-ParentSigned", crudActionCreateFile(
90-
t, testCtx, user, "master", "parentsigned", "signed-parent.txt", func(t *testing.T, response api.FileResponse) {
91-
assert.False(t, response.Verification.Verified)
92-
}))
93-
t.Run("CreateCRUDFile-ParentSigned", crudActionCreateFile(
94-
t, testCtx, user, "parentsigned", "parentsigned2", "signed-parent2.txt", func(t *testing.T, response api.FileResponse) {
95-
assert.False(t, response.Verification.Verified)
96-
}))
97-
setting.Repository.Signing.CRUDActions = []string{"never"}
98-
t.Run("CreateCRUDFile-Never", crudActionCreateFile(
99-
t, testCtx, user, "parentsigned", "parentsigned-never", "unsigned-never2.txt", func(t *testing.T, response api.FileResponse) {
100-
assert.False(t, response.Verification.Verified)
101-
}))
102-
setting.Repository.Signing.CRUDActions = []string{"always"}
103-
t.Run("CreateCRUDFile-Always", crudActionCreateFile(
104-
t, testCtx, user, "master", "always", "signed-always.txt", func(t *testing.T, response api.FileResponse) {
105-
assert.True(t, response.Verification.Verified)
106-
assert.Equal(t, "[email protected]", response.Verification.Signer.Email)
107-
}))
108-
t.Run("CreateCRUDFile-ParentSigned-always", crudActionCreateFile(
109-
t, testCtx, user, "parentsigned", "parentsigned-always", "signed-parent2.txt", func(t *testing.T, response api.FileResponse) {
110-
assert.True(t, response.Verification.Verified)
111-
assert.Equal(t, "[email protected]", response.Verification.Signer.Email)
61+
setting.Repository.Signing.InitialCommit = []string{"never"}
62+
setting.Repository.Signing.CRUDActions = []string{"never"}
63+
64+
baseAPITestContext := NewAPITestContext(t, username, "repo1")
65+
onGiteaRun(t, func(t *testing.T, u *url.URL) {
66+
u.Path = baseAPITestContext.GitPath()
67+
68+
t.Run("Unsigned-Initial", func(t *testing.T) {
69+
PrintCurrentTest(t)
70+
testCtx := NewAPITestContext(t, username, "initial-unsigned")
71+
t.Run("CreateRepository", doAPICreateRepository(testCtx, false))
72+
t.Run("CheckMasterBranchUnsigned", doAPIGetBranch(testCtx, "master", func(t *testing.T, branch api.Branch) {
73+
assert.NotNil(t, branch.Commit)
74+
assert.NotNil(t, branch.Commit.Verification)
75+
assert.False(t, branch.Commit.Verification.Verified)
76+
assert.Empty(t, branch.Commit.Verification.Signature)
11277
}))
113-
setting.Repository.Signing.CRUDActions = []string{"parentsigned"}
114-
t.Run("CreateCRUDFile-Always-ParentSigned", crudActionCreateFile(
115-
t, testCtx, user, "always", "always-parentsigned", "signed-always-parentsigned.txt", func(t *testing.T, response api.FileResponse) {
116-
assert.True(t, response.Verification.Verified)
117-
assert.Equal(t, "[email protected]", response.Verification.Signer.Email)
78+
t.Run("CreateCRUDFile-Never", crudActionCreateFile(
79+
t, testCtx, user, "master", "never", "unsigned-never.txt", func(t *testing.T, response api.FileResponse) {
80+
assert.False(t, response.Verification.Verified)
81+
}))
82+
t.Run("CreateCRUDFile-Never", crudActionCreateFile(
83+
t, testCtx, user, "never", "never2", "unsigned-never2.txt", func(t *testing.T, response api.FileResponse) {
84+
assert.False(t, response.Verification.Verified)
85+
}))
86+
})
87+
}, false)
88+
setting.Repository.Signing.CRUDActions = []string{"parentsigned"}
89+
onGiteaRun(t, func(t *testing.T, u *url.URL) {
90+
u.Path = baseAPITestContext.GitPath()
91+
92+
t.Run("Unsigned-Initial-CRUD-ParentSigned", func(t *testing.T) {
93+
PrintCurrentTest(t)
94+
testCtx := NewAPITestContext(t, username, "initial-unsigned")
95+
t.Run("CreateCRUDFile-ParentSigned", crudActionCreateFile(
96+
t, testCtx, user, "master", "parentsigned", "signed-parent.txt", func(t *testing.T, response api.FileResponse) {
97+
assert.False(t, response.Verification.Verified)
98+
}))
99+
t.Run("CreateCRUDFile-ParentSigned", crudActionCreateFile(
100+
t, testCtx, user, "parentsigned", "parentsigned2", "signed-parent2.txt", func(t *testing.T, response api.FileResponse) {
101+
assert.False(t, response.Verification.Verified)
102+
}))
103+
})
104+
}, false)
105+
setting.Repository.Signing.CRUDActions = []string{"never"}
106+
onGiteaRun(t, func(t *testing.T, u *url.URL) {
107+
u.Path = baseAPITestContext.GitPath()
108+
109+
t.Run("Unsigned-Initial-CRUD-Never", func(t *testing.T) {
110+
PrintCurrentTest(t)
111+
testCtx := NewAPITestContext(t, username, "initial-unsigned")
112+
t.Run("CreateCRUDFile-Never", crudActionCreateFile(
113+
t, testCtx, user, "parentsigned", "parentsigned-never", "unsigned-never2.txt", func(t *testing.T, response api.FileResponse) {
114+
assert.False(t, response.Verification.Verified)
115+
}))
116+
})
117+
}, false)
118+
setting.Repository.Signing.CRUDActions = []string{"always"}
119+
onGiteaRun(t, func(t *testing.T, u *url.URL) {
120+
u.Path = baseAPITestContext.GitPath()
121+
122+
t.Run("Unsigned-Initial-CRUD-Always", func(t *testing.T) {
123+
PrintCurrentTest(t)
124+
testCtx := NewAPITestContext(t, username, "initial-unsigned")
125+
t.Run("CreateCRUDFile-Always", crudActionCreateFile(
126+
t, testCtx, user, "master", "always", "signed-always.txt", func(t *testing.T, response api.FileResponse) {
127+
assert.True(t, response.Verification.Verified)
128+
assert.Equal(t, "[email protected]", response.Verification.Signer.Email)
129+
}))
130+
t.Run("CreateCRUDFile-ParentSigned-always", crudActionCreateFile(
131+
t, testCtx, user, "parentsigned", "parentsigned-always", "signed-parent2.txt", func(t *testing.T, response api.FileResponse) {
132+
assert.True(t, response.Verification.Verified)
133+
assert.Equal(t, "[email protected]", response.Verification.Signer.Email)
134+
}))
135+
})
136+
}, false)
137+
setting.Repository.Signing.CRUDActions = []string{"parentsigned"}
138+
onGiteaRun(t, func(t *testing.T, u *url.URL) {
139+
u.Path = baseAPITestContext.GitPath()
140+
141+
t.Run("Unsigned-Initial-CRUD-ParentSigned", func(t *testing.T) {
142+
PrintCurrentTest(t)
143+
testCtx := NewAPITestContext(t, username, "initial-unsigned")
144+
t.Run("CreateCRUDFile-Always-ParentSigned", crudActionCreateFile(
145+
t, testCtx, user, "always", "always-parentsigned", "signed-always-parentsigned.txt", func(t *testing.T, response api.FileResponse) {
146+
assert.True(t, response.Verification.Verified)
147+
assert.Equal(t, "[email protected]", response.Verification.Signer.Email)
148+
}))
149+
})
150+
}, false)
151+
setting.Repository.Signing.InitialCommit = []string{"always"}
152+
onGiteaRun(t, func(t *testing.T, u *url.URL) {
153+
u.Path = baseAPITestContext.GitPath()
154+
155+
t.Run("AlwaysSign-Initial", func(t *testing.T) {
156+
PrintCurrentTest(t)
157+
testCtx := NewAPITestContext(t, username, "initial-always")
158+
t.Run("CreateRepository", doAPICreateRepository(testCtx, false))
159+
t.Run("CheckMasterBranchSigned", doAPIGetBranch(testCtx, "master", func(t *testing.T, branch api.Branch) {
160+
assert.NotNil(t, branch.Commit)
161+
assert.NotNil(t, branch.Commit.Verification)
162+
assert.True(t, branch.Commit.Verification.Verified)
163+
assert.Equal(t, "[email protected]", branch.Commit.Verification.Signer.Email)
118164
}))
119-
})
120-
t.Run("AlwaysSign-Initial", func(t *testing.T) {
121-
PrintCurrentTest(t)
122-
setting.Repository.Signing.InitialCommit = []string{"always"}
123-
testCtx := NewAPITestContext(t, username, "initial-always")
124-
t.Run("CreateRepository", doAPICreateRepository(testCtx, false))
125-
t.Run("CheckMasterBranchSigned", doAPIGetBranch(testCtx, "master", func(t *testing.T, branch api.Branch) {
126-
assert.NotNil(t, branch.Commit)
127-
assert.NotNil(t, branch.Commit.Verification)
128-
assert.True(t, branch.Commit.Verification.Verified)
129-
assert.Equal(t, "[email protected]", branch.Commit.Verification.Signer.Email)
130-
}))
131-
setting.Repository.Signing.CRUDActions = []string{"never"}
132-
t.Run("CreateCRUDFile-Never", crudActionCreateFile(
133-
t, testCtx, user, "master", "never", "unsigned-never.txt", func(t *testing.T, response api.FileResponse) {
134-
assert.False(t, response.Verification.Verified)
165+
})
166+
}, false)
167+
setting.Repository.Signing.CRUDActions = []string{"never"}
168+
onGiteaRun(t, func(t *testing.T, u *url.URL) {
169+
u.Path = baseAPITestContext.GitPath()
170+
171+
t.Run("AlwaysSign-Initial-CRUD-Never", func(t *testing.T) {
172+
PrintCurrentTest(t)
173+
testCtx := NewAPITestContext(t, username, "initial-always")
174+
t.Run("CreateCRUDFile-Never", crudActionCreateFile(
175+
t, testCtx, user, "master", "never", "unsigned-never.txt", func(t *testing.T, response api.FileResponse) {
176+
assert.False(t, response.Verification.Verified)
177+
}))
178+
})
179+
}, false)
180+
setting.Repository.Signing.CRUDActions = []string{"parentsigned"}
181+
onGiteaRun(t, func(t *testing.T, u *url.URL) {
182+
u.Path = baseAPITestContext.GitPath()
183+
184+
t.Run("AlwaysSign-Initial-CRUD-ParentSigned-On-Always", func(t *testing.T) {
185+
PrintCurrentTest(t)
186+
testCtx := NewAPITestContext(t, username, "initial-always")
187+
t.Run("CreateCRUDFile-ParentSigned", crudActionCreateFile(
188+
t, testCtx, user, "master", "parentsigned", "signed-parent.txt", func(t *testing.T, response api.FileResponse) {
189+
assert.True(t, response.Verification.Verified)
190+
assert.Equal(t, "[email protected]", response.Verification.Signer.Email)
191+
}))
192+
})
193+
}, false)
194+
setting.Repository.Signing.CRUDActions = []string{"always"}
195+
onGiteaRun(t, func(t *testing.T, u *url.URL) {
196+
u.Path = baseAPITestContext.GitPath()
197+
198+
t.Run("AlwaysSign-Initial-CRUD-Always", func(t *testing.T) {
199+
PrintCurrentTest(t)
200+
testCtx := NewAPITestContext(t, username, "initial-always")
201+
t.Run("CreateCRUDFile-Always", crudActionCreateFile(
202+
t, testCtx, user, "master", "always", "signed-always.txt", func(t *testing.T, response api.FileResponse) {
203+
assert.True(t, response.Verification.Verified)
204+
assert.Equal(t, "[email protected]", response.Verification.Signer.Email)
205+
}))
206+
207+
})
208+
}, false)
209+
var pr api.PullRequest
210+
setting.Repository.Signing.Merges = []string{"commitssigned"}
211+
onGiteaRun(t, func(t *testing.T, u *url.URL) {
212+
u.Path = baseAPITestContext.GitPath()
213+
214+
t.Run("UnsignedMerging", func(t *testing.T) {
215+
PrintCurrentTest(t)
216+
testCtx := NewAPITestContext(t, username, "initial-unsigned")
217+
var err error
218+
t.Run("CreatePullRequest", func(t *testing.T) {
219+
pr, err = doAPICreatePullRequest(testCtx, testCtx.Username, testCtx.Reponame, "master", "never2")(t)
220+
assert.NoError(t, err)
221+
})
222+
t.Run("MergePR", doAPIMergePullRequest(testCtx, testCtx.Username, testCtx.Reponame, pr.Index))
223+
t.Run("CheckMasterBranchUnsigned", doAPIGetBranch(testCtx, "master", func(t *testing.T, branch api.Branch) {
224+
assert.NotNil(t, branch.Commit)
225+
assert.NotNil(t, branch.Commit.Verification)
226+
assert.False(t, branch.Commit.Verification.Verified)
227+
assert.Empty(t, branch.Commit.Verification.Signature)
135228
}))
136-
setting.Repository.Signing.CRUDActions = []string{"parentsigned"}
137-
t.Run("CreateCRUDFile-ParentSigned", crudActionCreateFile(
138-
t, testCtx, user, "master", "parentsigned", "signed-parent.txt", func(t *testing.T, response api.FileResponse) {
139-
assert.True(t, response.Verification.Verified)
140-
assert.Equal(t, "[email protected]", response.Verification.Signer.Email)
229+
})
230+
}, false)
231+
setting.Repository.Signing.Merges = []string{"basesigned"}
232+
onGiteaRun(t, func(t *testing.T, u *url.URL) {
233+
u.Path = baseAPITestContext.GitPath()
234+
235+
t.Run("BaseSignedMerging", func(t *testing.T) {
236+
PrintCurrentTest(t)
237+
testCtx := NewAPITestContext(t, username, "initial-unsigned")
238+
var err error
239+
t.Run("CreatePullRequest", func(t *testing.T) {
240+
pr, err = doAPICreatePullRequest(testCtx, testCtx.Username, testCtx.Reponame, "master", "parentsigned2")(t)
241+
assert.NoError(t, err)
242+
})
243+
t.Run("MergePR", doAPIMergePullRequest(testCtx, testCtx.Username, testCtx.Reponame, pr.Index))
244+
t.Run("CheckMasterBranchUnsigned", doAPIGetBranch(testCtx, "master", func(t *testing.T, branch api.Branch) {
245+
assert.NotNil(t, branch.Commit)
246+
assert.NotNil(t, branch.Commit.Verification)
247+
assert.False(t, branch.Commit.Verification.Verified)
248+
assert.Empty(t, branch.Commit.Verification.Signature)
141249
}))
142-
setting.Repository.Signing.CRUDActions = []string{"always"}
143-
t.Run("CreateCRUDFile-Always", crudActionCreateFile(
144-
t, testCtx, user, "master", "always", "signed-always.txt", func(t *testing.T, response api.FileResponse) {
145-
assert.True(t, response.Verification.Verified)
146-
assert.Equal(t, "[email protected]", response.Verification.Signer.Email)
250+
})
251+
}, false)
252+
setting.Repository.Signing.Merges = []string{"commitssigned"}
253+
onGiteaRun(t, func(t *testing.T, u *url.URL) {
254+
u.Path = baseAPITestContext.GitPath()
255+
256+
t.Run("CommitsSignedMerging", func(t *testing.T) {
257+
PrintCurrentTest(t)
258+
testCtx := NewAPITestContext(t, username, "initial-unsigned")
259+
var err error
260+
t.Run("CreatePullRequest", func(t *testing.T) {
261+
pr, err = doAPICreatePullRequest(testCtx, testCtx.Username, testCtx.Reponame, "master", "always-parentsigned")(t)
262+
assert.NoError(t, err)
263+
})
264+
t.Run("MergePR", doAPIMergePullRequest(testCtx, testCtx.Username, testCtx.Reponame, pr.Index))
265+
t.Run("CheckMasterBranchUnsigned", doAPIGetBranch(testCtx, "master", func(t *testing.T, branch api.Branch) {
266+
assert.NotNil(t, branch.Commit)
267+
assert.NotNil(t, branch.Commit.Verification)
268+
assert.True(t, branch.Commit.Verification.Verified)
147269
}))
148270

149-
})
150-
t.Run("UnsignedMerging", func(t *testing.T) {
151-
PrintCurrentTest(t)
152-
testCtx := NewAPITestContext(t, username, "initial-unsigned")
153-
var pr api.PullRequest
154-
var err error
155-
t.Run("CreatePullRequest", func(t *testing.T) {
156-
pr, err = doAPICreatePullRequest(testCtx, testCtx.Username, testCtx.Reponame, "master", "never2")(t)
157-
assert.NoError(t, err)
158-
})
159-
setting.Repository.Signing.Merges = []string{"commitssigned"}
160-
t.Run("MergePR", doAPIMergePullRequest(testCtx, testCtx.Username, testCtx.Reponame, pr.Index))
161-
t.Run("CheckMasterBranchUnsigned", doAPIGetBranch(testCtx, "master", func(t *testing.T, branch api.Branch) {
162-
assert.NotNil(t, branch.Commit)
163-
assert.NotNil(t, branch.Commit.Verification)
164-
assert.False(t, branch.Commit.Verification.Verified)
165-
assert.Empty(t, branch.Commit.Verification.Signature)
166-
}))
167-
setting.Repository.Signing.Merges = []string{"basesigned"}
168-
t.Run("CreatePullRequest", func(t *testing.T) {
169-
pr, err = doAPICreatePullRequest(testCtx, testCtx.Username, testCtx.Reponame, "master", "parentsigned2")(t)
170-
assert.NoError(t, err)
171-
})
172-
t.Run("MergePR", doAPIMergePullRequest(testCtx, testCtx.Username, testCtx.Reponame, pr.Index))
173-
t.Run("CheckMasterBranchUnsigned", doAPIGetBranch(testCtx, "master", func(t *testing.T, branch api.Branch) {
174-
assert.NotNil(t, branch.Commit)
175-
assert.NotNil(t, branch.Commit.Verification)
176-
assert.False(t, branch.Commit.Verification.Verified)
177-
assert.Empty(t, branch.Commit.Verification.Signature)
178-
}))
179-
setting.Repository.Signing.Merges = []string{"commitssigned"}
180-
t.Run("CreatePullRequest", func(t *testing.T) {
181-
pr, err = doAPICreatePullRequest(testCtx, testCtx.Username, testCtx.Reponame, "master", "always-parentsigned")(t)
182-
assert.NoError(t, err)
183271
})
184-
t.Run("MergePR", doAPIMergePullRequest(testCtx, testCtx.Username, testCtx.Reponame, pr.Index))
185-
t.Run("CheckMasterBranchUnsigned", doAPIGetBranch(testCtx, "master", func(t *testing.T, branch api.Branch) {
186-
assert.NotNil(t, branch.Commit)
187-
assert.NotNil(t, branch.Commit.Verification)
188-
assert.True(t, branch.Commit.Verification.Verified)
189-
}))
190-
191-
})
272+
}, false)
192273
}
193274

194275
func crudActionCreateFile(t *testing.T, ctx APITestContext, user *models.User, from, to, path string, callback ...func(*testing.T, api.FileResponse)) func(*testing.T) {

0 commit comments

Comments
 (0)