| #!/bin/bash |
| # -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- |
| # ex: ts=8 sw=4 sts=4 et filetype=sh |
| set -e |
| TEST_DESCRIPTION="Sysuser-related tests" |
| |
| . $TEST_BASE_DIR/test-functions |
| |
| test_setup() { |
| mkdir -p $TESTDIR/etc $TESTDIR/usr/lib/sysusers.d $TESTDIR/tmp |
| } |
| |
| test_run() { |
| # ensure our build of systemd-sysusers is run |
| PATH=${BUILD_DIR}:$PATH |
| |
| # happy tests |
| for f in test-*.input; do |
| echo "*** Running $f" |
| rm -f $TESTDIR/etc/* |
| cp $f $TESTDIR/usr/lib/sysusers.d/test.conf |
| systemd-sysusers --root=$TESTDIR |
| |
| if ! diff -u $TESTDIR/etc/passwd ${f%.*}.expected-passwd; then |
| echo "**** Unexpected output for $f" |
| exit 1 |
| fi |
| if ! diff -u $TESTDIR/etc/group ${f%.*}.expected-group; then |
| echo "**** Unexpected output for $f" |
| exit 1 |
| fi |
| done |
| |
| # tests for error conditions |
| for f in unhappy-*.input; do |
| echo "*** Running test $f" |
| rm -f $TESTDIR/etc/* |
| cp $f $TESTDIR/usr/lib/sysusers.d/test.conf |
| systemd-sysusers --root=$TESTDIR 2> /dev/null |
| journalctl -t systemd-sysusers -o cat | tail -n1 > $TESTDIR/tmp/err |
| if ! diff -u $TESTDIR/tmp/err ${f%.*}.expected-err; then |
| echo "**** Unexpected error output for $f" |
| cat $TESTDIR/tmp/err |
| exit 1 |
| fi |
| done |
| } |
| |
| do_test "$@" |