MCPcopy Create free account
hub / github.com/CrunchyData/postgres-operator / TestBashHalt

Function TestBashHalt

internal/postgres/config_test.go:145–195  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

143}
144
145func TestBashHalt(t *testing.T) {
146 t.Run("NoPipeline", func(t *testing.T) {
147 cmd := exec.CommandContext(t.Context(), "bash")
148 cmd.Args = append(cmd.Args, "-c", "--", bashHalt+`; halt ab cd e`)
149
150 var exit *exec.ExitError
151 stdout, err := cmd.Output()
152 assert.Assert(t, errors.As(err, &exit))
153 assert.Equal(t, string(stdout), "", "expected no stdout")
154 assert.Equal(t, string(exit.Stderr), "ab cd e\n")
155 assert.Equal(t, exit.ExitCode(), 1)
156 })
157
158 t.Run("PipelineZeroStatus", func(t *testing.T) {
159 cmd := exec.CommandContext(t.Context(), "bash")
160 cmd.Args = append(cmd.Args, "-c", "--", bashHalt+`; true && halt message`)
161
162 var exit *exec.ExitError
163 stdout, err := cmd.Output()
164 assert.Assert(t, errors.As(err, &exit))
165 assert.Equal(t, string(stdout), "", "expected no stdout")
166 assert.Equal(t, string(exit.Stderr), "message\n")
167 assert.Equal(t, exit.ExitCode(), 1)
168 })
169
170 t.Run("PipelineNonZeroStatus", func(t *testing.T) {
171 cmd := exec.CommandContext(t.Context(), "bash")
172 cmd.Args = append(cmd.Args, "-c", "--", bashHalt+`; (exit 99) || halt $'multi\nline'`)
173
174 var exit *exec.ExitError
175 stdout, err := cmd.Output()
176 assert.Assert(t, errors.As(err, &exit))
177 assert.Equal(t, string(stdout), "", "expected no stdout")
178 assert.Equal(t, string(exit.Stderr), "multi\nline\n")
179 assert.Equal(t, exit.ExitCode(), 99)
180 })
181
182 t.Run("Subshell", func(t *testing.T) {
183 cmd := exec.CommandContext(t.Context(), "bash")
184 cmd.Args = append(cmd.Args, "-c", "--", bashHalt+`; (halt 'err') || echo 'after'`)
185
186 stderr := new(bytes.Buffer)
187 cmd.Stderr = stderr
188
189 stdout, err := cmd.Output()
190 assert.NilError(t, err)
191 assert.Equal(t, string(stdout), "after\n")
192 assert.Equal(t, stderr.String(), "err\n")
193 assert.Equal(t, cmd.ProcessState.ExitCode(), 0)
194 })
195}
196
197func TestBashPermissions(t *testing.T) {
198 // macOS `stat` takes different arguments than BusyBox and GNU coreutils.

Callers

nothing calls this directly

Calls 2

EqualMethod · 0.45
StringMethod · 0.45

Tested by

no test coverage detected