mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-21 18:38: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
|
||||
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
|
||||
|
||||
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
|
||||
hooks
|
||||
argument-parsing
|
||||
emacs-test-functions.sh
|
||||
"
|
||||
TESTS=${NOTMUCH_TESTS:=$TESTS}
|
||||
|
||||
|
|
|
@ -83,3 +83,12 @@ nothing."
|
|||
|
||||
(add-hook-counter 'notmuch-hello-mode-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
|
||||
}
|
||||
|
||||
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 | grep -v -E -e '^Processed [0-9]*( total)? file|Found [0-9]* total file'
|
||||
|
|
Loading…
Reference in a new issue