aboutsummaryrefslogtreecommitdiff
path: root/tests/ci/ci-load.testscript
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ci/ci-load.testscript')
-rw-r--r--tests/ci/ci-load.testscript141
1 files changed, 141 insertions, 0 deletions
diff --git a/tests/ci/ci-load.testscript b/tests/ci/ci-load.testscript
new file mode 100644
index 0000000..de23b79
--- /dev/null
+++ b/tests/ci/ci-load.testscript
@@ -0,0 +1,141 @@
+# file : tests/ci/ci-load.testscript
+# copyright : Copyright (c) 2014-2018 Code Synthesis Ltd
+# license : MIT; see accompanying LICENSE file
+
+.include data.testscript
+
+: args
+{
+ : none
+ :
+ $* 2>>~%EOE% != 0
+ %\[.+\] \[brep:error\] \[ref \] \[brep-ci-load\]: usage: .+brep-ci-load \[--result-url <url>\] <loader-path> \[<loader-options>\] <dir>%
+ EOE
+
+ : no-dir
+ :
+ $* brep-load 2>>~%EOE% != 0
+ %\[.+\] \[brep:error\] \[ref brep-load\] \[brep-ci-load\]: usage: .+brep-ci-load \[--result-url <url>\] <loader-path> \[<loader-options>\] <dir>%
+ EOE
+
+ : dir-not-exist
+ :
+ $* brep-load $~/dir 2>>~%EOE% != 0
+ %\[.+\] \[brep:error\] \[ref dir\] \[brep-ci-load\]: '.+dir' does not exist or is not a directory%
+ EOE
+}
+
+: success
+:
+{
+ : simulate
+ :
+ {
+ $clone_root_data;
+
+ echo 'simulate: success' >+$data_dir/request.manifest;
+
+ $* ./brep-load $data_dir >>"EOO";
+ : 1
+ status: 200
+ message: CI request is queued
+ reference: $request_id
+ EOO
+
+ test -d $data_dir != 0
+ }
+
+ : for-real
+ :
+ {
+ # Create the loader script that validates the arguments passed and the
+ # files produced by the handler.
+ #
+ loader=$~/brep-load
+
+ cat <<"EOI" >=$loader;
+ #!/usr/bin/env bash
+ if [ "\$#" != 5 -o \
+ "\$1" != "--db-host=localhost" -o \
+ "\$2" != "--db-port=8432" -o \
+ "\$3" != "--force" -o \
+ "\$4" != "--shallow" -o \
+ "\$5" != "$data_dir/loadtab" -o \
+ ! -f "$data_dir/cache/repositories.manifest" -o \
+ ! -f "$data_dir/cache/packages.manifest" ]; then
+ exit 1
+ fi
+ if ! diff "$data_dir/loadtab" - <<<"https://git.build2.org/hello/hello.git#master hello cache:cache"; then
+ exit 1
+ fi
+ EOI
+
+ chmod 755 $loader;
+
+ $clone_root_data;
+
+ $* $loader --db-host=localhost --db-port=8432 $data_dir >>"EOO"
+ : 1
+ status: 200
+ message: CI request is queued
+ reference: $request_id
+ EOO
+
+ $clone_root_data;
+
+ $* --result-url "http://example.com/" \
+ $loader --db-host=localhost --db-port=8432 \
+ $data_dir >>"EOO"
+ : 1
+ status: 200
+ message: CI request is queued: http://example.com
+ reference: $request_id
+ EOO
+ }
+}
+
+: failure
+:
+{
+ test.arguments += ./brep-load $data_dir
+
+ : bad-simulate
+ :
+ {
+ $clone_root_data_clean;
+
+ echo 'simulate: fly' >+$data_dir/request.manifest;
+
+ $* >>"EOO"
+ : 1
+ status: 400
+ message: unrecognized simulation outcome 'fly'
+ reference: $request_id
+ EOO
+ }
+
+ : unable-fetch-repo
+ :
+ {
+ $clone_root_data_clean;
+
+ sed -i -e "s%^\(repository:\) .+\$%\\1 http://example.com/repo.git%" \
+ $data_dir/request.manifest;
+
+ $* >>~"%EOO%"
+ : 1
+ status: 422
+ %message: unable to fetch repository information .+%
+ %.*
+ reference: $request_id
+ EOO
+ }
+
+ : loader-not-exist
+ :
+ {
+ $clone_root_data_clean;
+
+ $* 2>~'%.*brep-load.*%' != 0
+ }
+}