From d79881c530ca18f5387b94f272576a6160405da4 Mon Sep 17 00:00:00 2001 From: Luca Boccassi Date: Wed, 29 Mar 2023 01:10:15 +0100 Subject: [PATCH] test: fix shellcheck warnings in test-sysusers.sh --- test/test-sysusers.sh.in | 120 ++++++++++++++++++++------------------- 1 file changed, 63 insertions(+), 57 deletions(-) diff --git a/test/test-sysusers.sh.in b/test/test-sysusers.sh.in index fab37960bc3..3bcc87561fd 100755 --- a/test/test-sysusers.sh.in +++ b/test/test-sysusers.sh.in @@ -4,112 +4,116 @@ set -e SYSUSERS="${1:-systemd-sysusers}" -[ -e "$(dirname $0)/../systemd-runtest.env" ] && . "$(dirname $0)/../systemd-runtest.env" +# shellcheck disable=SC1090 +[ -e "$(dirname "$0")/../systemd-runtest.env" ] && . "$(dirname "$0")/../systemd-runtest.env" SYSTEMD_TEST_DATA=${SYSTEMD_TEST_DATA:-@SYSTEMD_TEST_DATA@} SOURCE=$SYSTEMD_TEST_DATA/test-sysusers TESTDIR=$(mktemp --tmpdir --directory "test-sysusers.XXXXXXXXXX") +# shellcheck disable=SC2064 trap "rm -rf '$TESTDIR'" EXIT INT QUIT PIPE prepare_testdir() { - mkdir -p $TESTDIR/etc/sysusers.d/ - mkdir -p $TESTDIR/usr/lib/sysusers.d/ - rm -f $TESTDIR/etc/*{passwd,group,shadow} + mkdir -p "$TESTDIR/etc/sysusers.d/" + mkdir -p "$TESTDIR/usr/lib/sysusers.d/" + rm -f "$TESTDIR"/etc/*{passwd,group,shadow} for i in $1.initial-{passwd,group,shadow}; do - test -f $i && cp $i $TESTDIR/etc/${i#*.initial-} + test -f "$i" && cp "$i" "$TESTDIR/etc/${i#*.initial-}" done return 0 } +# shellcheck disable=SC2050 [ @SYSTEM_UID_MAX@ -lt @SYSTEM_GID_MAX@ ] && system_guid_max=@SYSTEM_UID_MAX@ || system_guid_max=@SYSTEM_GID_MAX@ preprocess() { m=${2:-$system_guid_max} + # shellcheck disable=SC2140 sed -e "s/SYSTEM_UGID_MAX/$m/g; s#NOLOGIN#@NOLOGIN@#g" "$1" } compare() { - if ! diff -u $TESTDIR/etc/passwd <(preprocess $1.expected-passwd $3); then + if ! diff -u "$TESTDIR/etc/passwd" <(preprocess "$1.expected-passwd" "$3"); then echo "**** Unexpected output for $f $2" exit 1 fi - if ! diff -u $TESTDIR/etc/group <(preprocess $1.expected-group $3); then + if ! diff -u "$TESTDIR/etc/group" <(preprocess "$1.expected-group" "$3"); then echo "**** Unexpected output for $f $2" exit 1 fi } -rm -f $TESTDIR/etc/sysusers.d/* $TESTDIR/usr/lib/sysusers.d/* +rm -f "$TESTDIR"/etc/sysusers.d/* "$TESTDIR"/usr/lib/sysusers.d/* # happy tests -for f in $(ls -1 $SOURCE/test-*.input | sort -V); do +for f in $(find "$SOURCE"/test-*.input | sort -V); do echo "*** Running $f" - prepare_testdir ${f%.input} - cp $f $TESTDIR/usr/lib/sysusers.d/test.conf - $SYSUSERS --root=$TESTDIR + prepare_testdir "${f%.input}" + cp "$f" "$TESTDIR/usr/lib/sysusers.d/test.conf" + $SYSUSERS --root="$TESTDIR" - compare ${f%.*} "" + compare "${f%.*}" "" done -for f in $(ls -1 $SOURCE/test-*.input | sort -V); do +for f in $(find "$SOURCE"/test-*.input | sort -V); do echo "*** Running $f on stdin" - prepare_testdir ${f%.input} - touch $TESTDIR/etc/sysusers.d/test.conf - cat $f | $SYSUSERS --root=$TESTDIR - + prepare_testdir "${f%.input}" + touch "$TESTDIR/etc/sysusers.d/test.conf" + $SYSUSERS --root="$TESTDIR" - <"$f" - compare ${f%.*} "on stdin" + compare "${f%.*}" "on stdin" done -for f in $(ls -1 $SOURCE/test-*.input | sort -V); do +for f in $(find "$SOURCE"/test-*.input | sort -V); do echo "*** Running $f on stdin with --replace" - prepare_testdir ${f%.input} - touch $TESTDIR/etc/sysusers.d/test.conf + prepare_testdir "${f%.input}" + touch "$TESTDIR/etc/sysusers.d/test.conf" # this overrides test.conf which is masked on disk - cat $f | $SYSUSERS --root=$TESTDIR --replace=/etc/sysusers.d/test.conf - + $SYSUSERS --root="$TESTDIR" --replace=/etc/sysusers.d/test.conf - <"$f" # this should be ignored - cat $SOURCE/test-1.input | $SYSUSERS --root=$TESTDIR --replace=/usr/lib/sysusers.d/test.conf - + $SYSUSERS --root="$TESTDIR" --replace=/usr/lib/sysusers.d/test.conf - <"$SOURCE/test-1.input" - compare ${f%.*} "on stdin with --replace" + compare "${f%.*}" "on stdin with --replace" done # test --inline echo "*** Testing --inline" -prepare_testdir $SOURCE/inline +prepare_testdir "$SOURCE/inline" # copy a random file to make sure it is ignored -cp $f $TESTDIR/etc/sysusers.d/confuse.conf -$SYSUSERS --root=$TESTDIR --inline \ +cp "$f" "$TESTDIR/etc/sysusers.d/confuse.conf" +$SYSUSERS --root="$TESTDIR" --inline \ "u u1 222 - - /bin/zsh" \ "g g1 111" -compare $SOURCE/inline "(--inline)" +compare "$SOURCE/inline" "(--inline)" # test --replace echo "*** Testing --inline with --replace" -prepare_testdir $SOURCE/inline +prepare_testdir "$SOURCE/inline" # copy a random file to make sure it is ignored -cp $f $TESTDIR/etc/sysusers.d/confuse.conf -$SYSUSERS --root=$TESTDIR \ +cp "$f" "$TESTDIR/etc/sysusers.d/confuse.conf" +$SYSUSERS --root="$TESTDIR" \ --inline \ --replace=/etc/sysusers.d/confuse.conf \ "u u1 222 - - /bin/zsh" \ "g g1 111" -compare $SOURCE/inline "(--inline --replace=…)" +compare "$SOURCE/inline" "(--inline --replace=…)" echo "*** Testing --inline with no /etc" -rm -rf $TESTDIR/etc -$SYSUSERS --root=$TESTDIR --inline \ +rm -rf "${TESTDIR:?}/etc" +$SYSUSERS --root="$TESTDIR" --inline \ "u u1 222 - - /bin/zsh" \ "g g1 111" -compare $SOURCE/inline "(--inline)" +compare "$SOURCE/inline" "(--inline)" -rm -f $TESTDIR/etc/sysusers.d/* $TESTDIR/usr/lib/sysusers.d/* +rm -f "$TESTDIR"/etc/sysusers.d/* "$TESTDIR"/usr/lib/sysusers.d/* -cat >$TESTDIR/etc/login.defs <"$TESTDIR/etc/login.defs" <&1 | tail -n1 | sed -r 's/^[^:]+:[^:]+://' >$TESTDIR/err - if ! diff -u $TESTDIR/err ${f%.*}.expected-err; then + prepare_testdir "${f%.input}" + cp "$f" "$TESTDIR/usr/lib/sysusers.d/test.conf" + $SYSUSERS --root="$TESTDIR" 2>&1 | tail -n1 | sed -r 's/^[^:]+:[^:]+://' >"$TESTDIR/err" + if ! diff -u "$TESTDIR/err" "${f%.*}.expected-err"; then echo "**** Unexpected error output for $f" - cat $TESTDIR/err + cat "$TESTDIR/err" exit 1 fi done -- 2.47.3