summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBen Hutchings <ben@decadent.org.uk>2019-01-18 19:17:20 +0000
committerBen Hutchings <ben@decadent.org.uk>2019-01-20 01:31:57 +0000
commit60952530017bdc7cc7e49cdc7394f991ac95ce5e (patch)
tree6be40dd24a158847671374c60f95565e2f5f4579
parentadd9336aefdf13579de65116b957fb1a7720e75e (diff)
downloadklibc-maint-60952530017bdc7cc7e49cdc7394f991ac95ce5e.tar.gz
test-many-klibcs: Build and run (some) klibc self-test programs
Only run self-test programs that don't require any input and have clear success/failure reporting. We can enable more later.
-rwxr-xr-xtest-many-klibcs69
1 files changed, 63 insertions, 6 deletions
diff --git a/test-many-klibcs b/test-many-klibcs
index 633e254..0c22452 100755
--- a/test-many-klibcs
+++ b/test-many-klibcs
@@ -8,7 +8,7 @@ build() {
rm -rf ../linux/usr/include || return
make -C ../linux "ARCH=$kernelarch" headers_install || return
echo "I: Building with ARCH=$arch CROSS_COMPILE=$gnuarch- $makeflags"
- make -C ../klibc all "ARCH=$arch" "CROSS_COMPILE=$gnuarch-" $makeflags \
+ make -C ../klibc all test "ARCH=$arch" "CROSS_COMPILE=$gnuarch-" $makeflags \
|| return
}
@@ -17,12 +17,69 @@ clean() {
make -C ../klibc clean "ARCH=$arch"
}
+run_test_program() {
+ local progname="$1"
+ shift
+ local logname="test-$gnuarch-$progname.log"
+
+ if "qemu-$qemuarch-static" ../klibc/usr/klibc/tests/"$progname" \
+ > "$logname"; then
+ if grep -qw ERROR "$logname"; then
+ echo "E: $progname: Error found in output"
+ return 1
+ fi
+ while [ $# -ge 1 ]; do
+ if ! grep -qF -- "$1" "$logname"; then
+ echo "E: $progname: Expected text '$1' not found in output"
+ return 1
+ fi
+ shift
+ done
+ echo "I: $progname: pass"
+ else
+ echo "E: $progname: fail"
+ return 1
+ fi
+}
+
+run_shell() {
+ local command="$1"
+
+ if "qemu-$qemuarch-static" ../klibc/usr/dash/sh -c "$command"; then
+ echo "I: shell '$command': pass"
+ else
+ echo "E: shell '$command': fail"
+ return 1
+ fi
+}
+
run_tests() {
- echo "I: Testing statically linked shell running builtin command"
- "qemu-$qemuarch-static" ../klibc/usr/dash/sh -c "exit" || return
- echo "I: Testing statically linked shell running external command"
- "qemu-$qemuarch-static" ../klibc/usr/dash/sh -c "../klibc/usr/utils/static/true; exit" || return
- # TODO: build a chroot environment and run with shared library
+ local err=0
+
+ run_test_program microhello || err=1
+ run_test_program minihello || err=1
+ run_test_program hello || err=1
+ run_test_program environ 'Verifying envp == environ... ok' || err=1
+ run_test_program fcntl || err=1
+ run_test_program malloctest || err=1
+ run_test_program malloctest2 || err=1
+ run_test_program opentest "Line 1 = $(head -1 /etc/passwd)" || err=1
+ run_test_program pipetest || err=1
+ run_test_program select || err=1
+ run_test_program setjmptest \
+ "calling longjmp with 256... setjmp returned 256" || err=1
+ run_test_program sigint "Signal received OK" || err=1
+ run_test_program socket || err=1
+ run_test_program sscanf || err=1
+ run_test_program stdio "Hello, World!" \
+ "Hello again - and some more - and some more" || err=1
+ run_test_program strlcpycat || err=1
+ run_test_program vfork || err=1
+
+ run_shell "exit" || err=1
+ run_shell "../klibc/usr/utils/static/true; exit" || err=1
+
+ return $err
}
process() {