@@ -7,7 +7,7 @@ TEST_DESCRIPTION="Sysuser-related tests"
77. $TEST_BASE_DIR /test-functions
88
99test_setup () {
10- mkdir -p $TESTDIR /etc $TESTDIR /usr/lib/sysusers.d $TESTDIR /tmp
10+ mkdir -p $TESTDIR /etc/sysusers.d $TESTDIR /usr/lib/sysusers.d $TESTDIR /tmp
1111}
1212
1313preprocess () {
@@ -20,31 +20,85 @@ preprocess() {
2020 sed " s/SYSTEM_UID_MAX/${SYSTEM_UID_MAX} /g" " $in "
2121}
2222
23+ compare () {
24+ if ! diff -u $TESTDIR /etc/passwd <( preprocess ${1% .* } .expected-passwd) ; then
25+ echo " **** Unexpected output for $f "
26+ exit 1
27+ fi
28+
29+ if ! diff -u $TESTDIR /etc/group <( preprocess ${1% .* } .expected-group) ; then
30+ echo " **** Unexpected output for $f $2 "
31+ exit 1
32+ fi
33+ }
34+
2335test_run () {
2436 # ensure our build of systemd-sysusers is run
2537 PATH=${BUILD_DIR} :$PATH
2638
39+ rm -f $TESTDIR /etc/sysusers.d/* $TESTDIR /usr/lib/sysusers.d/*
40+
2741 # happy tests
2842 for f in test-* .input; do
2943 echo " *** Running $f "
30- rm -f $TESTDIR /etc/*
44+ rm -f $TESTDIR /etc/* {passwd,group,shadow}
3145 cp $f $TESTDIR /usr/lib/sysusers.d/test.conf
3246 systemd-sysusers --root=$TESTDIR
3347
34- if ! diff -u $TESTDIR /etc/passwd <( preprocess ${f% .* } .expected-passwd) ; then
35- echo " **** Unexpected output for $f "
36- exit 1
37- fi
38- if ! diff -u $TESTDIR /etc/group <( preprocess ${f% .* } .expected-group) ; then
39- echo " **** Unexpected output for $f "
40- exit 1
41- fi
48+ compare $f " "
4249 done
4350
51+ for f in test-* .input; do
52+ echo " *** Running $f on stdin"
53+ rm -f $TESTDIR /etc/* {passwd,group,shadow}
54+ touch $TESTDIR /etc/sysusers.d/test.conf
55+ cat $f | systemd-sysusers --root=$TESTDIR -
56+
57+ compare $f " on stdin"
58+ done
59+
60+ for f in test-* .input; do
61+ echo " *** Running $f on stdin with --replace"
62+ rm -f $TESTDIR /etc/* {passwd,group,shadow}
63+ touch $TESTDIR /etc/sysusers.d/test.conf
64+ # this overrides test.conf which is masked on disk
65+ cat $f | systemd-sysusers --root=$TESTDIR --replace=/etc/sysusers.d/test.conf -
66+ # this should be ignored
67+ cat test-1.input | systemd-sysusers --root=$TESTDIR --replace=/usr/lib/sysusers.d/test.conf -
68+
69+ compare $f " on stdin with --replace"
70+ done
71+
72+ # test --inline
73+ echo " *** Testing --inline"
74+ rm -f $TESTDIR /etc/* {passwd,group,shadow}
75+ # copy a random file to make sure it is ignored
76+ cp $f $TESTDIR /etc/sysusers.d/confuse.conf
77+ systemd-sysusers --root=$TESTDIR --inline \
78+ " u u1 222 - - /bin/zsh" \
79+ " g g1 111"
80+
81+ compare inline " (--inline)"
82+
83+ # test --replace
84+ echo " *** Testing --inline with --replace"
85+ rm -f $TESTDIR /etc/* {passwd,group,shadow}
86+ # copy a random file to make sure it is ignored
87+ cp $f $TESTDIR /etc/sysusers.d/confuse.conf
88+ systemd-sysusers --root=$TESTDIR \
89+ --inline \
90+ --replace=/etc/sysusers.d/confuse.conf \
91+ " u u1 222 - - /bin/zsh" \
92+ " g g1 111"
93+
94+ compare inline " (--inline --replace=…)"
95+
96+ rm -f $TESTDIR /etc/sysusers.d/* $TESTDIR /usr/lib/sysusers.d/*
97+
4498 # tests for error conditions
4599 for f in unhappy-* .input; do
46100 echo " *** Running test $f "
47- rm -f $TESTDIR /etc/*
101+ rm -f $TESTDIR /etc/* {passwd,group,shadow}
48102 cp $f $TESTDIR /usr/lib/sysusers.d/test.conf
49103 systemd-sysusers --root=$TESTDIR 2> /dev/null
50104 journalctl -t systemd-sysusers -o cat | tail -n1 > $TESTDIR /tmp/err
0 commit comments