#!/usr/bin/env bash testUsageIsShownWhenNoCommandIsSpecified() { echo ' #!/usr/bin/env bash ' > go echo "source $(dirname $BASH_SOURCE)/../⚡️" >> go chmod +x go try ./go assertContains "$STDOUT" "Usage" } testHelpSubcommandCannotBeOverridden() { echo ' #!/usr/bin/env bash ⚡️help() { echo "ah hah hah" ; } ' > go echo "source $(dirname $BASH_SOURCE)/../⚡️" >> go chmod +x go try ./go help assertContains "$STDOUT" "Usage" } testHelpIncludesInvocationInstructions() { SCRIPT_NAME="foo-$RANDOM" echo ' #!/usr/bin/env bash ' > $SCRIPT_NAME echo "source $(dirname $BASH_SOURCE)/../⚡️" >> $SCRIPT_NAME chmod +x $SCRIPT_NAME try ./$SCRIPT_NAME help assertContains "$STDOUT" "$SCRIPT_NAME SUBCOMMAND" } testHelpListsAllAvailableLightningCommands() { echo ' #!/usr/bin/env bash ⚡️foo() { echo "ah hah hah" ; } ⚡️bar() { echo "ah hah hah" ; } ⚡️baz() { echo "ah hah hah" ; } ⚡️potato() { echo "ah hah hah" ; } ' > go echo "source $(dirname $BASH_SOURCE)/../⚡️" >> go chmod +x go try ./go help assertContains "$STDOUT" "foo" assertContains "$STDOUT" "bar" assertContains "$STDOUT" "baz" assertContains "$STDOUT" "potato" assertContains "$STDOUT" "help" } testHelpLinesFromDefinedCommandsAreShown() { echo ' #!/usr/bin/env bash ⚡️hello() { _help-line "Say Hello" "$@" echo "Hello, World!" ; } ' > go echo "source $(dirname $BASH_SOURCE)/../⚡️" >> go chmod +x go try ./go assertContains "$STDOUT" "Say Hello" } testHelpDoesNotExecuteFunctionsWithNoHelpLine() { echo ' #!/usr/bin/env bash ⚡️hello() { echo "Hello, World!" ; } ' > go echo "source $(dirname $BASH_SOURCE)/../⚡️" >> go chmod +x go try ./go assertNotContains "$STDOUT" "Hello, World" } testLightningShouldNotBeIncludedInSubcommandNames() { echo ' #!/usr/bin/env bash ⚡️hello() { echo "Hello, World!" ; } ' > go echo "source $(dirname $BASH_SOURCE)/../⚡️" >> go chmod +x go try ./go assertNotContains "$STDOUT" "⚡️hello" } source $(dirname $0)/runner