summaryrefslogtreecommitdiff
path: root/check
diff options
context:
space:
mode:
Diffstat (limited to 'check')
-rwxr-xr-xcheck164
1 files changed, 164 insertions, 0 deletions
diff --git a/check b/check
new file mode 100755
index 00000000..dc4f96bc
--- /dev/null
+++ b/check
@@ -0,0 +1,164 @@
+#!/bin/sh
+#
+# Run test suite for morph.
+#
+# 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
+# the Free Software Foundation; version 2 of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+
+set -e
+
+
+# Parse the command line.
+
+run_style=false
+run_unit_tests=false
+run_cmdtests=false
+run_slow_cmdtests=false
+run_yarns=false
+if [ "$#" -eq 0 ]; then
+ run_style=true
+ run_unit_tests=true
+ run_cmdtests=true
+ run_slow_cmdtests=false
+ run_yarns=true
+fi
+while [ "$#" -gt 0 ]
+do
+ case "$1" in
+ --full)
+ run_style=true
+ run_unit_tests=true
+ run_cmdtests=true
+ run_slow_cmdtests=true
+ run_yarns=true
+ ;;
+ --style)
+ run_style=true
+ ;;
+ --no-style)
+ run_style=false
+ ;;
+ --unit-tests)
+ run_unit_tests=true
+ ;;
+ --no-unit-tests)
+ run_unit_tests=false
+ ;;
+ --cmdtests)
+ run_cmdtests=true
+ ;;
+ --no-cmdtests)
+ run_cmdtests=false
+ ;;
+ --slow-cmdtests)
+ run_slow_cmdtests=true
+ ;;
+ --no-slow-cmdtests)
+ run_slow_cmdtests=false
+ ;;
+ --yarns)
+ run_yarns=true
+ ;;
+ --no-yarns)
+ run_yarns=false
+ ;;
+ *) echo "ERROR: Unknown argument $1." 1>&2; exit 1 ;;
+ esac
+ shift
+done
+
+
+# Set PYTHONPATH to start with the current directory so that we always
+# find the right version of it for the test suite.
+
+case "$PYTHONPATH" in
+ '') PYTHONPATH="$(pwd)" ;;
+ *) PYTHONPATH="$(pwd):$PYTHONPATH" ;;
+esac
+export PYTHONPATH
+
+# Run the style checks
+
+if "$run_style" && [ -d .git ];
+then
+ echo "Checking copyright statements"
+ if ! (git ls-files --cached -z |
+ xargs -0r scripts/check-copyright-year); then
+ exit 1
+ fi
+
+ echo 'Checking source code for silliness'
+ if ! (git ls-files --cached |
+ grep -v '\.gz$' |
+ grep -Ev 'tests[^/]*/.*\.std(out|err)' |
+ grep -vF 'tests.build/build-system-autotools.script' |
+ xargs -r scripts/check-silliness); then
+ exit 1
+ fi
+fi
+
+# Clean up artifacts from previous (possibly failed) runs, build,
+# and run the tests.
+
+if "$run_unit_tests"; then
+ python setup.py clean check
+fi
+
+# 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 "$run_yarns" && command -v yarn > /dev/null
+then
+ yarn --env "PYTHONPATH=$PYTHONPATH" -s yarns/morph.shell-lib yarns/*.yarn
+fi
+
+# cmdtest tests.
+
+HOME="$(pwd)/scripts"
+
+if "$run_cmdtests"
+then
+ cmdtest tests
+else
+ echo "NOT RUNNING test"
+fi
+
+if "$run_slow_cmdtests"
+then
+ cmdtest tests.branching
+else
+ echo "NOT RUNNING test.branching"
+fi
+
+# Building systems requires the 'filter' parameter of tarfile.TarFile.add():
+# this was introduced in Python 2.7
+if ! "$run_cmdtests"; then
+ echo "NOT RUNNING tests.build"
+elif ! (python --version 2>&1 | grep -q '^Python 2\.[78]'); then
+ echo "NOT RUNNING tests.build (requires Python 2.7)"
+else
+ cmdtest tests.build
+fi