Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitaly.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSami Hiltunen <shiltunen@gitlab.com>2023-07-12 16:50:26 +0300
committerSami Hiltunen <shiltunen@gitlab.com>2023-07-12 17:28:33 +0300
commitf532c0e13561ff4b68b597f2e4293adcc3db2884 (patch)
treece4749814e42f2cf5d2f618ae81300ac56ff92df
parent0edce29afa26faf93c63a1f9ef451349709a892b (diff)
Don't assert hook path in TestBranchHookOutput
TestBranchHookOutput is asserting the hooks path in an error message. The hook path is subject to change and should not be asserted for equality. Fix the test to not assert the exact path.
-rw-r--r--internal/gitaly/service/operations/branches_test.go80
1 files changed, 43 insertions, 37 deletions
diff --git a/internal/gitaly/service/operations/branches_test.go b/internal/gitaly/service/operations/branches_test.go
index 970db09b5..4458de296 100644
--- a/internal/gitaly/service/operations/branches_test.go
+++ b/internal/gitaly/service/operations/branches_test.go
@@ -984,51 +984,49 @@ func TestBranchHookOutput(t *testing.T) {
ctx, cfg, repo, repoPath, client := setupOperationsService(t, ctx)
testCases := []struct {
- desc string
- hookContent string
- output func(hookPath string) string
- expectedStderr string
- expectedStdout string
+ desc string
+ hookContent string
+ expectedErrorRegexp string
+ expectedStderr string
+ expectedStdout string
}{
{
- desc: "empty stdout and empty stderr",
- hookContent: "#!/bin/sh\nexit 1",
- output: func(hookPath string) string {
- return fmt.Sprintf("executing custom hooks: error executing %q: exit status 1", hookPath)
- },
+ desc: "empty stdout and empty stderr",
+ hookContent: "#!/bin/sh\nexit 1",
+ expectedErrorRegexp: `executing custom hooks: error executing .+: exit status 1`,
},
{
- desc: "empty stdout and some stderr",
- hookContent: "#!/bin/sh\necho stderr >&2\nexit 1",
- output: func(string) string { return "stderr\n" },
- expectedStderr: "stderr\n",
+ desc: "empty stdout and some stderr",
+ hookContent: "#!/bin/sh\necho stderr >&2\nexit 1",
+ expectedErrorRegexp: "stderr\n",
+ expectedStderr: "stderr\n",
},
{
- desc: "some stdout and empty stderr",
- hookContent: "#!/bin/sh\necho stdout\nexit 1",
- output: func(string) string { return "stdout\n" },
- expectedStdout: "stdout\n",
+ desc: "some stdout and empty stderr",
+ hookContent: "#!/bin/sh\necho stdout\nexit 1",
+ expectedErrorRegexp: "stdout\n",
+ expectedStdout: "stdout\n",
},
{
- desc: "some stdout and some stderr",
- hookContent: "#!/bin/sh\necho stdout\necho stderr >&2\nexit 1",
- output: func(string) string { return "stderr\n" },
- expectedStderr: "stderr\n",
- expectedStdout: "stdout\n",
+ desc: "some stdout and some stderr",
+ hookContent: "#!/bin/sh\necho stdout\necho stderr >&2\nexit 1",
+ expectedErrorRegexp: "stderr\n",
+ expectedStderr: "stderr\n",
+ expectedStdout: "stdout\n",
},
{
- desc: "whitespace stdout and some stderr",
- hookContent: "#!/bin/sh\necho ' '\necho stderr >&2\nexit 1",
- output: func(string) string { return "stderr\n" },
- expectedStderr: "stderr\n",
- expectedStdout: " \n",
+ desc: "whitespace stdout and some stderr",
+ hookContent: "#!/bin/sh\necho ' '\necho stderr >&2\nexit 1",
+ expectedErrorRegexp: "stderr\n",
+ expectedStderr: "stderr\n",
+ expectedStdout: " \n",
},
{
- desc: "some stdout and whitespace stderr",
- hookContent: "#!/bin/sh\necho stdout\necho ' ' >&2\nexit 1",
- output: func(string) string { return "stdout\n" },
- expectedStderr: " \n",
- expectedStdout: "stdout\n",
+ desc: "some stdout and whitespace stderr",
+ hookContent: "#!/bin/sh\necho stdout\necho ' ' >&2\nexit 1",
+ expectedErrorRegexp: "stdout\n",
+ expectedStderr: " \n",
+ expectedStdout: "stdout\n",
},
}
@@ -1060,8 +1058,7 @@ func TestBranchHookOutput(t *testing.T) {
User: gittest.TestUser,
}
- hookFilename := gittest.WriteCustomHook(t, repoPath, hookTestCase.hookName, []byte(testCase.hookContent))
- expectedError := testCase.output(hookFilename)
+ gittest.WriteCustomHook(t, repoPath, hookTestCase.hookName, []byte(testCase.hookContent))
_, err := client.UserCreateBranch(ctx, createRequest)
@@ -1081,7 +1078,16 @@ func TestBranchHookOutput(t *testing.T) {
defer gittest.Exec(t, cfg, "-C", repoPath, "branch", "-d", branchNameInput)
deleteResponse, err := client.UserDeleteBranch(ctx, deleteRequest)
- testhelper.RequireGrpcError(t, structerr.NewPermissionDenied("deletion denied by custom hooks: running %s hooks: %s", hookTestCase.hookName, expectedError).WithDetail(
+
+ actualStatus, ok := status.FromError(err)
+ require.True(t, ok)
+
+ statusWithoutMessage := actualStatus.Proto()
+ statusWithoutMessage.Message = "OVERRIDDEN"
+
+ // Assert the message separately as it references the hook path which may change and fail the equality check.
+ require.Regexp(t, fmt.Sprintf(`^rpc error: code = PermissionDenied desc = deletion denied by custom hooks: running %s hooks: %s$`, hookTestCase.hookName, testCase.expectedErrorRegexp), err)
+ testhelper.RequireGrpcError(t, structerr.NewPermissionDenied(statusWithoutMessage.Message).WithDetail(
&gitalypb.UserDeleteBranchError{
Error: &gitalypb.UserDeleteBranchError_CustomHook{
CustomHook: &gitalypb.CustomHookError{
@@ -1091,7 +1097,7 @@ func TestBranchHookOutput(t *testing.T) {
},
},
},
- ), err)
+ ), status.ErrorProto(statusWithoutMessage))
require.Nil(t, deleteResponse)
})
}