Merge branch 'xry111/tester-nohack' into trunk

Use a fixed UID for "tester" user, instead of the tty owner's UID.

The problem using tty owner's UID is, when tty is owned by "root" the
UID of "tester" will be 0.  This cause a namesis between "tester" and
root.  And, the "tester" is introduced to run some tests which are not
expected to be ran as root.  If "tester" has UID 0, it will have root
priviledge and the tests will fail again.

Bash tests require the user to own the tty.  To satisify it, we use
Expect to spawn a new pseudoterminal to run Bash tests.
This commit is contained in:
Xi Ruoyao 2021-07-20 18:24:26 +08:00
commit 908a3c34c9
No known key found for this signature in database
GPG Key ID: D95E4716CCBB34DC
3 changed files with 12 additions and 5 deletions

View File

@ -218,7 +218,7 @@
<segmentedlist id="bash-testdeps">
<segtitle>&testsuites;</segtitle>
<seglistitem>
<seg>Shadow</seg>
<seg>Expect and Shadow</seg>
</seglistitem>
</segmentedlist>

View File

@ -175,7 +175,7 @@ EOF</userinput></screen>
user. We add this user here and delete this account at the end of that
chapter.</para>
<screen><userinput>echo "tester:x:$(ls -n $(tty) | cut -d" " -f3):101::/home/tester:/bin/bash" &gt;&gt; /etc/passwd
<screen><userinput>echo "tester:x:101:101::/home/tester:/bin/bash" &gt;&gt; /etc/passwd
echo "tester:x:101:" &gt;&gt; /etc/group
install -o tester -d /home/tester</userinput></screen>

View File

@ -73,11 +73,18 @@
<screen><userinput remap="test">chown -Rv tester .</userinput></screen>
<para>Now, run the tests as the <systemitem
<para>The testsuite of the package is designed to be ran as a non-root
user, owning the terminal connected to standard input. To satisify the
requirement, spawn a new pseudoterminal using
<application>Expect</application> and run the tests as the <systemitem
class="username">tester</systemitem> user:</para>
<screen><userinput remap="test">su tester &lt;&lt; EOF
PATH=$PATH make tests &lt; $(tty)
<screen><userinput remap="test">su -s /usr/bin/expect tester &lt;&lt; EOF
set timeout -1
spawn make tests
expect eof
lassign [wait] _ _ _ value
exit $value
EOF</userinput></screen>
<para>Install the package:</para>