Skip to content

Commit 4e9fe38

Browse files
committed
test/TEST-21-SYSUSERS: add tests for new functionality
1 parent d16a1c1 commit 4e9fe38

File tree

6 files changed

+81
-14
lines changed

6 files changed

+81
-14
lines changed
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
g1:x:111:
2+
u1:x:222:
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
u1:x:222:222::/:/bin/zsh
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,4 @@
11
u1:x:SYSTEM_UID_MAX:
2+
u2:x:777:
3+
u3:x:778:
4+
u4:x:779:
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,4 @@
11
u1:x:SYSTEM_UID_MAX:SYSTEM_UID_MAX:some gecos:/random/dir:/sbin/nologin
2+
u2:x:777:777:some gecos:/random/dir:/bin/zsh
3+
u3:x:778:778::/random/dir2:/bin/bash
4+
u4:x:779:779::/:/bin/csh

test/TEST-21-SYSUSERS/test-2.input

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
1-
# Trivial smoke test that generate the ID dynamically based on SYSTEM_UID_MAX
1+
# Test generation of ID dynamically based on SYSTEM_UID_MAX and
2+
# replacement of all fields up to the login shell.
23
#
3-
#Type Name ID GECOS HOMEDIR
4-
u u1 - "some gecos" /random/dir
4+
#Type Name ID GECOS homedir shell
5+
u u1 - "some gecos" /random/dir -
6+
u u2 777 "some gecos" /random/dir /bin/zsh
7+
u u3 778 - /random/dir2 /bin/bash
8+
u u4 779 - - /bin/csh

test/TEST-21-SYSUSERS/test.sh

Lines changed: 65 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ TEST_DESCRIPTION="Sysuser-related tests"
77
. $TEST_BASE_DIR/test-functions
88

99
test_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

1313
preprocess() {
@@ -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+
2335
test_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

Comments
 (0)