diff options
author | Karen Arutyunov <karen@codesynthesis.com> | 2018-08-23 22:29:35 +0300 |
---|---|---|
committer | Karen Arutyunov <karen@codesynthesis.com> | 2018-08-28 21:46:41 +0300 |
commit | 8a094bb0481a9c53646cc15db2e8acecafc3d10c (patch) | |
tree | 4fd7012b6a26eb852d42fba8b52bfcf8f1cf2fdd /tests/ci | |
parent | 7e0e141273032c7afc1a9129512aa42c672fcf5d (diff) |
Add basic support for CI request handling
Diffstat (limited to 'tests/ci')
-rw-r--r-- | tests/ci/buildfile | 16 | ||||
-rw-r--r-- | tests/ci/ci-dir.test | 77 | ||||
-rw-r--r-- | tests/ci/data.test | 39 |
3 files changed, 132 insertions, 0 deletions
diff --git a/tests/ci/buildfile b/tests/ci/buildfile new file mode 100644 index 0000000..b1c3146 --- /dev/null +++ b/tests/ci/buildfile @@ -0,0 +1,16 @@ +# file : tests/ci/buildfile +# copyright : Copyright (c) 2014-2018 Code Synthesis Ltd +# license : MIT; see accompanying LICENSE file + +define common: file +common{*}: extension = test + +dir = ../../brep/handler/ci/ + +include $dir + +commons = data + +./: test{* -{$commons}} common{$commons} $dir/exe{brep-ci-dir} + +test{ci-dir}@./: test = $out_base/$dir/brep-ci-dir diff --git a/tests/ci/ci-dir.test b/tests/ci/ci-dir.test new file mode 100644 index 0000000..5b9e8c8 --- /dev/null +++ b/tests/ci/ci-dir.test @@ -0,0 +1,77 @@ +# file : tests/ci/ci-dir.test +# copyright : Copyright (c) 2014-2018 Code Synthesis Ltd +# license : MIT; see accompanying LICENSE file + +.include data.test + +: args +{ + : none + : + $* 2>>~%EOE% != 0 + %\[.+\] \[brep:error\] \[ref \] \[brep-ci-dir\]: usage: .+brep-ci-dir <dir>% + EOE + + : not-exist + : + $* $~/dir 2>>~%EOE% != 0 + %\[.+\] \[brep:error\] \[ref dir\] \[brep-ci-dir\]: '.+dir' does not exist or is not a directory% + EOE +} + +: success +: +{ + test.arguments += $data_dir + + : simulate + : + { + $clone_root_data; + + echo "simulate: success" >+$data_dir/request.manifest; + + $* >>"EOO"; + : 1 + status: 200 + message: CI request is queued + reference: $request_id + EOO + + test -d $data_dir != 0 + } + + : for-real + : + { + $clone_root_data_clean; + + $* >>"EOO" + : 1 + status: 200 + message: CI request is queued + reference: $request_id + EOO + } +} + +: failure +: +{ + test.arguments += $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 + } +} diff --git a/tests/ci/data.test b/tests/ci/data.test new file mode 100644 index 0000000..c30a691 --- /dev/null +++ b/tests/ci/data.test @@ -0,0 +1,39 @@ +# file : tests/ci/data.test +# copyright : Copyright (c) 2014-2018 Code Synthesis Ltd +# license : MIT; see accompanying LICENSE file + +# Pre-created CI request submission data directory that will be copied by +# subsequent tests and scope setup commands. The common approach will be that +# group scopes copy and modify the parent scope submission directory as +# required by the nested tests and scopes. Tests will also clone the parent +# scope submission data directory to optionally modify it, use and cleanup at +# the end. Note that configuration can not be shared between multiple +# submission handler processes. Also we need to make sure that submission data +# directories are not cloned while being used by submission handler scripts. +# +request_id = 4cfa00ec-8459-4f4f-9ef0-8883ddcc4f5b +data_dir = $request_id/ + ++mkdir $data_dir + ++cat <<"EOI" >=$data_dir/request.manifest + : 1 + id: $request_id + repository: https://example.com/hello.git#master + package: foo + package: bar/1.0 + timestamp: 2018-08-24T18:08:01Z + EOI + +root_data_dir = $~/$data_dir + +# The most commonly used submission data directory cloning command that copies +# it from the parent scope working directory. +# +clone_data = cp --no-cleanup -r ../$data_dir ./ +clone_data_clean = cp --no-cleanup -r ../$data_dir ./ &$data_dir/*** + +# Clones the original submission data directory. +# +clone_root_data = cp --no-cleanup -r $root_data_dir ./ +clone_root_data_clean = cp --no-cleanup -r $root_data_dir ./ &$data_dir/*** |