# file : tests/ci/ci-load.testscript # copyright : Copyright (c) 2014-2019 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 : slash-stripped : : Test that the trailing slash is stripped from the data directory path. : $* 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 prints # the loadtab, repositories manifest, and packages manifest files to # stderr. # loader=$~/brep-load +cat <<"EOI" >=$loader #!/usr/bin/env bash if [ "\$#" != 7 -o \ "\$1" != "--db-host=localhost" -o \ "\$2" != "--db-port=8432" -o \ "\$3" != "--force" -o \ "\$4" != "--shallow" -o \ "\$5" != "--tenant" -o \ -z "\$6" -o \ "\$7" != "$data_dir/loadtab" ]; then exit 1 fi cat \ "$data_dir/loadtab" \ "$data_dir/cache/repositories.manifest" \ "$data_dir/cache/packages.manifest" >&2 EOI +chmod 755 $loader : whole-repo : { $clone_root_data; $* $loader --db-host=localhost --db-port=8432 $data_dir >>"EOO" 2>>~"%EOE%" : 1 status: 200 message: CI request is queued reference: $request_id EOO $rep hello cache:cache : 1 summary: hello project repository : 1 name: libhello version: 0.1.0 project: hello summary: hello library license: TODO url: https://example.org/hello email: user@example.org %depends: \\* build2 .+% %depends: \\* bpkg .+% location: libhello %fragment: .+% : name: hello version: 0.1.0 summary: hello executable license: TODO url: https://example.org/hello email: user@example.org %depends: \\* build2 .+% %depends: \\* bpkg .+% location: hello %fragment: .+% EOE } : package : { $clone_root_data; cat <<EOI >+$data_dir/request.manifest; package: hello EOI $* $loader --db-host=localhost --db-port=8432 $data_dir >>"EOO" 2>>~"%EOE%" : 1 status: 200 message: CI request is queued reference: $request_id EOO $rep hello cache:cache : 1 summary: hello project repository : 1 name: hello version: 0.1.0 summary: hello executable license: TODO url: https://example.org/hello email: user@example.org %depends: \\* build2 .+% %depends: \\* bpkg .+% location: hello %fragment: .+% EOE } : package-version : { $clone_root_data; cat <<EOI >+$data_dir/request.manifest; package: libhello/0.1.0 EOI $* $loader --db-host=localhost --db-port=8432 $data_dir >>"EOO" 2>>~"%EOE%" : 1 status: 200 message: CI request is queued reference: $request_id EOO $rep hello cache:cache : 1 summary: hello project repository : 1 name: libhello version: 0.1.0 project: hello summary: hello library license: TODO url: https://example.org/hello email: user@example.org %depends: \\* build2 .+% %depends: \\* bpkg .+% location: libhello %fragment: .+% EOE } : result-url : { $clone_root_data; $* --result-url "http://example.com/" \ $loader --db-host=localhost --db-port=8432 \ $data_dir >>~"%EOO%" 2>>~%EOE% : 1 status: 200 %message: CI request is queued: http://example.com/@.+% %. reference: $request_id EOO %.*:.*%+ EOE } } } : 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 } }