aboutsummaryrefslogtreecommitdiff
path: root/tests/common.testscript
diff options
context:
space:
mode:
Diffstat (limited to 'tests/common.testscript')
-rw-r--r--tests/common.testscript61
1 files changed, 61 insertions, 0 deletions
diff --git a/tests/common.testscript b/tests/common.testscript
new file mode 100644
index 0000000..400ae48
--- /dev/null
+++ b/tests/common.testscript
@@ -0,0 +1,61 @@
+# file : tests/common.testscript
+# copyright : Copyright (c) 2014-2018 Code Synthesis Ltd
+# license : MIT; see accompanying LICENSE file
+
+# Commonly-used variables setup and driver command line.
+#
+
+# Use the same build system driver as the one running the tests (as opposed
+# to one that may or may not be found via PATH). Note that this implies that
+# we don't support cross-testing.
+#
+# A common approach will be to run build2 as a sanity check in a directory
+# produced or updated by a command being tested.
+#
+build = $recall($build.path)
+test.options += --build $build
+
+# Check that git version is the minimum supported one or above. The lowest
+# common denominator for bdep commands is 2.1.0.
+#
++git --version | set git_version_out
+
++echo "$git_version_out" | sed -n -e 's/git version (\d+\.\d+\.\d+).*/\1/p' | \
+ set git_version
+
++if ("$git_version" == "")
+ exit "unable to obtain git version from '$git_version_out'"
+end
+
++echo "$git_version" | sed -e 's/(\d+).*/\1/' | set git_version_major
++echo "$git_version" | sed -e 's/\d+\.(\d+).*/\1/' | set git_version_minor
+
++if! ($git_version_major > 2 || \
+ $git_version_major == 2 && $git_version_minor >= 1)
+ exit "minimum supported git version is 2.1.0"
+end
+
+# Helper commands that can be used by tests to prepare the testing environment
+# or validate an outcome of the command being tested. They are likely to get
+# additional options and redirects appended prior to use. A common approach
+# will be to redirect output to the null device for commands that are used for
+# test setup, and to match it for commands being tested or performing teardown
+# (for example, to make sure that configuration post-test state is valid and is
+# as expected).
+#
+clean = $* clean
+deinit = $* deinit
+init = $* init
+fetch = $* fetch
+new = $* new --no-checks
+status = $* status
+sync = $* sync
+update = $* update
+config = $* config
+publish = $* publish
+
+# All testscripts are named after bdep commands, for example sync.testscript.
+# So the testscript scope id is a name of the command being tested.
+#
+cmd = [string] $@
+test.arguments = $cmd