@@ -129,11 +129,7 @@ jobs:
shell: bash
- name: test
shell: bash
- run: . /etc/profile && make -C t -e
- - name: ci/print-test-failures.sh
- if: failure()
- shell: bash
- run: ci/print-test-failures.sh
+ run: . /etc/profile && make -C t -e || ci/print-test-failures-github.sh
- name: Upload failed tests' directories
if: failure() && env.FAILED_TEST_ARTIFACTS != ''
uses: actions/upload-artifact@v2
@@ -218,11 +214,7 @@ jobs:
shell: bash
- name: test
shell: bash
- run: . /etc/profile && make -C t -e
- - name: ci/print-test-failures.sh
- if: failure()
- shell: bash
- run: ci/print-test-failures.sh
+ run: . /etc/profile && make -C t -e || ci/print-test-failures-github.sh
- name: Upload failed tests' directories
if: failure() && env.FAILED_TEST_ARTIFACTS != ''
uses: actions/upload-artifact@v2
@@ -265,10 +257,8 @@ jobs:
- run: ci/lib.sh --build
- run: make
- run: ci/lib.sh --test
- - run: make test
+ - run: make test || ci/print-test-failures-github.sh
if: success()
- - run: ci/print-test-failures.sh
- if: failure()
- name: Upload failed tests' directories
if: failure() && env.FAILED_TEST_ARTIFACTS != ''
uses: actions/upload-artifact@v2
@@ -301,10 +291,8 @@ jobs:
- run: ci/lib.sh --build
- run: make
- run: ci/lib.sh --test
- - run: make test
+ - run: make test || ci/print-test-failures-github.sh
if: success() && matrix.vector.skip-tests != 'no'
- - run: ci/print-test-failures.sh
- if: failure() && matrix.vector.skip-tests != 'no'
- name: Upload failed tests' directories
if: failure() && env.FAILED_TEST_ARTIFACTS != ''
uses: actions/upload-artifact@v1
new file mode 100755
@@ -0,0 +1,35 @@
+#!/bin/sh
+
+. ${0%/*}/lib-ci-type.sh
+
+set -e
+
+case "$CI_TYPE" in
+github-actions)
+ handle_failed_tests () {
+ mkdir -p t/failed-test-artifacts
+ echo "FAILED_TEST_ARTIFACTS=t/failed-test-artifacts" >>$GITHUB_ENV
+
+ for test_exit in t/test-results/*.exit
+ do
+ test 0 != "$(cat "$test_exit")" || continue
+
+ test_name="${test_exit%.exit}"
+ test_name="${test_name##*/}"
+ printf "\\e[33m\\e[1m=== Failed test: ${test_name} ===\\e[m\\n"
+ cat "t/test-results/$test_name.out"
+
+ trash_dir="t/trash directory.$test_name"
+ cp "t/test-results/$test_name.out" t/failed-test-artifacts/
+ tar czf t/failed-test-artifacts/"$test_name".trash.tar.gz "$trash_dir"
+ done
+ return 1
+ }
+ ;;
+*)
+ echo "Unhandled CI type: $CI_TYPE" >&2
+ exit 1
+ ;;
+esac
+
+handle_failed_tests