#! /usr/bin/env bats # This is a test file for use with the bats testing framework # https://github.com/bats-core/bats-core # On Debian: apt install bats function setup { ORIGDIR="$(pwd)" TMPDIR="$(mktemp -d)" # If no $FORGEBUILD is supplied in ENV, use the default # (otherwise you can't `bats ./tests/` manually) [ -z "$FORGEBUILD" ] && FORGEBUILD="forgebuild" # Setup forgebuild tasks FORGEBUILDDIR="$TMPDIR"/forgebuild mkdir $FORGEBUILDDIR echo "date +%s%N > $TMPDIR/forgebuild-time" > $FORGEBUILDDIR/time chmod +x $FORGEBUILDDIR/time echo "echo \$(pwd) > $TMPDIR/forgebuild-pwd" > $FORGEBUILDDIR/pwd chmod +x $FORGEBUILDDIR/pwd # Setup settings mkdir $FORGEBUILDDIR/config echo "default" > $FORGEBUILDDIR/config/entry mkdir $FORGEBUILDDIR/$HOSTNAME echo "host" > $FORGEBUILDDIR/$HOSTNAME/entry } function teardown { cd $ORIGDIR #if [ -d $TMPDIR ]; then rm -rf $TMPDIR; fi } @test "forgebuild --inbox only triggers tasks with a corresponding task.inbox file" { $FORGEBUILD -b $FORGEBUILDDIR --inbox [ ! -f $TMPDIR/forgebuild-time ] [ ! -f $TMPDIR/forgebuild-pwd ] touch $FORGEBUILDDIR/time.inbox $FORGEBUILD -b $FORGEBUILDDIR --inbox [ -f $TMPDIR/forgebuild-time ] [ ! -f $TMPDIR/forgebuild-pwd ] } @test "Task from inbox is not run twice" { touch $FORGEBUILDDIR/time.inbox $FORGEBUILD -b $FORGEBUILDDIR --inbox [ -f $TMPDIR/forgebuild-time ] [ ! -f $TMPDIR/forgebuild-pwd ] rm $TMPDIR/forgebuild-time rm $FORGEBUILDDIR/time.done $FORGEBUILD -b $FORGEBUILDDIR --inbox [ ! -f $TMPDIR/forgebuild-time ] } @test "forgebuild --inbox-folder can specify a folder as inbox" { INBOXFOLDER="$TMPDIR/inbox" mkdir $INBOXFOLDER $FORGEBUILD -b $FORGEBUILDDIR --inbox-folder $INBOXFOLDER [ ! -f $TMPDIR/forgebuild-time ] [ ! -f $TMPDIR/forgebuild-pwd ] touch $INBOXFOLDER/time.inbox $FORGEBUILD -b $FORGEBUILDDIR --inbox-folder $INBOXFOLDER [ -f $TMPDIR/forgebuild-time ] [ ! -f $TMPDIR/forgebuild-pwd ] rm $TMPDIR/forgebuild-time $FORGEBUILD -b $FORGEBUILDDIR --inbox-folder $INBOXFOLDER [ ! -f $TMPDIR/forgebuild-time ] [ ! -f $TMPDIR/forgebuild-pwd ] }