Hi Thomas. On Wed, 7 Dec 2011 10:46:17 +0100, Thomas Jost <schnouki@schnouki.net> wrote: > The new test_python() function makes writing Python tests a little easier: > - it sets the environment variables as needed > - it redirects stdout to the OUTPUT file (like test_emacs()). > > This commit also declares python as an external prereq. > > The stdout redirection is required to avoid trouble when running commands like > "python 'script' | sort > OUTPUT": in such a case, any error due to a missing > external prereq would be "swallowed" by sort, resulting to a failed test instead > of a skipped one. > --- > test/python | 6 ++---- > test/test-lib.sh | 9 +++++++++ > 2 files changed, 11 insertions(+), 4 deletions(-) > > diff --git a/test/python b/test/python > index f737749..c3aa726 100755 > --- a/test/python > +++ b/test/python > @@ -5,9 +5,7 @@ test_description="python bindings" > add_email_corpus > > test_begin_subtest "compare thread ids" > -LD_LIBRARY_PATH=$TEST_DIRECTORY/../lib \ > -PYTHONPATH=$TEST_DIRECTORY/../bindings/python \ > -python <<EOF | sort > OUTPUT > +test_python <<EOF > import notmuch > db = notmuch.Database(mode=notmuch.Database.MODE.READ_WRITE) > q_new = notmuch.Query(db, 'tag:inbox') > @@ -15,5 +13,5 @@ for t in q_new.search_threads(): > print t.get_thread_id() > EOF > notmuch search --output=threads tag:inbox | sed s/^thread:// | sort > EXPECTED > -test_expect_equal_file OUTPUT EXPECTED > +test_expect_equal_file <(sort OUTPUT) EXPECTED > test_done > diff --git a/test/test-lib.sh b/test/test-lib.sh > index a975957..519bd84 100644 > --- a/test/test-lib.sh > +++ b/test/test-lib.sh > @@ -919,6 +919,14 @@ test_emacs () { > emacsclient --socket-name="$EMACS_SERVER" --eval "(progn $@)" > } > > +test_python() { > + export LD_LIBRARY_PATH=$TEST_DIRECTORY/../lib > + export PYTHONPATH=$TEST_DIRECTORY/../bindings/python > + > + (echo "import sys; _orig_stdout=sys.stdout; sys.stdout=open('OUTPUT', 'w')"; cat) \ > + | python - Perhaps we should have a test-lib.py for test-specific stuff like this (similar to test-lib.el)? I think it would be cleaner and makes it easy to add more Python test auxiliary functions later. Regards, Dmitry > +} > + > test_reset_state_ () { > test -z "$test_init_done_" && test_init_ > > @@ -1148,3 +1156,4 @@ test_declare_external_prereq emacs > test_declare_external_prereq emacsclient > test_declare_external_prereq gdb > test_declare_external_prereq gpg > +test_declare_external_prereq python > -- > 1.7.8 > > _______________________________________________ > notmuch mailing list > notmuch@notmuchmail.org > http://notmuchmail.org/mailman/listinfo/notmuch