mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-22 02:48:08 +01:00
test: Add `test_emacs_expect_t'.
Add a new test function to allow simpler testing of emacs functionality. `test_emacs_expect_t' takes one argument - a lisp expression to evaluate. The test passes if the expression returns `t', otherwise it fails and the output is reported to the tester.
This commit is contained in:
parent
2903b32f79
commit
260975e8af
5 changed files with 56 additions and 0 deletions
|
@ -202,6 +202,14 @@ library for your script to use.
|
||||||
tests that may run in the same Emacs instance. Use `let' instead
|
tests that may run in the same Emacs instance. Use `let' instead
|
||||||
so the scope of the changed variables is limited to a single test.
|
so the scope of the changed variables is limited to a single test.
|
||||||
|
|
||||||
|
test_emacs_expect_t <emacs-lisp-expressions>
|
||||||
|
|
||||||
|
This function executes the provided emacs lisp script within
|
||||||
|
emacs in a manner similar to 'test_emacs'. The expressions should
|
||||||
|
return the value `t' to indicate that the test has passed. If the
|
||||||
|
test does not return `t' then it is considered failed and all data
|
||||||
|
returned by the test is reported to the tester.
|
||||||
|
|
||||||
test_done
|
test_done
|
||||||
|
|
||||||
Your test script must have test_done at the end. Its purpose
|
Your test script must have test_done at the end. Its purpose
|
||||||
|
|
9
test/emacs-test-functions.sh
Executable file
9
test/emacs-test-functions.sh
Executable file
|
@ -0,0 +1,9 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
test_description="emacs test function sanity"
|
||||||
|
. test-lib.sh
|
||||||
|
|
||||||
|
test_begin_subtest "emacs test function sanity"
|
||||||
|
test_emacs_expect_t 't'
|
||||||
|
|
||||||
|
test_done
|
|
@ -52,6 +52,7 @@ TESTS="
|
||||||
python
|
python
|
||||||
hooks
|
hooks
|
||||||
argument-parsing
|
argument-parsing
|
||||||
|
emacs-test-functions.sh
|
||||||
"
|
"
|
||||||
TESTS=${NOTMUCH_TESTS:=$TESTS}
|
TESTS=${NOTMUCH_TESTS:=$TESTS}
|
||||||
|
|
||||||
|
|
|
@ -83,3 +83,12 @@ nothing."
|
||||||
|
|
||||||
(add-hook-counter 'notmuch-hello-mode-hook)
|
(add-hook-counter 'notmuch-hello-mode-hook)
|
||||||
(add-hook-counter 'notmuch-hello-refresh-hook)
|
(add-hook-counter 'notmuch-hello-refresh-hook)
|
||||||
|
|
||||||
|
(defmacro notmuch-test-run (&rest body)
|
||||||
|
"Evaluate a BODY of test expressions and output the result."
|
||||||
|
`(with-temp-buffer
|
||||||
|
(let ((result (progn ,@body)))
|
||||||
|
(insert (if (stringp result)
|
||||||
|
result
|
||||||
|
(prin1-to-string result)))
|
||||||
|
(test-output))))
|
||||||
|
|
|
@ -503,6 +503,35 @@ test_expect_equal_file ()
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
test_emacs_expect_t () {
|
||||||
|
test "$#" = 2 && { prereq=$1; shift; } || prereq=
|
||||||
|
test "$#" = 1 ||
|
||||||
|
error "bug in the test script: not 1 or 2 parameters to test_emacs_expect_t"
|
||||||
|
|
||||||
|
# Run the test.
|
||||||
|
if ! test_skip "$test_subtest_name"
|
||||||
|
then
|
||||||
|
test_emacs "(notmuch-test-run $1)" >/dev/null
|
||||||
|
|
||||||
|
# Restore state after the test.
|
||||||
|
exec 1>&6 2>&7 # Restore stdout and stderr
|
||||||
|
inside_subtest=
|
||||||
|
|
||||||
|
# Report success/failure.
|
||||||
|
result=$(cat OUTPUT)
|
||||||
|
if [ "$result" = t ]
|
||||||
|
then
|
||||||
|
test_ok_ "$test_subtest_name"
|
||||||
|
else
|
||||||
|
test_failure_ "$test_subtest_name" "${result}"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
# Restore state after the (non) test.
|
||||||
|
exec 1>&6 2>&7 # Restore stdout and stderr
|
||||||
|
inside_subtest=
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
NOTMUCH_NEW ()
|
NOTMUCH_NEW ()
|
||||||
{
|
{
|
||||||
notmuch new | grep -v -E -e '^Processed [0-9]*( total)? file|Found [0-9]* total file'
|
notmuch new | grep -v -E -e '^Processed [0-9]*( total)? file|Found [0-9]* total file'
|
||||||
|
|
Loading…
Reference in a new issue