# file : tests/pkg-fetch.testscript # copyright : Copyright (c) 2014-2019 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>! # Let's disable the progress indication that complicates stderr output # validation. # test.options += --no-progress : 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 } : 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>'fetched libfoo/1.0.0'; $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>'fetched libfoo/1.1.0'; $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>'fetched libfoo/1.1.0'; $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>'fetched libhello/1.0.0'; $pkg_status libhello/1.0.0 1>'libhello fetched 1.0.0'; $pkg_purge libhello 2>'purged libhello/1.0.0' }