aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/testdir/suite.sh
diff options
context:
space:
mode:
Diffstat (limited to 'src/nvim/testdir/suite.sh')
-rw-r--r--src/nvim/testdir/suite.sh36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/nvim/testdir/suite.sh b/src/nvim/testdir/suite.sh
new file mode 100644
index 0000000000..3059773ca1
--- /dev/null
+++ b/src/nvim/testdir/suite.sh
@@ -0,0 +1,36 @@
+# Test success marker. If END_MARKER file exists, we know that all tests
+# finished. If FAIL_SUMMARY_FILE exists we know that some tests failed, this
+# file will contain information about failed tests. Build is considered
+# successful if tests ended without any of them failing.
+END_MARKER="$BUILD_DIR/.tests_finished"
+FAIL_SUMMARY_FILE="$BUILD_DIR/.test_errors"
+
+fail() {
+ local test_name="$1"
+ local message="$2"
+
+ : "${message:=Test $test_name failed}"
+
+ local full_msg="$test_name :: $message"
+ echo "${full_msg}" >> "${FAIL_SUMMARY_FILE}"
+ echo "Failed: $full_msg"
+ export FAILED=1
+}
+
+ended_successfully() {
+ if test -f "${FAIL_SUMMARY_FILE}" ; then
+ echo 'Test failed, complete summary:'
+ cat "${FAIL_SUMMARY_FILE}"
+
+ if [[ "$GITHUB_ACTIONS" == "true" ]]; then
+ rm -f "$FAIL_SUMMARY_FILE"
+ fi
+
+ return 1
+ fi
+ if ! test -f "${END_MARKER}" ; then
+ echo 'ended_successfully called before end marker was touched'
+ return 1
+ fi
+ return 0
+}