#!/usr/bin/env bats load 'helpers' setup() { setup_party_sandbox; } teardown() { teardown_party_sandbox; } @test "party with no args prints usage and exits non-zero" { run "$PARTY_BIN" [ "$status" -ne 0 ] [[ "$output" == *"Usage:"* ]] [[ "$output" == *"host"* ]] [[ "$output" == *"join"* ]] } @test "party --help prints usage and exits zero" { run "$PARTY_BIN" --help [ "$status" -eq 0 ] [[ "$output" == *"Usage:"* ]] } @test "party rejects unknown subcommands" { run "$PARTY_BIN" rumpelstiltskin [ "$status" -ne 0 ] [[ "$output" == *"unknown subcommand"* ]] } @test "library mode: source returns without dispatching" { load_party_lib # If the script ran dispatch, we'd never get here. Reaching this # assertion is the test. [ -n "${PARTY_VERSION:-}" ] } @test "no-argument subcommands print help and reject stray args" { for sub in list leave status; do run "$PARTY_BIN" "$sub" --help [ "$status" -eq 0 ] [[ "$output" == "Usage: party $sub" ]] run "$PARTY_BIN" "$sub" stray [ "$status" -eq 2 ] [[ "$output" == *"unexpected arg 'stray'"* ]] run "$PARTY_BIN" "$sub" --bogus [ "$status" -eq 2 ] done } @test "who rejects a second positional, log rejects any" { run "$PARTY_BIN" who one two [ "$status" -eq 2 ] [[ "$output" == *"unexpected arg 'two'"* ]] run "$PARTY_BIN" log one [ "$status" -eq 2 ] [[ "$output" == *"unexpected arg 'one'"* ]] }