test: test_python: set PYTHONPATH to the python execution environment
authorTomi Ollila <tomi.ollila@iki.fi>
Wed, 25 May 2016 21:37:41 +0000 (00:37 +0300)
committerDavid Bremner <david@tethera.net>
Sat, 11 Jun 2016 16:12:08 +0000 (13:12 -0300)
Place PYTHONPATH to the environment when python is executed in a way
that current shell environment is not affected. This also allows adding
the old value of PYTHONPATH to the end of the new value (otherwise it
would have been appended again and again when test_python is called).

At the same time, use -B option to avoid writing .pyc files to
bindings/python/* (which are not cleared out by distclean).

Drop the (unused) prefix code which preserved the original stdout of the
python program and opened sys.stdout to OUTPUT. In place of that there
is now note how (debug) information can be printed to original stdout.

test/test-lib.sh

index b0ee253c94426290373711dbbe946ed7f9935ff6..54c65b60247d7aff4c3131bb9cff8159fdc43c43 100644 (file)
@@ -1192,10 +1192,10 @@ test_emacs () {
 }
 
 test_python() {
-       export PYTHONPATH=$TEST_DIRECTORY/../bindings/python
-
-       (echo "import sys; _orig_stdout=sys.stdout; sys.stdout=open('OUTPUT', 'w')"; cat) \
-               | $NOTMUCH_PYTHON -
+    # Note: if there is need to print debug information from python program,
+    # use stdout = os.fdopen(6, 'w') or stderr = os.fdopen(7, 'w')
+    PYTHONPATH="$TEST_DIRECTORY/../bindings/python${PYTHONPATH:+:$PYTHONPATH}" \
+       $NOTMUCH_PYTHON -B - > OUTPUT
 }
 
 test_ruby() {