diff options
author | Lars Wirzenius <lars.wirzenius@codethink.co.uk> | 2014-03-05 13:51:03 +0000 |
---|---|---|
committer | Lars Wirzenius <lars.wirzenius@codethink.co.uk> | 2014-03-06 19:01:32 +0000 |
commit | 032aa01054fe2d3313c56adc41467e1fdd1c7571 (patch) | |
tree | 8609a8eec65244bf3fee3189c013f01b6033b337 | |
parent | e9e9baa045ae45bb99aecbc5850823480592e9f4 (diff) | |
download | morph-032aa01054fe2d3313c56adc41467e1fdd1c7571.tar.gz |
Pass in user's PYTHONPATH to morph when run from yarns
We carefully _add_ to PYTHONPATH in ./check, if it was set by the user.
However, yarn cleans the environment when it runs tests, so we tell it
to add PYTHONPATH from ./check to the test environment.
Additionally, we change yarns/morph.shell-lib so it doesn't override
PYTHONPATH, but adds to it.
All of this is necessary to get morph, when run by yarn steps, to have
the right PYTHONPATH, which can be (and currently is) to allow the user
to specify un-installed versions of dependencies, such as cliapp.
-rwxr-xr-x | check | 15 | ||||
-rw-r--r-- | yarns/morph.shell-lib | 11 |
2 files changed, 23 insertions, 3 deletions
@@ -2,7 +2,7 @@ # # Run test suite for morph. # -# Copyright (C) 2011-2013 Codethink Limited +# Copyright (C) 2011-2014 Codethink Limited # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -71,10 +71,21 @@ fi python setup.py clean check # Run scenario tests with yarn, if yarn is available. +# +# Yarn cleans up the environment when it runs tests, and this removes +# PYTHONPATH from the environment. However, we need our tests to have +# the PYTHONPATH, so that we can get them to, for example, use the right +# versions of updated dependencies. The immediate current need is to +# be able to get them to use an updated version of cliapp, but it is +# a general need. +# +# We solve this by using the yarn --env option, allowing us to tell yarn +# explicitly which environment variables to set in addition to the set +# it sets anyway. if command -v yarn > /dev/null then - yarn -s yarns/morph.shell-lib yarns/*.yarn + yarn --env "PYTHONPATH=$PYTHONPATH" -s yarns/morph.shell-lib yarns/*.yarn fi # cmdtest tests. diff --git a/yarns/morph.shell-lib b/yarns/morph.shell-lib index 265e7c78..4ce8c2f8 100644 --- a/yarns/morph.shell-lib +++ b/yarns/morph.shell-lib @@ -19,6 +19,15 @@ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +# Add $SRCDIR to PYTHONPATH. + +case "$PYTHONPATH" in + '') PYTHONPATH="$SRCDIR)" ;; + *) PYTHONPATH="$SRCDIR:$PYTHONPATH" ;; +esac +export PYTHONPATH + + # Run Morph from the source tree, ignoring any configuration files. # This way the test suite is not affected by any configuration the user # or system may have. Instead, we'll use the `$DATADIR/morph.conf` file, @@ -28,7 +37,7 @@ run_morph() { { set +e - PYTHONPATH="$SRCDIR" "$SRCDIR"/morph \ + "$SRCDIR"/morph \ --cachedir-min-space=0 --tempdir-min-space=0 \ --no-default-config --config "$DATADIR/morph.conf" "$@" \ 2> "$DATADIR/result-$1" |