aboutsummaryrefslogtreecommitdiff
path: root/tests/remote-git.testscript
diff options
context:
space:
mode:
Diffstat (limited to 'tests/remote-git.testscript')
-rw-r--r--tests/remote-git.testscript69
1 files changed, 69 insertions, 0 deletions
diff --git a/tests/remote-git.testscript b/tests/remote-git.testscript
new file mode 100644
index 0000000..6724473
--- /dev/null
+++ b/tests/remote-git.testscript
@@ -0,0 +1,69 @@
+# file : tests/remote-git.testscript
+# copyright : Copyright (c) 2014-2018 Code Synthesis Ltd
+# license : MIT; see accompanying LICENSE file
+
+# Tests for commands that accept git repository location must be able to run
+# regardless whether the repository is local or remote. They also must be able
+# to create the repository used for testing at the specified path, so being
+# published to build2.org it can be used for the remote testing. Note that
+# prior to publishing repositories tests must be performed with the
+# config.test.output=keep variable override, so their working directories (that
+# contain repositories produced) are not cleaned up.
+#
+
+# Check that git version is the minimum supported one (2.12.0) or above.
+#
++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
+
+# This flag must be used by testscripts to decide if they should skip git
+# repository-related tests.
+#
+git_supported = ($git_version_major > 2 || \
+ $git_version_major == 2 && $git_version_minor >= 12)
+
+# Output directory path that testscripts must use to prepare repositories
+# required by tests they contain.
+#
+out_git = $canonicalize([dir_path] $~/git/$cmd)
+
+# If $remote is true then remote repository locations must be used for tests.
+#
+remote = $config.bpkg.test.remote
+
++if ($remote != true)
+ rep_git_local = ($cxx.target.class != 'windows' \
+ ? "file://$out_git" \
+ : "file:/$regex.replace($out_git, '\\', '/')")
+
+ rep_git = $rep_git_local # Default local repository URL.
+
+ mkdir -p $out_git
+else
+ rep_git_https_dumb = "https://build2.org/bpkg/git/$cmd"
+ rep_git_https_smart = "https://git.build2.org/testing/bpkg/advonly/$cmd"
+ rep_git_https_smart_unadv = "https://git.build2.org/testing/bpkg/unadv/$cmd"
+ rep_git_git = "git://git.build2.org/testing/bpkg/unadv/$cmd"
+
+ rep_git = $rep_git_https_dumb # Default remote repository URL.
+end
+
+# Command for extracting the git repository from a tarball into the output
+# directory (see above).
+#
+# Note that we can expect that the tar program is present on the platform. We
+# will use the same options as we do for unpacking of package archives (see
+# pkg-unpack.cxx).
+#
+git_extract = ($cxx.target.class != 'windows' \
+ ? tar -C $out_git -xf \
+ : tar -C $regex.replace($out_git, '\\', '/') --force-local -xf)