Assertions + Ignoring Script Lines - v0.7.2
Changelog
0da0b32 Add support for assertions (#33)
a73a61a Add ability to ignore script lines (#34)
Assertions
Assertions let you check against expected conditions, exiting with an error message when checks fail.
Assertions have the following syntax:
ASSERT <condition> [ "<error message>" | '<error message>' ]
Note: The error message is optional and will default to "Assertion failed" if not provided
Condition
The following condition patterns are supported:
[ ... ][[ ... ]]( ... )(( ... ))
Assertion Example
Runfile
##
# Not subject to any assertions
world:
echo Hello, World
# Assertion applies to ALL following commands
ASSERT [ -n "${HELLO}" ] "Variable HELLO not defined"
##
# Subject to HELLO assertion, even though it doesn't use it
newman:
echo Hello, Newman
##
# Subject to HELLO assertion, and adds another
# ASSERT [ -n "${NAME}" ] 'Variable NAME not defined'
name:
echo ${HELLO}, ${NAME}
example with no vars
$ run world
Hello, World
$ run newman
run: Variable HELLO not defined
$ run name
run: Variable HELLO not defined
example with HELLO
$ HELLO=Hello run newman
Hello, Newman
$ HELLO=Hello run name
run: Variable NAME not defined
example with HELLO and NAME
$ HELLO=Hello NAME=Everybody run name
Hello, Everybody
Note: Assertions only apply to commands and are only checked when a command is invoked. Any globally-defined assertions will apply to ALL commands defined after the assertion.
Ignoring Script Lines
You can use a # on the first column of a command script to ignore a line:
Runfile
hello:
# This comment WILL be present in the executed command script
echo "Hello, Newman"
# This comment block WILL NOT be present in the executed command script
# echo "Hello, World"
echo "Goodbye, now"
Note: Run detects and skips these comment lines when parsing the runfile, so the # will work regardless of what language the script text is written in (i.e even if the target language doesn't support # for comments).