Reduce sourceless tests, add host-config tests

This commit is contained in:
southerntofu 2020-12-01 18:22:43 +01:00
parent 2bfd3a7fe0
commit 2aaec8c449
2 changed files with 86 additions and 4 deletions

4
tests/sourceless.bats → tests/10-sourceless.bats Normal file → Executable file
View File

@ -29,10 +29,6 @@ function setup {
function teardown {
cd $ORIGDIR
clean
}
function clean {
if [ -d $TMPDIR ]; then rm -rf $TMPDIR; fi
}

86
tests/20-host-config.bats Executable file
View File

@ -0,0 +1,86 @@
#! /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 simple git repository
GITREPO="$TMPDIR"/git
mkdir $GITREPO
cd $GITREPO
git init
echo "first commit" > README
git add README
git commit -m "first commit"
# Setup forgebuild tasks
FORGEBUILDDIR="$TMPDIR"/forgebuild
mkdir $FORGEBUILDDIR
echo "$GITREPO" > $FORGEBUILDDIR/time.source
echo "date +%s%N > $TMPDIR/forgebuild-time" > $FORGEBUILDDIR/time
chmod +x $FORGEBUILDDIR/time
echo "$GITREPO" > $FORGEBUILDDIR/host.source
echo "cat \$FORGEBUILDCONF/entry > $TMPDIR/forgebuild-host" > $FORGEBUILDDIR/host
chmod +x $FORGEBUILDDIR/host
echo "echo \$(pwd) > $TMPDIR/forgebuild-pwd" > $FORGEBUILDDIR/pwd
chmod +x $FORGEBUILDDIR/pwd
echo "$GITREPO" > $FORGEBUILDDIR/pwd.source
# 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
}
# Task settings
@test "Per-host configuration is loaded as \$FORGEBUILDCONF" {
$FORGEBUILD -b $FORGEBUILDDIR host
[[ "$(cat $TMPDIR/forgebuild-host)" = "host" ]]
}
@test "Unknown host uses \$FORGEBUILDDIR/config as \$FORGEBUILDCONF" {
HOST="UNKNOWN" $FORGEBUILD -b $FORGEBUILDDIR host
[[ "$(cat $TMPDIR/forgebuild-host)" = "default" ]]
}
@test "task only runs in allowlisted hosts" {
# When t.hosts exist, only this (line-separated) list of hosts
# runs the task
echo "$HOSTNAME" > $FORGEBUILDDIR/time.hosts
$FORGEBUILD -b $FORGEBUILDDIR time
TIME="$(cat $TMPDIR/forgebuild-time)"
# Doesn't run on unknown host
HOST="UNKNOWN" $FORGEBUILD -b $FORGEBUILDDIR time
NEWTIME="$(cat $TMPDIR/forgebuild-time)"
[[ "$TIME" = "$NEWTIME" ]]
echo "TESTHOST" >> $FORGEBUILDDIR/time.hosts
# Force trigger because repo was not updated
HOST="TESTHOST" $FORGEBUILD -f -b $FORGEBUILDDIR time
NEWTIME="$(cat $TMPDIR/forgebuild-time)"
[[ "$TIME" != "$NEWTIME" ]]
}
@test "task doesn't run in ignored host" {
touch $FORGEBUILDDIR/$HOSTNAME/time.ignore
$FORGEBUILD -b $FORGEBUILDDIR time
[ ! -f $TMPDIR/forgebuild-time ]
HOST="TESTHOST" $FORGEBUILD -f -b $FORGEBUILDDIR time
[ -f $TMPDIR/forgebuild-time ]
}