summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Kaster <andrewdkaster@gmail.com>2021-03-17 00:42:26 -0600
committerAli Mohammad Pur <Ali.mpfard@gmail.com>2021-05-21 12:05:34 +0430
commit0d0f52337cc1dfb02fb3f1d60f959b5fd690b99a (patch)
treea11edae1e0ac08146baa72b26eb3f5be764e2b6b
parent7e905ea2015adef63d5d47395f6be9e749655812 (diff)
downloadserenity-0d0f52337cc1dfb02fb3f1d60f959b5fd690b99a.zip
Base/CI: Run tests from /usr/Tests in GitHub Actions
Uncomment the tests that were disabled due to frequent freezes when running without KVM. This also adds a new github actions group for every single test, which makes it easier to browse test boundaries during test runs. Move catting the serial output log back to its own step, so that it has higher visibility. The previous solution was also shown to not actually cat the log in the case of a failed boot and timeout :^(.
-rw-r--r--.github/workflows/cmake.yml22
-rwxr-xr-xBase/home/anon/tests/run-tests-and-shutdown.sh37
2 files changed, 39 insertions, 20 deletions
diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml
index fcd97984e1..259a973611 100644
--- a/.github/workflows/cmake.yml
+++ b/.github/workflows/cmake.yml
@@ -141,24 +141,20 @@ jobs:
if: ${{ matrix.debug-macros == 'NORMAL_DEBUG'}}
working-directory: ${{ github.workspace }}/Build
env:
+ SERENITY_QEMU_CPU: "max,vmx=off"
SERENITY_KERNEL_CMDLINE: "boot_mode=self-test"
SERENITY_RUN: "ci"
run: |
echo "::group::ninja run # Qemu output"
- run_worked=y
- ninja run || run_worked=n
+ ninja run
echo "::endgroup::"
- echo "::group::cat debug.log # Serenity output"
- if [ "y" = "${run_worked}" ] ; then
- cat debug.log
- else
- echo "skipped (qemu had non-zero exit-code)"
- fi
- echo "::endgroup::"
- [ "y" = ${run_worked} ]
- timeout-minutes: 10
- # FIXME: When stable, remove continue on error. (See issue #5541)
- continue-on-error: true
+ timeout-minutes: 20
+
+ - name: Print Target Logs
+ # Extremely useful if Serenity hangs trying to run one of the tests
+ if: ${{ !cancelled() && matrix.debug-macros == 'NORMAL_DEBUG'}}
+ working-directory: ${{ github.workspace }}/Build
+ run: '[ ! -e debug.log ] || cat debug.log'
build_and_test_lagom:
runs-on: ${{ matrix.os }}
diff --git a/Base/home/anon/tests/run-tests-and-shutdown.sh b/Base/home/anon/tests/run-tests-and-shutdown.sh
index 82fd6d214e..0abd0a86f6 100755
--- a/Base/home/anon/tests/run-tests-and-shutdown.sh
+++ b/Base/home/anon/tests/run-tests-and-shutdown.sh
@@ -6,26 +6,49 @@ echo "==== Running Tests on SerenityOS ===="
run(index) {
shift
test_cmd=($*)
- echo "Running test $index out of $count_of_all_tests -- $test_cmd"
+ echo "==== Running test $index out of $count_of_all_tests -- $test_cmd ===="
+ echo "::group::$test_cmd"
if $test_cmd {
- echo "::debug file=$test_cmd:: $test_cmd passed!"
+ echo "::endgroup::"
+ echo "==== $test_cmd passed! ===="
} else {
+ echo "::endgroup::"
+ failed_tests=${concat_lists $failed_tests ($test_cmd)}
+ echo "==== Added $test_cmd to list of failed tests. Failed tests so far: $failed_tests ===="
echo "::error file=$test_cmd:: $test_cmd returned non-zero exit code, check logs!"
}
}
-# TODO: test-web requires the window server
-system_tests=((test-js --show-progress=false) test-pthread /usr/Tests/LibM/test-math (test-crypto -t bigint))
-# FIXME: Running too much at once is likely to run into #5541. Remove commented out find below when stable
-all_tests=${concat_lists $system_tests} #$(find /usr/Tests -type f | grep -v Kernel | grep -v .inc | shuf))
+# Files in /usr/Tests/* that we don't want to execute match these patterns:
+# Kernel/Legacy: Kernel tests that are either old patched exploits, or hang the system/shell
+# .inc: Shell test helper file that's not a test
+# UserEmulator: Tests designed to run inside the Userspace Emulator
+# stack-smash: Intentionally crashes by smashing the stack
+# TestJSON: AK/TestJSON makes assumptions about $PWD to load its input files
+# .frm: Test inputs that are not tests
+# test-web: Requires the window server in order to work
+# test-js: We start this one manually with the show progress flag set to false
+exclude_patterns='Kernel/Legacy|.inc|UserEmulator|stack-smash|TestJSON|.frm|test-web|test-js'
+
+system_tests=((test-js --show-progress=false) (test-crypto -c -t test))
+all_tests=${concat_lists $system_tests $(find /usr/Tests -type f | grep -E -v $exclude_patterns | shuf) }
count_of_all_tests=${length $all_tests}
+failed_tests=()
for index i cmd in $all_tests {
run $(expr $i + 1) $cmd
}
-echo "==== Done running tests ===="
+fail_count=${length $failed_tests}
+
+echo "==== Out of $count_of_all_tests tests, $(expr $count_of_all_tests - $fail_count) passed and $fail_count failed. ===="
+
+if test $fail_count -gt 0 {
+ echo "==== Failing tests: $failed_tests ===="
+}
if test $DO_SHUTDOWN_AFTER_TESTS {
shutdown -n
}
+
+exit $fail_count