[PATCH 1/2] test: add a function to run Python tests

Dmitry Kurochkin dmitry.kurochkin at gmail.com
Sun Dec 11 06:58:18 PST 2011


Hi Thomas.

On Wed,  7 Dec 2011 10:46:17 +0100, Thomas Jost <schnouki at 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 at notmuchmail.org
> http://notmuchmail.org/mailman/listinfo/notmuch


More information about the notmuch mailing list