diff options
author | Ben Hutchings <ben@decadent.org.uk> | 2019-01-18 19:17:20 +0000 |
---|---|---|
committer | Ben Hutchings <ben@decadent.org.uk> | 2019-01-20 01:31:57 +0000 |
commit | 60952530017bdc7cc7e49cdc7394f991ac95ce5e (patch) | |
tree | 6be40dd24a158847671374c60f95565e2f5f4579 | |
parent | add9336aefdf13579de65116b957fb1a7720e75e (diff) | |
download | klibc-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-x | test-many-klibcs | 69 |
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() { |