|
185 | 185 | [ "$status" -eq 0 ] |
186 | 186 | [[ "$output" == *"scripts wins"* ]] |
187 | 187 | } |
| 188 | + |
| 189 | +# ============================================================================= |
| 190 | +# Multi-command execution tests |
| 191 | +# ============================================================================= |
| 192 | + |
| 193 | +@test "executes multiple commands separated by __" { |
| 194 | + mkdir -p "$BATS_TEST_DIRNAME/tmp/multi-cmd/scripts" |
| 195 | + echo '#!/bin/bash |
| 196 | +echo "lint: $*"' > "$BATS_TEST_DIRNAME/tmp/multi-cmd/scripts/lint.sh" |
| 197 | + echo '#!/bin/bash |
| 198 | +echo "build: $*"' > "$BATS_TEST_DIRNAME/tmp/multi-cmd/scripts/build.sh" |
| 199 | + chmod +x "$BATS_TEST_DIRNAME/tmp/multi-cmd/scripts"/*.sh |
| 200 | + |
| 201 | + cd "$BATS_TEST_DIRNAME/tmp/multi-cmd" |
| 202 | + run cli lint __ build |
| 203 | + [ "$status" -eq 0 ] |
| 204 | + [[ "$output" == *"lint:"* ]] |
| 205 | + [[ "$output" == *"build:"* ]] |
| 206 | +} |
| 207 | + |
| 208 | +@test "multi-command passes arguments to each command" { |
| 209 | + mkdir -p "$BATS_TEST_DIRNAME/tmp/multi-args/scripts" |
| 210 | + echo '#!/bin/bash |
| 211 | +echo "lint: $*"' > "$BATS_TEST_DIRNAME/tmp/multi-args/scripts/lint.sh" |
| 212 | + echo '#!/bin/bash |
| 213 | +echo "build: $*"' > "$BATS_TEST_DIRNAME/tmp/multi-args/scripts/build.sh" |
| 214 | + echo '#!/bin/bash |
| 215 | +echo "test: $*"' > "$BATS_TEST_DIRNAME/tmp/multi-args/scripts/test.sh" |
| 216 | + chmod +x "$BATS_TEST_DIRNAME/tmp/multi-args/scripts"/*.sh |
| 217 | + |
| 218 | + cd "$BATS_TEST_DIRNAME/tmp/multi-args" |
| 219 | + run cli lint --fix __ build -o dist __ test --watch |
| 220 | + [ "$status" -eq 0 ] |
| 221 | + [[ "$output" == *"lint: --fix"* ]] |
| 222 | + [[ "$output" == *"build: -o dist"* ]] |
| 223 | + [[ "$output" == *"test: --watch"* ]] |
| 224 | +} |
| 225 | + |
| 226 | +@test "multi-command stops on first failure" { |
| 227 | + mkdir -p "$BATS_TEST_DIRNAME/tmp/multi-fail/scripts" |
| 228 | + echo '#!/bin/bash |
| 229 | +echo "first ok"' > "$BATS_TEST_DIRNAME/tmp/multi-fail/scripts/first.sh" |
| 230 | + echo '#!/bin/bash |
| 231 | +echo "second fails" && exit 1' > "$BATS_TEST_DIRNAME/tmp/multi-fail/scripts/second.sh" |
| 232 | + echo '#!/bin/bash |
| 233 | +echo "third should not run"' > "$BATS_TEST_DIRNAME/tmp/multi-fail/scripts/third.sh" |
| 234 | + chmod +x "$BATS_TEST_DIRNAME/tmp/multi-fail/scripts"/*.sh |
| 235 | + |
| 236 | + cd "$BATS_TEST_DIRNAME/tmp/multi-fail" |
| 237 | + run cli first __ second __ third |
| 238 | + [ "$status" -eq 1 ] |
| 239 | + [[ "$output" == *"first ok"* ]] |
| 240 | + [[ "$output" == *"second fails"* ]] |
| 241 | + [[ "$output" != *"third should not run"* ]] |
| 242 | +} |
0 commit comments