diff options
author | Karen Arutyunov <karen@codesynthesis.com> | 2018-09-04 14:02:11 +0300 |
---|---|---|
committer | Karen Arutyunov <karen@codesynthesis.com> | 2018-09-04 14:02:11 +0300 |
commit | f8fdb500cc705e2b8b4a74166ceb2c6d8cee3fd3 (patch) | |
tree | 3f94b0b79ebad275904b9dc4a4165326ff598492 /tests/pkg-fetch.testscript | |
parent | f727c2b8fe273a12d059826291523060dab4b512 (diff) |
Rename .test/test{} to .testscript/testscript{}
Diffstat (limited to 'tests/pkg-fetch.testscript')
-rw-r--r-- | tests/pkg-fetch.testscript | 203 |
1 files changed, 203 insertions, 0 deletions
diff --git a/tests/pkg-fetch.testscript b/tests/pkg-fetch.testscript new file mode 100644 index 0000000..9fc8847 --- /dev/null +++ b/tests/pkg-fetch.testscript @@ -0,0 +1,203 @@ +# file : tests/pkg-fetch.testscript +# copyright : Copyright (c) 2014-2018 Code Synthesis Ltd +# license : MIT; see accompanying LICENSE file + +.include common.testscript auth.testscript config.testscript remote.testscript + +# Source repository: +# +# pkg-fetch +# |-- hello +# | |-- libhello-1.0.0.tar.gz +# | `-- repositories.manifest +# `-- t1 +# |-- libfoo-1.0.0.tar.gz +# |-- libfoo-1.1.0.tar.gz +# `-- repositories.manifest + +# Prepare repositories used by tests if running in the local mode. +# ++if ($remote != true) + rep_create += 2>! + + # Create the signed 'hello' repository. + # + cp -r $src/hello $out/hello + cat <<<$cert_manifest >+$out/hello/repositories.manifest + + $rep_create --key $key $out/hello &$out/hello/packages.manifest \ + &$out/hello/signature.manifest + + # Create the 't1' repository. + # + cp -r $src/t1 $out/t1 && $rep_create $out/t1 &$out/t1/packages.manifest +end + +pkg_purge += -d cfg +pkg_status += -d cfg +pkg_unpack += -d cfg +rep_add += -d cfg 2>! +rep_fetch += -d cfg --auth all 2>! + +: no-archive +: +$clone_cfg; +$* -e 2>>EOE != 0 + error: archive path argument expected + info: run 'bpkg help pkg-fetch' for more information + EOE + +: archive-not-exist +: +$clone_cfg; +$* -e ./no-such-file 2>>/EOE != 0 + error: archive file './no-such-file' does not exist + EOE + +: no-name +: +$clone_cfg; +$* 2>>EOE != 0 + error: package name/version argument expected + info: run 'bpkg help pkg-fetch' for more information + EOE + +: no-version +: +$clone_cfg; +$* libfoo 2>>EOE != 0 + error: package version expected + info: run 'bpkg help pkg-fetch' for more information + EOE + +: invalid-version +: +$clone_cfg; +$* libfoo/1/2/3 2>>EOE != 0 + error: invalid package version '1/2/3': alpha-numeric characters expected in a component + EOE + +: no-repositories +: +$clone_cfg; +$* libfoo/1.0.0 2>>/EOE != 0 + error: configuration cfg/ has no repositories + info: use 'bpkg rep-add' to add a repository + EOE + +: no-packages +: +{ + $clone_cfg && $rep_add $rep/t1; + + $* libfoo/1.0.0 2>>/EOE != 0 + error: configuration cfg/ has no available packages + info: use 'bpkg rep-fetch' to fetch available packages list + EOE +} + +# Note that when we fetch a package from remote repository the bpkg stderr +# contains fetch program progress output, that comes prior the informational +# message. +# + +: fetched-rep +: +{ + +$clone_cfg && $rep_add $rep/t1 && $rep_fetch --trust-yes + + : package-not-available + : + $clone_cfg; + $* libfoo/2.0.0+1 2>>/EOE != 0 + error: package libfoo 2.0.0+1 is not available + EOE + + : package-available + : + { + $clone_cfg; + + $* libfoo/1.0.0 2>>~%EOE%; + %.* + %.*fetched libfoo/1.0.0% + EOE + + $pkg_status libfoo/1.0.0 1>'libfoo fetched 1.0.0'; + + $* libfoo/1.0.0 2>>/EOE != 0; + error: package libfoo already exists in configuration cfg/ + info: version: 1.0.0, state: fetched, substate: none + info: use 'pkg-fetch --replace|-r' to replace + EOE + + $* -e $src/t1/libfoo-1.0.0.tar.gz 2>>/EOE != 0; + error: package libfoo already exists in configuration cfg/ + info: version: 1.0.0, state: fetched, substate: none + info: use 'pkg-fetch --replace|-r' to replace + EOE + + $pkg_purge libfoo 2>'purged libfoo/1.0.0' + } + + : package-replace + : + { + $clone_cfg; + + $* -e $src/t1/libfoo-1.0.0.tar.gz 2>'using libfoo/1.0.0 (external)'; + $pkg_status libfoo/1.0.0 1>'libfoo fetched 1.0.0'; + $pkg_unpack libfoo 2>'unpacked libfoo/1.0.0'; + + test.arguments += --replace; # Replace existing package. + + $* libfoo/1.1.0 2>>~%EOE%; + %.* + %.*fetched libfoo/1.1.0% + EOE + + $pkg_status libfoo/1.1.0 1>'libfoo fetched 1.1.0'; + $pkg_unpack libfoo 2>'unpacked libfoo/1.1.0'; + $* -e $src/t1/libfoo-1.0.0.tar.gz 2>'using libfoo/1.0.0 (external)'; + $pkg_status libfoo/1.0.0 1>'libfoo fetched 1.0.0'; + + $* libfoo/1.1.0 2>>~%EOE%; + %.* + %.*fetched libfoo/1.1.0% + EOE + + $pkg_status libfoo/1.1.0 1>'libfoo fetched 1.1.0'; + $* -e $src/t1/libfoo-1.0.0.tar.gz 2>'using libfoo/1.0.0 (external)'; + $pkg_status libfoo/1.0.0 1>'libfoo fetched 1.0.0'; + + $pkg_purge libfoo 2>'purged libfoo/1.0.0' + } + + : purge-existing + : + { + $clone_cfg; + cp --no-cleanup $src/t1/libfoo-1.0.0.tar.gz ./; + + $* -p -e libfoo-1.0.0.tar.gz 2>'using libfoo/1.0.0 (external)'; + + $pkg_purge libfoo 2>'purged libfoo/1.0.0' + } +} + +: hello +: +{ + $clone_cfg; + $rep_add $rep/hello; + $rep_fetch --trust $cert_fp &cfg/.bpkg/certs/**; + + $* libhello/1.0.0 2>>~%EOE%; + %.* + %.*fetched libhello/1.0.0% + EOE + + $pkg_status libhello/1.0.0 1>'libhello fetched 1.0.0'; + + $pkg_purge libhello 2>'purged libhello/1.0.0' +} |