diff options
-rw-r--r-- | user/gitlab-runner/APKBUILD | 87 | ||||
-rw-r--r-- | user/gitlab-runner/clean-tmpdirs.patch | 21 | ||||
-rw-r--r-- | user/gitlab-runner/disable-crap.patch | 21 | ||||
-rw-r--r-- | user/gitlab-runner/gccgo.patch | 67 | ||||
-rw-r--r-- | user/gitlab-runner/gitlab-runner.confd | 17 | ||||
-rw-r--r-- | user/gitlab-runner/gitlab-runner.initd | 45 | ||||
-rw-r--r-- | user/gitlab-runner/gitlab-runner.pre-install | 7 | ||||
-rw-r--r-- | user/gitlab-runner/posix-shell-escape.patch | 139 | ||||
-rw-r--r-- | user/gitlab-runner/posix-shell.patch | 30 | ||||
-rw-r--r-- | user/gitlab-runner/tests.patch | 63 |
10 files changed, 497 insertions, 0 deletions
diff --git a/user/gitlab-runner/APKBUILD b/user/gitlab-runner/APKBUILD new file mode 100644 index 000000000..e2912e150 --- /dev/null +++ b/user/gitlab-runner/APKBUILD @@ -0,0 +1,87 @@ +# Maintainer: Max Rees <maxcrees@me.com> +pkgname=gitlab-runner +pkgver=12.1.0 +pkgrel=0 +_testver=91956efe +_branch="${pkgver%.*}" +_branch="${pkgver%%.*}-${_branch#*.}-stable" +pkgdesc="GitLab runner for CI/CD jobs" +url="https://docs.gitlab.com/runner/" +arch="all" +pkgusers="gitlab-runner" +pkggroups="gitlab-runner" +options="!check" # Tests require network (git cloning) +license="MIT" +depends="" +makedepends="gcc-go" +subpackages="$pkgname-openrc" +install="$pkgname.pre-install" +source="https://gitlab.com/gitlab-org/gitlab-runner/-/archive/v$pkgver/gitlab-runner-v$pkgver.tar.gz + https://dev.sick.bike/dist/gitlab-test-$_testver.tar.gz + $pkgname.confd + $pkgname.initd + clean-tmpdirs.patch + disable-crap.patch + gccgo.patch + posix-shell.patch + posix-shell-escape.patch + tests.patch + " +builddir="$srcdir/$pkgname-v$pkgver" + +unpack() { + default_unpack + mkdir "$builddir"/tmp + mv gitlab-test "$builddir"/tmp +} + +_make() { + make "$@" VERSION="$pkgver" REVISION="v$pkgver" BRANCH="$_branch" +} + +build() { + _make build_simple +} + +check() { + # Even with network access and a clean chroot, there are some + # tests that fail: + # + # gitlab.com/gitlab-org/gitlab-runner/commands/helpers : + # TestCacheArchiverAddingUntrackedFiles + # TestCacheArchiverAddingUntrackedUnicodeFiles + + # gitlab.com/gitlab-org/gitlab-runner/executors/shell : + # TestBuildWithGitStrategyFetchWithLFS + # TestBuildWithGitStrategyCloneWithLFS + # TestBuildWithSubmoduleLFSPullsLFSObject + # + # gitlab.com/gitlab-org/gitlab-runner/network (error: use of + # undefined type ‘RegisterRunnerParameters’) + _make test +} + +package() { + install -Dm755 out/binaries/gitlab-runner \ + "$pkgdir"/usr/bin/gitlab-runner + install -dm750 -g gitlab-runner \ + "$pkgdir"/etc/gitlab-runner + install -dm750 -o gitlab-runner -g gitlab-runner \ + "$pkgdir"/var/lib/gitlab-runner + + install -Dm644 "$srcdir"/$pkgname.confd \ + "$pkgdir"/etc/conf.d/$pkgname + install -Dm755 "$srcdir"/$pkgname.initd \ + "$pkgdir"/etc/init.d/$pkgname +} + +sha512sums="1b3f06b7000252631bec04a58474dda826b0fb8d28c4144051a231fba5ef0c5c4b6e0f9ca6bdf9bf9b16b9117cbcf6385eb7bac85bda7b9f99de4300cbcc2066 gitlab-runner-v12.1.0.tar.gz +7bccab81aa1cb88c6a0f83a6d3dfc509e6f9ecb4d0168a5b30cc4e8fdd823294b95fe3633e09757905466f83bb3bf73b1d28fac475dff2dc3164604db4b5b995 gitlab-test-91956efe.tar.gz +f8a0c7e77cd563d7e5b4fb2319181ceab8de44c555cefa4803e985ad3ac6a9fea7bca469d80b28974edcfb65f2095d019bfdf0abd8a3221464276a8d89debc0d gitlab-runner.confd +fccb17aec519c1167126b84b987b0d42a3cb6b220d7fffe7ba2cf35a158bd63eb170bbe5cb2584a361da2d086b0b131b6a56e7be62d7f3570db234492f1f4e3c gitlab-runner.initd +f17a6b5053933d83d90272be7e98d4abf8d63e8a9c5ad30bbb61a29dbfa1e1b55421ba14be9f7db17cae30b2ff04efcb5da68543a2fa3d0e3e1882bc128cac06 clean-tmpdirs.patch +a32b7a6fa28c7f5bcb505308e615f17de179c15ce8c2ef73078143204195e36d99b18489114ce694c3d821378c1e9ccb26a999a50372b97df163e2512080f07e disable-crap.patch +1dd1d541c7bcae4b45c5bdd8dc2b179afe502ffff6350d6d22d483749bc43a59da2ddffb8bc18d02fa31169c0f6a48d86670905a6a112498e873b38e7dca44a5 gccgo.patch +444adec507c5eebcfae268f2f475d29316119f30750f06877a91dff56942d0e4d34ed3011b774b0d7acd59acfe2ddbe75082b3cd5aebd72ddb4703fd083ad301 posix-shell.patch +05d12046448c79a12bf92974089ff97781304083f7bf35abb0b0c0f990c536bd6ff51652e16035a38e4ba5620dcad6e051ecdf4a80eb62039a15371073e525b5 posix-shell-escape.patch +dae9c3f86fdf21bd41202fc2c0bc7dd764078ea9215d7ddbac1f7bc47b0943f7a912250a3006122f74ed50052378ed2c946eefe5c1ce8400cd682b183221025a tests.patch" diff --git a/user/gitlab-runner/clean-tmpdirs.patch b/user/gitlab-runner/clean-tmpdirs.patch new file mode 100644 index 000000000..89efd7a22 --- /dev/null +++ b/user/gitlab-runner/clean-tmpdirs.patch @@ -0,0 +1,21 @@ +Backport of: https://gitlab.com/gitlab-org/gitlab-runner/-/merge_requests/1978 + +--- gitlab-runner-v12.1.0/executors/custom/executor.go 2019-07-19 12:13:32.000000000 +0000 ++++ gitlab-runner-v12.1.0/executors/custom/executor.go 2020-04-27 00:19:46.613372635 +0000 +@@ -7,6 +7,7 @@ import ( + "fmt" + "io" + "io/ioutil" ++ "os" + "path/filepath" + + "github.com/sirupsen/logrus" +@@ -216,6 +217,8 @@ func (e *executor) Cleanup() { + return + } + ++ defer os.RemoveAll(e.tempDir) ++ + // nothing to do, as there's no cleanup_script + if e.config.CleanupExec == "" { + return diff --git a/user/gitlab-runner/disable-crap.patch b/user/gitlab-runner/disable-crap.patch new file mode 100644 index 000000000..b375934fc --- /dev/null +++ b/user/gitlab-runner/disable-crap.patch @@ -0,0 +1,21 @@ +--- gitlab-runner-v12.1.0/main.go 2019-07-19 12:13:32.000000000 +0000 ++++ gitlab-runner-v12.1.0/main.go 2020-03-04 22:28:31.741878923 +0000 +@@ -11,18 +11,11 @@ import ( + "gitlab.com/gitlab-org/gitlab-runner/helpers/cli" + "gitlab.com/gitlab-org/gitlab-runner/log" + +- _ "gitlab.com/gitlab-org/gitlab-runner/cache/gcs" +- _ "gitlab.com/gitlab-org/gitlab-runner/cache/s3" + _ "gitlab.com/gitlab-org/gitlab-runner/commands" + _ "gitlab.com/gitlab-org/gitlab-runner/commands/helpers" + _ "gitlab.com/gitlab-org/gitlab-runner/executors/custom" +- _ "gitlab.com/gitlab-org/gitlab-runner/executors/docker" +- _ "gitlab.com/gitlab-org/gitlab-runner/executors/docker/machine" +- _ "gitlab.com/gitlab-org/gitlab-runner/executors/kubernetes" +- _ "gitlab.com/gitlab-org/gitlab-runner/executors/parallels" + _ "gitlab.com/gitlab-org/gitlab-runner/executors/shell" + _ "gitlab.com/gitlab-org/gitlab-runner/executors/ssh" +- _ "gitlab.com/gitlab-org/gitlab-runner/executors/virtualbox" + _ "gitlab.com/gitlab-org/gitlab-runner/shells" + ) + diff --git a/user/gitlab-runner/gccgo.patch b/user/gitlab-runner/gccgo.patch new file mode 100644 index 000000000..217fb8331 --- /dev/null +++ b/user/gitlab-runner/gccgo.patch @@ -0,0 +1,67 @@ +* does not support -X ldflag: https://github.com/golang/go/issues/25183 +* does not support -cover testflag +* needs CGO to be enabled to build syscall module +* wants -gccgoflags, not -ldflags +* don't test stuff we've disabled + +--- gitlab-runner-v12.1.0/Makefile 2019-07-19 12:13:32.000000000 +0000 ++++ gitlab-runner-v12.1.0/Makefile 2020-04-26 23:58:20.823352305 +0000 +@@ -4,7 +4,6 @@ export VERSION := $(shell ./ci/version) + REVISION := $(shell git rev-parse --short=8 HEAD || echo unknown) + BRANCH := $(shell git show-ref | grep "$(REVISION)" | grep -v HEAD | awk '{print $$2}' | sed 's|refs/remotes/origin/||' | sed 's|refs/heads/||' | sort | head -n 1) + BUILT := $(shell date -u +%Y-%m-%dT%H:%M:%S%z) +-export TESTFLAGS ?= -cover + + LATEST_STABLE_TAG := $(shell git -c versionsort.prereleaseSuffix="-rc" -c versionsort.prereleaseSuffix="-RC" tag -l "v*.*.*" --sort=-v:refname | awk '!/rc/' | head -n 1) + export IS_LATEST := +@@ -45,14 +44,11 @@ export PATH := $(GOPATH_BIN):$(PATH) + + # Packages in vendor/ are included in ./... + # https://github.com/golang/go/issues/11659 +-export OUR_PACKAGES ?= $(subst _$(BUILD_DIR),$(PKG),$(shell go list ./... | grep -v '/vendor/')) ++export OUR_PACKAGES ?= $(subst _$(BUILD_DIR),$(PKG),$(shell go list ./... | grep -ve '/vendor/' -e '/cache/gcs' -e '/cache/s3' -e '/docker' -e '/kubernetes' -e '/parallels' -e '/virtualbox')) + +-GO_LDFLAGS ?= -X $(COMMON_PACKAGE_NAMESPACE).NAME=$(PACKAGE_NAME) -X $(COMMON_PACKAGE_NAMESPACE).VERSION=$(VERSION) \ +- -X $(COMMON_PACKAGE_NAMESPACE).REVISION=$(REVISION) -X $(COMMON_PACKAGE_NAMESPACE).BUILT=$(BUILT) \ +- -X $(COMMON_PACKAGE_NAMESPACE).BRANCH=$(BRANCH) \ +- -s -w ++GO_LDFLAGS ?= -s -w + GO_FILES ?= $(shell find . -name '*.go' | grep -v './.gopath/') +-export CGO_ENABLED ?= 0 ++export CGO_ENABLED ?= 1 + + + # Development Tools +@@ -114,7 +110,7 @@ build: $(GOX) + build_simple: $(GOPATH_SETUP) + # Building $(NAME) in version $(VERSION) for current platform + go build \ +- -ldflags "$(GO_LDFLAGS)" \ ++ -gccgoflags "$(GO_LDFLAGS)" \ + -o "out/binaries/$(NAME)" \ + $(PKG) + +@@ -123,7 +119,7 @@ build_current: helper-docker build_simpl + check_race_conditions: + @./scripts/check_race_conditions $(OUR_PACKAGES) + +-test: $(PKG_BUILD_DIR) helper-docker ++test: $(PKG_BUILD_DIR) + go test $(OUR_PACKAGES) $(TESTFLAGS) + + parallel_test_prepare: $(GOPATH_SETUP) +--- gitlab-runner-v12.1.0/common/version.go 2019-07-19 12:13:32.000000000 +0000 ++++ gitlab-runner-v12.1.0/common/version.go 2020-04-27 00:57:04.923408027 +0000 +@@ -9,9 +9,9 @@ import ( + ) + + var NAME = "gitlab-runner" +-var VERSION = "development version" +-var REVISION = "HEAD" +-var BRANCH = "HEAD" ++var VERSION = "12.1.0" ++var REVISION = "v12.1.0" ++var BRANCH = "12-1-stable" + var BUILT = "unknown" + + var AppVersion AppVersionInfo diff --git a/user/gitlab-runner/gitlab-runner.confd b/user/gitlab-runner/gitlab-runner.confd new file mode 100644 index 000000000..05a3ac1bb --- /dev/null +++ b/user/gitlab-runner/gitlab-runner.confd @@ -0,0 +1,17 @@ +#export CONFIG_FILE="/etc/gitlab-runner/config.toml" +#command_args="--working-directory /var/lib/gitlab-runner" +#logfile="/var/log/gitlab-runner.log" + +# Time to wait (in seconds) when gracefully stopping before forcefully +# stopping. +#timeout="300" + +# Time to wait (in seconds) when forcefully stopping the server before +# giving up. The runner can be a little slower than the OpenRC default +# of 5 seconds to stop when jobs are running. +#retry="60" + +# Run user service (default): +#command_user="gitlab-runner:gitlab-runner" +# Run system service: +#command_user="root:root" diff --git a/user/gitlab-runner/gitlab-runner.initd b/user/gitlab-runner/gitlab-runner.initd new file mode 100644 index 000000000..1fc47410c --- /dev/null +++ b/user/gitlab-runner/gitlab-runner.initd @@ -0,0 +1,45 @@ +#!/sbin/openrc-run + +: "${CONFIG_FILE:=/etc/gitlab-runner/config.toml}" +: "${logfile:=/var/log/gitlab-runner.log}" +: "${timeout:=300}" +: "${retry:=60}" +: "${command_user:=gitlab-runner:gitlab-runner}" +export CONFIG_FILE + +command="/usr/bin/gitlab-runner" +command_args="run --service ${RC_SVCNAME} ${command_args}" +command_background="true" +start_stop_daemon_args="--stdout ${logfile} --stderr ${logfile}" +pidfile="/run/${RC_SVCNAME}.pid" + +extra_started_commands="reload gracefulstop" +description_reload="Reload configuration" +description_gracefulstop="Finish current jobs, then stop" + +start_pre() { + checkpath -f -m 640 -o "${command_user}" "${logfile}" +} + +reload() { + ebegin "Reloading ${RC_SVCNAME} configuration" + start-stop-daemon --quiet --signal HUP --pidfile "${pidfile}" + eend $? +} + +gracefulstop() { + ebegin "Gracefully stopping ${RC_SVCNAME}" + mark_service_stopping "${RC_SERVICE}" + start-stop-daemon --quiet --progress --stop --pidfile "${pidfile}" \ + --signal QUIT --retry "${timeout}" + if eend $?; then + mark_service_stopped "${RC_SVCNAME}" + else + eerror "${RC_SVCNAME} timed out, forcefully stopping" + if stop; then + mark_service_stopped "${RC_SVCNAME}" + else + return 1 + fi + fi +} diff --git a/user/gitlab-runner/gitlab-runner.pre-install b/user/gitlab-runner/gitlab-runner.pre-install new file mode 100644 index 000000000..9ef046f29 --- /dev/null +++ b/user/gitlab-runner/gitlab-runner.pre-install @@ -0,0 +1,7 @@ +#!/bin/sh + +groupadd -r gitlab-runner 2>/dev/null +useradd -c gitlab-runner -s /sbin/nologin -g gitlab-runner \ + -d /var/lib/gitlab-runner -r gitlab-runner 2>/dev/null + +exit 0 diff --git a/user/gitlab-runner/posix-shell-escape.patch b/user/gitlab-runner/posix-shell-escape.patch new file mode 100644 index 000000000..b454141ed --- /dev/null +++ b/user/gitlab-runner/posix-shell-escape.patch @@ -0,0 +1,139 @@ +--- gitlab-runner-v12.1.0/helpers/shell_escape.go 2019-07-19 12:13:32.000000000 +0000 ++++ gitlab-runner-v12.1.0/helpers/shell_escape.go 2020-04-26 23:12:59.813309281 +0000 +@@ -4,7 +4,6 @@ package helpers + + import ( + "bytes" +- "encoding/hex" + "strings" + ) + +@@ -13,35 +12,10 @@ import ( + */ + + const ( +- ACK = 6 +- TAB = 9 +- LF = 10 +- CR = 13 +- US = 31 +- SPACE = 32 +- AMPERSTAND = 38 + SINGLE_QUOTE = 39 +- PLUS = 43 +- NINE = 57 +- QUESTION = 63 +- LOWERCASE_Z = 90 +- OPEN_BRACKET = 91 + BACKSLASH = 92 +- UNDERSCORE = 95 +- CLOSE_BRACKET = 93 +- BACKTICK = 96 +- TILDA = 126 +- DEL = 127 + ) + +-// ShellEscape is taken from https://github.com/solidsnack/shell-escape/blob/master/Text/ShellEscape/Bash.hs +-/* +-A Bash escaped string. The strings are wrapped in @$\'...\'@ if any +-bytes within them must be escaped; otherwise, they are left as is. +-Newlines and other control characters are represented as ANSI escape +-sequences. High bytes are represented as hex codes. Thus Bash escaped +-strings will always fit on one line and never contain non-ASCII bytes. +-*/ + func ShellEscape(str string) string { + if str == "" { + return "''" +@@ -50,85 +24,20 @@ func ShellEscape(str string) string { + out := bytes.NewBuffer(make([]byte, 0, len(str)*2)) + i := 0 + l := len(in) +- escape := false +- +- hex := func(char byte) { +- escape = true +- +- data := []byte{BACKSLASH, 'x', 0, 0} +- hex.Encode(data[2:], []byte{char}) +- out.Write(data) +- } +- +- backslash := func(char byte) { +- escape = true +- out.Write([]byte{BACKSLASH, char}) +- } +- +- escaped := func(str string) { +- escape = true +- out.WriteString(str) +- } +- +- quoted := func(char byte) { +- escape = true +- out.WriteByte(char) +- } +- +- literal := func(char byte) { +- out.WriteByte(char) +- } + ++ out.WriteByte(SINGLE_QUOTE) + for i < l { + char := in[i] +- switch { +- case char == TAB: +- escaped(`\t`) +- case char == LF: +- escaped(`\n`) +- case char == CR: +- escaped(`\r`) +- case char <= US: +- hex(char) +- case char <= AMPERSTAND: +- quoted(char) +- case char == SINGLE_QUOTE: +- backslash(char) +- case char <= PLUS: +- quoted(char) +- case char <= NINE: +- literal(char) +- case char <= QUESTION: +- quoted(char) +- case char <= LOWERCASE_Z: +- literal(char) +- case char == OPEN_BRACKET: +- quoted(char) +- case char == BACKSLASH: +- backslash(char) +- case char <= CLOSE_BRACKET: +- quoted(char) +- case char == UNDERSCORE: +- literal(char) +- case char <= BACKTICK: +- quoted(char) +- case char <= TILDA: +- quoted(char) +- case char == DEL: +- hex(char) +- default: +- hex(char) ++ if (char == SINGLE_QUOTE) { ++ out.Write([]byte{SINGLE_QUOTE, BACKSLASH, SINGLE_QUOTE, SINGLE_QUOTE}) ++ } else { ++ out.WriteByte(char) + } + i++ + } ++ out.WriteByte(SINGLE_QUOTE) + +- outStr := out.String() +- +- if escape { +- outStr = "$'" + outStr + "'" +- } +- +- return outStr ++ return out.String() + } + + func ToBackslash(path string) string { diff --git a/user/gitlab-runner/posix-shell.patch b/user/gitlab-runner/posix-shell.patch new file mode 100644 index 000000000..6169c3ecc --- /dev/null +++ b/user/gitlab-runner/posix-shell.patch @@ -0,0 +1,30 @@ +--- gitlab-runner-v12.1.0/shells/bash.go 2019-07-19 12:13:32.000000000 +0000 ++++ gitlab-runner-v12.1.0/shells/bash.go 2020-04-26 23:07:57.303304498 +0000 +@@ -102,12 +102,12 @@ func (b *BashWriter) Variable(variable c + } + + func (b *BashWriter) IfDirectory(path string) { +- b.Line(fmt.Sprintf("if [[ -d %q ]]; then", path)) ++ b.Line(fmt.Sprintf("if [ -d %q ]; then", path)) + b.Indent() + } + + func (b *BashWriter) IfFile(path string) { +- b.Line(fmt.Sprintf("if [[ -e %q ]]; then", path)) ++ b.Line(fmt.Sprintf("if [ -e %q ]; then", path)) + b.Indent() + } + +@@ -200,9 +200,10 @@ func (b *BashWriter) Finish(trace bool) + io.WriteString(w, "set -o xtrace\n") + } + +- io.WriteString(w, "set -eo pipefail\n") ++ io.WriteString(w, "set -e\n") + io.WriteString(w, "set +o noclobber\n") +- io.WriteString(w, ": | eval "+helpers.ShellEscape(b.String())+"\n") ++ io.WriteString(w, "(\nexec </dev/null\n") ++ io.WriteString(w, b.String() + "\n)\n") + io.WriteString(w, "exit 0\n") + w.Flush() + return buffer.String() diff --git a/user/gitlab-runner/tests.patch b/user/gitlab-runner/tests.patch new file mode 100644 index 000000000..1aff6c653 --- /dev/null +++ b/user/gitlab-runner/tests.patch @@ -0,0 +1,63 @@ +--- gitlab-runner-v12.1.0/shells/bash_test.go 2019-07-19 12:13:32.000000000 +0000 ++++ gitlab-runner-v12.1.0/shells/bash_test.go 2020-04-27 00:07:06.763360621 +0000 +@@ -10,12 +10,12 @@ func TestBash_CommandShellEscapes(t *tes + writer := &BashWriter{} + writer.Command("foo", "x&(y)") + +- assert.Equal(t, `$'foo' "x&(y)"`+"\n", writer.String()) ++ assert.Equal(t, `'foo' "x&(y)"`+"\n", writer.String()) + } + + func TestBash_IfCmdShellEscapes(t *testing.T) { + writer := &BashWriter{} + writer.IfCmd("foo", "x&(y)") + +- assert.Equal(t, `if $'foo' "x&(y)" >/dev/null 2>/dev/null; then`+"\n", writer.String()) ++ assert.Equal(t, `if 'foo' "x&(y)" >/dev/null 2>/dev/null; then`+"\n", writer.String()) + } +--- gitlab-runner-v12.1.0/executors/shell/executor_shell_test.go 2019-07-19 12:13:32.000000000 +0000 ++++ gitlab-runner-v12.1.0/executors/shell/executor_shell_test.go 2020-04-27 00:01:12.813355024 +0000 +@@ -166,7 +166,7 @@ func TestBuildAbort(t *testing.T) { + defer abortTimer.Stop() + + err = runBuild(t, build) +- assert.EqualError(t, err, "aborted: interrupt") ++ assert.EqualError(t, err, "aborted: Interrupt") + }) + } + +--- gitlab-runner-v12.1.0/executors/custom/executor_integration_test.go 2019-07-19 12:13:32.000000000 +0000 ++++ gitlab-runner-v12.1.0/executors/custom/executor_integration_test.go 2020-04-27 00:00:42.493354545 +0000 +@@ -234,7 +234,7 @@ func TestBuildAbort(t *testing.T) { + defer abortTimer.Stop() + + err = runBuild(t, build) +- assert.EqualError(t, err, "aborted: interrupt") ++ assert.EqualError(t, err, "aborted: Interrupt") + }) + } + +--- gitlab-runner-v12.1.0/helpers/shell_escape_test.go 2019-07-19 12:13:32.000000000 +0000 ++++ gitlab-runner-v12.1.0/helpers/shell_escape_test.go 2020-04-27 00:02:36.213356343 +0000 +@@ -24,8 +24,8 @@ func TestShellEscape(t *testing.T) { + in string + out string + }{ +- {"standard string", "$'standard string'"}, +- {"+\t\n\r&", "$'+\\t\\n\\r&'"}, ++ {"standard string", "'standard string'"}, ++ {"+\t\n\r&", "'+\t\n\r&'"}, + {"", "''"}, + } + +--- gitlab-runner-v12.1.0/common/build_test.go 2019-07-19 12:13:32.000000000 +0000 ++++ gitlab-runner-v12.1.0/common/build_test.go 2020-04-27 00:23:35.173376249 +0000 +@@ -1133,7 +1133,7 @@ func TestWaitForTerminal(t *testing.T) { + }, + jobTimeout: 3600, + waitForTerminalTimeout: time.Hour, +- expectedErr: "terminal disconnected by system signal: interrupt", ++ expectedErr: "terminal disconnected by system signal: Interrupt", + }, + { + name: "Terminal Disconnect", |