From a791b1ce0fa2bc9859474fb6f7a9c0ff8cbd1d4a Mon Sep 17 00:00:00 2001 From: Karen Arutyunov Date: Wed, 22 Feb 2017 00:58:53 +0300 Subject: Port test.sh to testscript --- tests/test.sh | 2003 --------------------------------------------------------- 1 file changed, 2003 deletions(-) delete mode 100755 tests/test.sh (limited to 'tests/test.sh') diff --git a/tests/test.sh b/tests/test.sh deleted file mode 100755 index 6858ea6..0000000 --- a/tests/test.sh +++ /dev/null @@ -1,2003 +0,0 @@ -#! /usr/bin/env bash - -# Usage: test.sh [test-options] [bpkg-common-options] -# -# Test options are: -# -# -v -# Run verbose. By default, this script runs bpkg quiet and suppresses -# error messages in the fail tests. Note that when this options is -# specified, bpkg is called with default verbosity level. If you want -# more bpkg diagnostics, add the --verbose N option. -# -# --remote -# Test using the remote repositories. Normally, you would first run the -# local test in order to create the repositories, then publish them (see -# pkg/publish.sh), and finally run the remote test. -# -# -c -# Use the compiler specified to configure cxx module. -# -# --valgrind -# Run under valgrind (takes forever). -# -# Some common bpkg use-cases worth testing: -# -# --fetch wget -# --fetch curl -# --fetch fetch --fetch-option --no-verify-peer -# -# --tar bsdtar -# -# --sha256 shasum -# --sha256 sha256-freebsd -# - -trap 'exit 1' ERR - -tmp_file=`mktemp` - -# Remove temporary file on exit. Cover the case when exit due to an error. -# -trap 'rm -f $tmp_file' EXIT - -function error () -{ - echo "$*" 1>&2 - exit 1 -} - -bpkg="../bpkg/bpkg" -cfg=/tmp/conf - -if [ "${MSYSTEM:0:5}" = "MINGW" -o "${MSYSTEM:0:4}" = "MSYS" ]; then - msys=y -fi - -verbose=n -remote=n -options= -cxx_options= - -while [ $# -gt 0 ]; do - case $1 in - -v) - verbose=y - shift - ;; - --remote) - remote=y - shift - ;; - --valgrind) - bpkg="valgrind -q $bpkg" - shift - ;; - -c) - shift - cxx_options="config.cxx=$1" - shift - ;; - *) - # If this is the --verbose bpkg option, switch to the verbose - # mode as well. - # - if [ "$1" == "--verbose" ]; then - verbose=y - fi - - options="$options $1" - shift - ;; - esac -done - -if [ "$verbose" != "y" ]; then - options="$options -q" -fi - -bpkg="$bpkg $options" - -# Repository location and name prefixes. Note that the local path is carefully -# crafted so that we end up with the same repository names in both cases. This -# is necessary for the authentication tests to work in both cases. -# -if [ "$remote" = "y" ]; then - rep=https://build2.org/bpkg/1 - repn=build2.org/ -else - rep=pkg/1/build2.org - repn=build2.org/ -fi - -# -# -function test () -{ - local cmd=$1; shift - local ops= - - if [ "$cmd" != "rep-create" -a \ - "$cmd" != "rep-info" -a \ - "$cmd" != "pkg-verify" ]; then - ops="-d $cfg" - fi - - if [ "$cmd" = "rep-fetch" -o \ - "$cmd" = "rep-info" ]; then - ops="$ops --auth all" - fi - - if [ -t 0 ]; then - $bpkg $cmd $ops $* - else - $bpkg $cmd $ops $* >$tmp_file - diff --strip-trailing-cr -u - $tmp_file - fi - - if [ $? -ne 0 ]; then - error "failed: $bpkg $cmd $ops $*" - fi -} - -function fail () -{ - local cmd=$1; shift - local ops= - - if [ "$cmd" != "rep-create" -a \ - "$cmd" != "rep-info" -a \ - "$cmd" != "pkg-verify" ]; then - ops="-d $cfg" - fi - - if [ "$cmd" = "rep-fetch" -o \ - "$cmd" = "rep-info" ]; then - ops="$ops --auth all" - fi - - if [ "$verbose" = "y" ]; then - $bpkg $cmd $ops $* - else - $bpkg $cmd $ops $* 2>/dev/null - fi - - if [ $? -eq 0 ]; then - error "succeeded: $bpkg $cmd $ops $*" - fi - - return 0 -} - -# Verify package status. -# -function stat () -{ - local s=`$bpkg pkg-status -d $cfg $1` - - if [ "$s" != "$2" ]; then - error "status $1: '$s', expected: '$2'" - fi -} - -# Verify path is gone (no longer exists) -# -function gone () -{ - if [ -e "$1" ]; then - error "path $1 still exists" - fi -} - -# Repository certificate fingerprint. -# -function rep_cert_fp () -{ - cat $1/repositories | \ - sed -n '/^-----BEGIN CERTIFICATE-----$/,/^-----END CERTIFICATE-----$/p' | \ - openssl x509 -sha256 -noout -fingerprint | \ - sed -n 's/^SHA256 Fingerprint=\(.*\)$/\1/p' -} - -# Edit file with sed. -# -function edit () -{ - local path=$1; shift - sed "$@" $path > $path.bak - mv $path.bak $path -} - -# Repository absolute location from a relative path. -# -function location () -{ - if [ "$remote" = "y" ]; then - echo "$rep/$1" - elif [ "$msys" = "y" ]; then - # Convert Windows path like c:/abc/xyz to the c:\abc\xyz canonical form. - # - echo "`pwd -W`/$rep/$1" | sed 's%/%\\%g' - else - echo "`pwd`/$rep/$1" - fi -} - -## -## Low-level commands. -## - -## -## pkg-verify -## -fail pkg-verify # archive expected -fail pkg-verify ./no-such-file # archive does not exist -fail pkg-verify pkg/1/build2.org/common/not-a-package.tar.gz -fail pkg-verify --silent pkg/1/build2.org/common/not-a-package.tar.gz -test pkg-verify pkg/1/build2.org/common/hello/libhello-1.0.0.tar.gz - - -## -## rep-create -## -fail rep-create # no 'repositories' file -fail rep-create pkg/1/build2.org/satisfy # unexpected files - -test rep-create pkg/1/build2.org/common/hello --key key.pem - -test rep-create pkg/1/build2.org/common/foo/stable -test rep-create pkg/1/build2.org/common/foo/testing - -test rep-create pkg/1/build2.org/common/bar/stable -test rep-create pkg/1/build2.org/common/bar/testing -test rep-create pkg/1/build2.org/common/bar/unstable - - -## -## rep-info -## -fail rep-info # repository location expected - -test rep-info --trust-yes $rep/common/foo/testing <= 1.1.0 -location: libbar-1.1.1.tar.gz -sha256sum: d09700602ff78ae405b6d4850e34660e939d27676e015a23b549884497c8bb45 -EOF - -hello_fp=`rep_cert_fp pkg/1/build2.org/common/hello` - -test rep-info -m -p --trust $hello_fp $rep/common/hello <= 0.4.0 -location: libhello-1.0.0.tar.gz -sha256sum: d18d1472980399dd1fdbc776cb3eb3f7b2f62447210c8cfbcf1a8dd52a468395 -EOF - -## -## cfg-create -## -test cfg-create --wipe cxx $cxx_options config.install.root=/tmp/install -stat libfoo unknown - -test cfg-create --wipe config.install.root=/tmp/install cxx $cxx_options -stat libfoo unknown - - -## -## rep-add -## -test cfg-create --wipe - -fail rep-add # repository location expected -fail rep-add stable # invalid location -fail rep-add http:// # invalid location - -# relative path -# -test rep-add ./1/bar/stable -fail rep-add ./1/../1/bar/stable # duplicate - -# absolute path -# -test rep-add /tmp/1/foo/stable -fail rep-add /tmp/1/../1/foo/stable # duplicate - -# remote URL -# -test rep-add http://pkg.example.org/1/testing -fail rep-add https://www.example.org/1/testing # duplicate - - -## -## rep-fetch -## -test cfg-create --wipe - -fail rep-fetch # no repositories - -# hello repository -# -test cfg-create --wipe -test rep-add $rep/common/hello -test rep-fetch --trust $hello_fp -test rep-fetch - -# bar/unstable repository -# -test cfg-create --wipe -test rep-add $rep/common/bar/unstable -test rep-fetch --trust-yes -test rep-fetch - -# both -# -test cfg-create --wipe -test rep-add $rep/common/hello -test rep-add $rep/common/bar/unstable -test rep-fetch --trust-yes -test rep-fetch - - -## -## pkg-fetch -## -test rep-create pkg/1/build2.org/fetch/t1 -test cfg-create --wipe - -fail pkg-fetch -e # archive expected -fail pkg-fetch -e ./no-such-file # archive does not exist - -fail pkg-fetch # package name expected -fail pkg-fetch libfoo # package version expected -fail pkg-fetch libfoo/1/2/3 # invalid package version - -fail pkg-fetch libfoo/1.0.0 # no repositories -test rep-add $rep/fetch/t1 -fail pkg-fetch libfoo/1.0.0 # no packages -test rep-fetch --trust-yes -fail pkg-fetch libfoo/2+1.0.0 # not available -test cfg-create --wipe -test rep-add $rep/fetch/t1 -test rep-fetch --trust-yes -test pkg-fetch libfoo/1.0.0 -stat libfoo/1.0.0 "fetched; available" -fail pkg-fetch libfoo/1.0.0 -fail pkg-fetch -e pkg/1/build2.org/fetch/libfoo-1.0.0.tar.gz -test pkg-purge libfoo -test pkg-fetch -e pkg/1/build2.org/fetch/libfoo-1.0.0.tar.gz -stat libfoo/1.0.0 "fetched; available" -test pkg-unpack libfoo -test pkg-fetch -r libfoo/1.1.0 -stat libfoo/1.1.0 "fetched; available" -test pkg-unpack libfoo -test pkg-fetch -r -e pkg/1/build2.org/fetch/libfoo-1.0.0.tar.gz -stat libfoo/1.0.0 "fetched; available" -test pkg-fetch -r libfoo/1.1.0 -stat libfoo/1.1.0 "fetched; available" -test pkg-fetch -r -e pkg/1/build2.org/fetch/libfoo-1.0.0.tar.gz -stat libfoo/1.0.0 "fetched; available" -test pkg-purge libfoo - -# hello -# -test cfg-create --wipe -test rep-add $rep/common/hello -test rep-fetch --trust $hello_fp -test pkg-fetch libhello/1.0.0 -test pkg-purge libhello - - -## -## pkg-unpack -## -test cfg-create --wipe -fail pkg-unpack -r # replace only with existing -fail pkg-unpack -e # package directory expected -fail pkg-unpack # package name expected - -test rep-add $rep/fetch/t1 -test rep-fetch --trust-yes - -# existing -# -fail pkg-unpack -e ./no-such-dir # package directory does not exist -fail pkg-unpack -e ./pkg # not a package directory -test pkg-fetch libfoo/1.0.0 -fail pkg-unpack -e pkg/1/build2.org/fetch/libfoo-1.1.0 # already exists -test pkg-purge libfoo -test pkg-unpack -e pkg/1/build2.org/fetch/libfoo-1.1.0 -stat libfoo/1.1.0 "unpacked; available" -test pkg-purge libfoo - -# existing & replace -# -test pkg-fetch libfoo/1.0.0 -fail pkg-unpack -e pkg/1/build2.org/fetch/libfoo-1.1.0 -test pkg-unpack -r -e pkg/1/build2.org/fetch/libfoo-1.1.0 -stat libfoo/1.1.0 "unpacked; available" -test pkg-purge libfoo -test pkg-fetch libfoo/1.0.0 -test pkg-unpack libfoo -fail pkg-unpack -e pkg/1/build2.org/fetch/libfoo-1.1.0 -test pkg-unpack -r -e pkg/1/build2.org/fetch/libfoo-1.1.0 -stat libfoo/1.1.0 "unpacked; available" -test pkg-purge libfoo - -# package name -# -fail pkg-unpack libfoo # no such package in configuration -test pkg-unpack -e pkg/1/build2.org/fetch/libfoo-1.1.0 -fail pkg-unpack libfoo # wrong package state -test pkg-purge libfoo -test pkg-fetch libfoo/1.0.0 -stat libfoo/1.0.0 "fetched; available" -test pkg-unpack libfoo -stat libfoo/1.0.0 "unpacked; available" -test pkg-purge libfoo - -# hello -# -test cfg-create --wipe -test rep-add $rep/common/hello -test rep-fetch --trust $hello_fp -test pkg-fetch libhello/1.0.0 -test pkg-unpack libhello -test pkg-purge libhello - - -## -## pkg-purge -## -test cfg-create --wipe - -fail pkg-purge # missing package name -fail pkg-purge libfoo # no such package - -# purge fetched -# -test pkg-fetch -e pkg/1/build2.org/fetch/libfoo-1.0.0.tar.gz -test pkg-purge libfoo -stat libfoo unknown - -# --keep -# -test pkg-fetch -e pkg/1/build2.org/fetch/libfoo-1.0.0.tar.gz -test pkg-purge -k libfoo -stat libfoo "fetched 1.0.0" -test pkg-purge libfoo - -# archive and --purge -# -cp pkg/1/build2.org/fetch/libfoo-1.0.0.tar.gz $cfg/ -test pkg-fetch -e -p $cfg/libfoo-1.0.0.tar.gz -test pkg-purge libfoo -stat libfoo unknown -gone $cfg/libfoo-1.0.0.tar.gz - -# no archive but --keep -# -test pkg-unpack -e pkg/1/build2.org/fetch/libfoo-1.1.0 -fail pkg-purge --keep libfoo -stat libfoo "unpacked 1.1.0" -test pkg-purge libfoo - -# purge unpacked directory -# -test pkg-unpack -e pkg/1/build2.org/fetch/libfoo-1.1.0 -test pkg-purge libfoo -stat libfoo unknown - -# purge unpacked archive -# -test pkg-fetch -e pkg/1/build2.org/fetch/libfoo-1.0.0.tar.gz -test pkg-unpack libfoo -test pkg-purge libfoo -stat libfoo unknown -gone $cfg/libfoo-1.0.0 - -# purge unpacked archive but --keep -# -test pkg-fetch -e pkg/1/build2.org/fetch/libfoo-1.0.0.tar.gz -test pkg-unpack libfoo -test pkg-purge --keep libfoo -stat libfoo "fetched 1.0.0" -gone $cfg/libfoo-1.0.0 -test pkg-purge libfoo -stat libfoo unknown - -# directory and --purge -# -cp -r pkg/1/build2.org/fetch/libfoo-1.1.0 $cfg/ -test pkg-unpack -e -p $cfg/libfoo-1.1.0 -test pkg-purge libfoo -stat libfoo unknown -gone $cfg/libfoo-1.1.0 - -# archive and --purge -# -cp pkg/1/build2.org/fetch/libfoo-1.0.0.tar.gz $cfg/ -test pkg-fetch -e -p $cfg/libfoo-1.0.0.tar.gz -test pkg-unpack libfoo -test pkg-purge libfoo -stat libfoo unknown -gone $cfg/libfoo-1.0.0 -gone $cfg/libfoo-1.0.0.tar.gz - -# broken -# -cp pkg/1/build2.org/fetch/libfoo-1.0.0.tar.gz $cfg/ -test pkg-fetch -e -p $cfg/libfoo-1.0.0.tar.gz -test pkg-unpack libfoo -chmod 000 $cfg/libfoo-1.0.0 -fail pkg-purge libfoo -stat libfoo/1.0.0 broken -fail pkg-purge libfoo # need --force -fail pkg-purge -f -k libfoo # can't keep broken -fail pkg-purge -f libfoo # out directory still exists -chmod 755 $cfg/libfoo-1.0.0 -rm -r $cfg/libfoo-1.0.0 -fail pkg-purge -f libfoo # archive still exists -rm $cfg/libfoo-1.0.0.tar.gz -test pkg-purge -f libfoo -stat libfoo unknown - -## -## pkg-configure/pkg-disfigure -## -test cfg-create --wipe -test rep-add $rep/common/hello -test rep-fetch --trust $hello_fp - -fail pkg-configure # package name expected -fail pkg-configure config.dist.root=/tmp # ditto -fail pkg-configure libhello libhello # unexpected argument -fail pkg-configure libhello1 # no such package - -fail pkg-disfigure # package name expected -fail pkg-disfigure libhello1 # no such package - -test pkg-fetch libhello/1.0.0 - -fail pkg-configure libhello $cxx_options # wrong package state -fail pkg-disfigure libhello # wrong package state - -test pkg-purge libhello - -# src == out -# -test pkg-fetch libhello/1.0.0 -test pkg-unpack libhello -test pkg-configure libhello $cxx_options -stat libhello "configured 1.0.0; available sys:?" -test pkg-disfigure libhello -stat libhello "unpacked 1.0.0; available sys:?" -test pkg-purge libhello -stat libhello/1.0.0 "available" - -# src != out -# -test cfg-create --wipe -test pkg-unpack -e pkg/1/build2.org/common/libhello-1.0.0 -test pkg-configure libhello $cxx_options -stat libhello "configured 1.0.0" -test pkg-disfigure libhello -stat libhello "unpacked 1.0.0" -test pkg-purge libhello -stat libhello unknown -gone $cfg/libhello-1.0.0 - -# out still exists after disfigure -# -test pkg-unpack -e pkg/1/build2.org/common/libhello-1.0.0 -test pkg-configure libhello $cxx_options -touch $cfg/libhello-1.0.0/stray -fail pkg-disfigure libhello -stat libhello/1.0.0 broken -rm -r $cfg/libhello-1.0.0 -test pkg-purge -f libhello -stat libhello unknown - -# disfigure failed -# -test pkg-unpack -e pkg/1/build2.org/common/libhello-1.0.0 -test pkg-configure libhello $cxx_options -chmod 555 $cfg/libhello-1.0.0 -fail pkg-disfigure libhello -stat libhello/1.0.0 broken -chmod 755 $cfg/libhello-1.0.0 -rm -r $cfg/libhello-1.0.0 -test pkg-purge -f libhello -stat libhello unknown - -# While it's forbidden to delete a directory with write permissions being -# revoked with the 'chmod 555' command in MSYS, it's still allowed to create -# subdirectories and files inside such a directory. This is why the following -# 'fail pkg-configure libhello' test cases undesirably succeed in MSYS. -# -if [ "$msys" != "y" ]; then - # configure failed but disfigure succeeds - # - test pkg-unpack -e pkg/1/build2.org/common/libhello-1.0.0 - mkdir -p $cfg/libhello-1.0.0/build - chmod 555 $cfg/libhello-1.0.0/build - fail pkg-configure libhello $cxx_options - stat libhello "unpacked 1.0.0" - test pkg-purge libhello - stat libhello unknown - - # configure and disfigure both failed - # - test pkg-unpack -e pkg/1/build2.org/common/libhello-1.0.0 - mkdir -p $cfg/libhello-1.0.0/build - # Trip both con/dis. - # - chmod 555 $cfg/libhello-1.0.0 $cfg/libhello-1.0.0/build - fail pkg-configure libhello $cxx_options - stat libhello/1.0.0 broken - chmod 755 $cfg/libhello-1.0.0 $cfg/libhello-1.0.0/build - rm -r $cfg/libhello-1.0.0 - test pkg-purge -f libhello - stat libhello unknown -fi - -# dependency management -# -test rep-create pkg/1/build2.org/depend/stable -test cfg-create --wipe -test rep-add $rep/depend/stable -test rep-fetch --trust-yes - -test pkg-fetch libbar/1.0.0 -test pkg-unpack libbar -fail pkg-configure libbar # no libfoo -stat libbar/1.0.0 "unpacked; available" -test pkg-fetch libfoo/1.0.0 -test pkg-unpack libfoo -fail pkg-configure libbar # libfoo not configured -test pkg-configure libfoo -test pkg-configure libbar -fail pkg-disfigure libfoo # libbar still depends on libfoo -test pkg-disfigure libbar -test pkg-disfigure libfoo -test pkg-purge libbar -test pkg-purge libfoo - -test pkg-fetch libfoo/1.0.0 -test pkg-unpack libfoo -test pkg-configure libfoo -test pkg-fetch libbar/1.1.0 -test pkg-unpack libbar -fail pkg-configure libbar # libfoo >= 1.1.0 -test pkg-disfigure libfoo -test pkg-purge libfoo -test pkg-fetch libfoo/1.1.0 -test pkg-unpack libfoo -test pkg-configure libfoo -test pkg-configure libbar -test pkg-disfigure libbar -test pkg-disfigure libfoo -test pkg-purge libfoo -test pkg-purge libbar - -test pkg-fetch libfoo/1.1.0 -test pkg-unpack libfoo -test pkg-configure libfoo -test pkg-fetch libbar/1.2.0 -test pkg-unpack libbar -fail pkg-configure libbar # libfoo >= 1.2.0 -test pkg-disfigure libfoo -test pkg-purge libfoo -test pkg-fetch libfoo/1.2.0 -test pkg-unpack libfoo -test pkg-configure libfoo -test pkg-configure libbar -fail pkg-disfigure libfoo # "package libbar on libfoo >= 1.2.0" -test pkg-disfigure libbar -test pkg-disfigure libfoo -test pkg-purge libfoo -test pkg-purge libbar - -test pkg-fetch libfoo/1.1.0 -test pkg-unpack libfoo -test pkg-configure libfoo -test pkg-fetch libbar/1.3.0 -test pkg-unpack libbar -fail pkg-configure libbar # incompatible constraints -test pkg-disfigure libfoo -test pkg-purge libfoo -test pkg-purge libbar - - -## -## pkg-status (also tested in pkg-{fetch,unpack,configure,disfigure,purge}) -## -test rep-create pkg/1/build2.org/status/stable -test rep-create pkg/1/build2.org/status/extra -test rep-create pkg/1/build2.org/status/testing -test rep-create pkg/1/build2.org/status/unstable - -# basics -# -test cfg-create --wipe -stat libfoo/1.0.0 "unknown" -stat libfoo "unknown" -test rep-add $rep/status/stable -test rep-fetch --trust-yes -stat libfoo/1.0.0 "available" -stat libfoo "available 1.0.0 sys:?" -test pkg-fetch libfoo/1.0.0 -stat libfoo/1.0.0 "fetched; available" -stat libfoo "fetched 1.0.0; available sys:?" - -# multiple versions/revisions -# -test cfg-create --wipe -test rep-add $rep/status/extra -test rep-fetch --trust-yes -stat libbar "available 1.1.0+1 sys:?" -test rep-add $rep/status/stable -test rep-fetch --trust-yes -stat libbar "available 1.1.0+1 1.0.0 sys:?" - -test cfg-create --wipe -test rep-add $rep/status/testing -test rep-fetch --trust-yes -stat libbar "available 1.1.0 1.0.0+1 1.0.0 sys:?" - -test cfg-create --wipe -test rep-add $rep/status/unstable -test rep-fetch --trust-yes -stat libbar "available 2.0.0 1.1.0 1.0.0+1 1.0.0 sys:?" -test pkg-fetch libbar/1.0.0+1 -stat libbar "fetched 1.0.0+1; available 2.0.0 1.1.0 sys:?" -test pkg-purge libbar -test pkg-fetch libbar/2.0.0 -stat libbar "fetched 2.0.0; available sys:?" - - -## -## pkg-update -## -test cfg-create --wipe -test rep-add $rep/common/hello -test rep-fetch --trust $hello_fp - -fail pkg-update # package name expected -fail pkg-update libhello # no such package -test pkg-fetch libhello/1.0.0 -fail pkg-update libhello # wrong package state -test pkg-purge libhello - -# src == out -# -test pkg-fetch libhello/1.0.0 -test pkg-unpack libhello -test pkg-configure libhello $cxx_options -test pkg-update libhello -test pkg-update libhello -test pkg-disfigure libhello -test pkg-purge libhello - -# src != out -# -test cfg-create --wipe -test pkg-unpack -e pkg/1/build2.org/common/libhello-1.0.0 -test pkg-configure libhello $cxx_options -test pkg-update libhello -test pkg-update libhello -test pkg-disfigure libhello -test pkg-purge libhello - - -## -## pkg-clean -## -test cfg-create --wipe -test rep-add $rep/common/hello -test rep-fetch --trust $hello_fp - -fail pkg-clean # package name expected -fail pkg-clean libhello # no such package -test pkg-fetch libhello/1.0.0 -fail pkg-clean libhello # wrong package state -test pkg-purge libhello - -# src == out -# -test pkg-fetch libhello/1.0.0 -test pkg-unpack libhello -test pkg-configure libhello $cxx_options -test pkg-update libhello -test pkg-clean libhello -test pkg-clean libhello -test pkg-disfigure libhello -test pkg-purge libhello - -# src != out -# -test cfg-create --wipe -test pkg-unpack -e pkg/1/build2.org/common/libhello-1.0.0 -test pkg-configure libhello $cxx_options -test pkg-update libhello -test pkg-clean libhello -test pkg-clean libhello -test pkg-disfigure libhello -test pkg-purge libhello - - -## -## Low-level command scenarios. -## - - -# build and clean package -# -test cfg-create --wipe cxx $cxx_options -test rep-add $rep/common/hello -test rep-fetch --trust $hello_fp -test pkg-fetch libhello/1.0.0 -test pkg-unpack libhello -test pkg-configure libhello $cxx_options -test pkg-update libhello -test pkg-clean libhello -test pkg-disfigure libhello -test pkg-purge libhello - -## -## pkg-build -## - -# 1 (libfoo) -# -test rep-create pkg/1/build2.org/satisfy/t1 -test cfg-create --wipe - -fail pkg-build -p # package name expected -fail pkg-build -p libfoo # unknown package -fail pkg-build -p libfoo/1.0.0 # unknown package -test pkg-build -p pkg/1/build2.org/satisfy/libfoo-1.1.0.tar.gz <= 1.1.0) -# -test rep-create pkg/1/build2.org/satisfy/t4a -test rep-create pkg/1/build2.org/satisfy/t4b -test rep-create pkg/1/build2.org/satisfy/t4c -test rep-create pkg/1/build2.org/satisfy/t4d - -test cfg-create --wipe -test rep-add $rep/satisfy/t4c -test rep-fetch --trust-yes - -test pkg-build -p libbaz <> pkg/1/build2.org/auth/signature-mismatch/signature << EOF -signature: \\ -XBjnmXXVHY0RqMI0gL/P4t/vuWwK9JJkLl4Qf2gMxq5k2WQ2CIE56DfG0RaGklgKcI3UxsQZvMQI -5PNtAHJDjteQ+BqY0io8A43KPX+2LKMU+I825sKmPRjCLYleGM3mNndDkWfYtAzYk5AmR2piqRz0 -D7CLq9GIoQQZO4Fw44muaQDMCRcXy8Txx2jDnretQjx/C0ZQw4M/cd6/cKEKUmLITDkBig9oVlSh -tpxHqWz5NTbO3vm8ILc03AwiOJHwZweLb6ocJ6a467IJa+F/xUm9B09k8wFWMs+jHXXzHDE0syv7 -lqWL7SvHSjVFrGVFKS6nx7lCj2b8XFiGlwWIwjY4m/VK/5QmbL/lC4f+ww5XT5NG5iYh/eMaCxCJ -zTg5iZsWNLhrx9uKNrL5xC4z0OONRVOwzu7gsqr0GLWewPyhH0AqJLgOSkw9N7FJwbv2IKNZ88YA -u2YMXNkXytcQvENLVQDX5oxvUMEurUJFOCuYB/SEnpcwkV5h9RtXzIFVy4OCTU2MhQHDEldI8s7w -Hga/ct4WupgE228gGdgwJLCbHx6AWBlS9iL10AdS8JkQ9LaZwTMHHz44f8y00X4MiT06gpgDeoQD -rUyP0KNG65tdWnVTMqg6Q/YXhtRZLHoD6+QbiYLlruR1phu4y4fDt7AKxoXfeme/a86A37UogZY= -\\ -EOF - -# rep-fetch -# -signed_fp=`rep_cert_fp pkg/1/build2.org/auth/signed` -test cfg-create --wipe -test rep-add $rep/auth/signed -test rep-fetch --trust $signed_fp -test rep-fetch - -test cfg-create --wipe -test rep-add $rep/auth/signed -test rep-fetch --trust-no --trust $signed_fp -test rep-fetch -test rep-fetch --trust-no # certificate is already trusted - -test cfg-create --wipe -test rep-add $rep/auth/signed -test rep-fetch --trust-yes -test rep-fetch - -test cfg-create --wipe -test rep-add $rep/auth/signed -fail rep-fetch --trust-no - -test cfg-create --wipe -test rep-add $rep/auth/signed -fail rep-fetch --trust-yes --trust-no # inconsistent options - -test cfg-create --wipe -test rep-add $rep/auth/unsigned1 -test rep-fetch --trust-yes -test rep-fetch -test rep-add $rep/auth/unsigned2 -test rep-fetch -test rep-fetch --trust-no # certificates are already trusted - -test cfg-create --wipe -test rep-add $rep/auth/unsigned1 -fail rep-fetch --trust-no - -test cfg-create --wipe -test rep-add $rep/auth/name-mismatch -fail rep-fetch --trust-yes # certificate name mismatch - -test cfg-create --wipe -test rep-add $rep/auth/expired -fail rep-fetch --trust-yes # certificate expired - -test cfg-create --wipe -test rep-add $rep/auth/sha256sum-mismatch -fail rep-fetch --trust-yes # packages file checksum mismatch - -test cfg-create --wipe -test rep-add $rep/auth/signature-mismatch -fail rep-fetch --trust-yes # packages file signature:mismatch - -# rep-info -# -test cfg-create --wipe -test rep-info --trust-no --trust $signed_fp -d $cfg $rep/auth/signed <libbar>=2), libbar/2 -test rep-create pkg/1/build2.org/system/t2 # foo/2 (->libbar>=2), libbar/0+1 -test rep-create pkg/1/build2.org/system/t3 # ->t2; foo/2 (->libbar>=2) - -function build () -{ - test build -p $* - test build -y $* -} - -# Fetch system/t1 repository: foo/2 (->libbar/2), libbar/2 -# -test cfg-create --wipe -test rep-add $rep/system/t1 -test rep-fetch --trust-yes - -# Fail to build different combinations of package duplicates on the command -# line. -# -fail build sys:libbar ?sys:libbar -fail build ?sys:libbar sys:libbar -fail build ?sys:libbar libbar -fail build libbar ?sys:libbar -fail build sys:libbar libbar -fail build libbar sys:libbar - -# Build sys:libbar/*. -# -build sys:libbar <<< 'configure sys:libbar/*' -stat libbar \ - 'configured,system * hold_package hold_version; available 2 1 sys:?' -stat libbaz 'available 2 sys:?' - -# Build foo with preconfigured sys:libbar/*. -# -build foo <<< "build foo/2" -stat foo 'configured 2 hold_package; available sys:?' -stat libbar \ - 'configured,system * hold_package hold_version; available 2 1 sys:?' -stat libbaz 'available 2 sys:?' - -# Reconfigure sys:libbar/* to 2. -# -build sys:libbar/2 <libbar>=2), libbar/0+1 -# -test cfg-create --wipe -test rep-add $rep/system/t2 -test rep-fetch --trust-yes - -# Fail to build foo having no system package configured. -# -fail build foo -fail build foo libbar -stat foo 'available 2 sys:?' -stat libbar 'available sys:?' - -# Build foo configuring sys:libbar. -# -build foo sys:libbar <libbar>=2), libbar/0+1 -# -test cfg-create --wipe -test rep-add $rep/system/t3 # ->t2; foo/2 (->libbar>=2) -test rep-fetch --trust-yes - -# After test number of faulty builds, then build foo ?sys:libbar/2. Afterwards -# fail attempts to reconfigure libbar. -# -fail build foo -fail build sys:libbar/1 -fail build foo sys:libbar/1 -fail build foo ?sys:libbar/1 -stat foo 'available 2 sys:?' -stat libbar 'unknown' - -build foo ?sys:libbar/2 <