#! /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. # # --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 function error () { echo "$*" 1>&2 exit 1 } bpkg="../bpkg/bpkg" cfg=/tmp/conf verbose=n remote=n options= while [ $# -gt 0 ]; do case $1 in -v) verbose=y shift ;; --remote) remote=y shift ;; --valgrind) bpkg="valgrind -q $bpkg" 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, name, and absolute location 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/ repa=$rep else rep=pkg/1/build2.org repn=build2.org/ repa=`pwd`/$rep 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" = "cfg-fetch" -o \ "$cmd" = "rep-info" ]; then ops="$ops --auth all" fi if [ -t 0 ]; then $bpkg $cmd $ops $* else # There is no way to get the exit code in process substitution # so ruin the output. # diff -u - <($bpkg $cmd $ops $* || echo "") 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" = "cfg-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 } #if false; then # 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 } ## ## 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+1.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 ## ## cfg-create ## test cfg-create --wipe cxx config.install.root=/tmp/install stat libfoo unknown test cfg-create --wipe config.install.root=/tmp/install cxx stat libfoo unknown ## ## cfg-add ## test cfg-create --wipe fail cfg-add # repository location expected fail cfg-add stable # invalid location fail cfg-add http:// # invalid location # relative path # test cfg-add ./1/bar/stable fail cfg-add ./1/../1/bar/stable # duplicate # absolute path # test cfg-add /tmp/1/foo/stable fail cfg-add /tmp/1/../1/foo/stable # duplicate # remote URL # test cfg-add http://pkg.example.org/1/testing fail cfg-add https://www.example.org/1/testing # duplicate ## ## cfg-fetch ## test cfg-create --wipe fail cfg-fetch # no repositories # hello repository # hello_fp=`rep_cert_fp pkg/1/build2.org/common/hello` test cfg-create --wipe test cfg-add $rep/common/hello test cfg-fetch --trust $hello_fp test cfg-fetch # bar/unstable repository # test cfg-create --wipe test cfg-add $rep/common/bar/unstable test cfg-fetch --trust-yes test cfg-fetch # both # test cfg-create --wipe test cfg-add $rep/common/hello test cfg-add $rep/common/bar/unstable test cfg-fetch --trust-yes test cfg-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 cfg-add $rep/fetch/t1 fail pkg-fetch libfoo/1.0.0 # no packages test cfg-fetch --trust-yes fail pkg-fetch libfoo/2+1.0.0 # not available test cfg-create --wipe test cfg-add $rep/fetch/t1 test cfg-fetch --trust-yes test pkg-fetch libfoo/1.0.0 stat libfoo/1.0.0 fetched 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 test pkg-unpack libfoo test pkg-fetch -r libfoo/1.1.0 stat libfoo/1.1.0 fetched 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 test pkg-fetch -r libfoo/1.1.0 stat libfoo/1.1.0 fetched test pkg-fetch -r -e pkg/1/build2.org/fetch/libfoo-1.0.0.tar.gz stat libfoo/1.0.0 fetched test pkg-purge libfoo # hello # test cfg-create --wipe test cfg-add $rep/common/hello test cfg-fetch --trust $hello_fp test pkg-fetch libhello/1.0.0+1 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 cfg-add $rep/fetch/t1 test cfg-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 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 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 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 test pkg-unpack libfoo stat libfoo/1.0.0 unpacked test pkg-purge libfoo # hello # test cfg-create --wipe test cfg-add $rep/common/hello test cfg-fetch --trust $hello_fp test pkg-fetch libhello/1.0.0+1 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 cfg-add $rep/common/hello test cfg-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+1 fail pkg-configure libhello # wrong package state fail pkg-disfigure libhello # wrong package state test pkg-purge libhello # src == out # test pkg-fetch libhello/1.0.0+1 test pkg-unpack libhello test pkg-configure libhello stat libhello "configured 1.0.0+1" test pkg-disfigure libhello stat libhello "unpacked 1.0.0+1" test pkg-purge libhello stat libhello/1.0.0 "available 1.0.0+1" # src != out # test cfg-create --wipe test pkg-unpack -e pkg/1/build2.org/common/libhello-1.0.0+1 test pkg-configure libhello stat libhello "configured 1.0.0+1" test pkg-disfigure libhello stat libhello "unpacked 1.0.0+1" test pkg-purge libhello stat libhello unknown gone $cfg/libhello-1.0.0+1 # out still exists after disfigure # test pkg-unpack -e pkg/1/build2.org/common/libhello-1.0.0+1 test pkg-configure libhello touch $cfg/libhello-1.0.0+1/stray fail pkg-disfigure libhello stat libhello/1.0.0+1 broken rm -r $cfg/libhello-1.0.0+1 test pkg-purge -f libhello stat libhello unknown # disfigure failed # test pkg-unpack -e pkg/1/build2.org/common/libhello-1.0.0+1 test pkg-configure libhello chmod 555 $cfg/libhello-1.0.0+1 fail pkg-disfigure libhello stat libhello/1.0.0+1 broken chmod 755 $cfg/libhello-1.0.0+1 rm -r $cfg/libhello-1.0.0+1 test pkg-purge -f libhello stat libhello unknown # configure failed but disfigure succeeds # test pkg-unpack -e pkg/1/build2.org/common/libhello-1.0.0+1 mkdir -p $cfg/libhello-1.0.0+1/build chmod 555 $cfg/libhello-1.0.0+1/build fail pkg-configure libhello stat libhello "unpacked 1.0.0+1" 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+1 mkdir -p $cfg/libhello-1.0.0+1/build chmod 555 $cfg/libhello-1.0.0+1 $cfg/libhello-1.0.0+1/build # Trip both con/dis. fail pkg-configure libhello stat libhello/1.0.0+1 broken chmod 755 $cfg/libhello-1.0.0+1 $cfg/libhello-1.0.0+1/build rm -r $cfg/libhello-1.0.0+1 test pkg-purge -f libhello stat libhello unknown # dependency management # test rep-create pkg/1/build2.org/depend/stable test cfg-create --wipe test cfg-add $rep/depend/stable test cfg-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" 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 cfg-add $rep/status/stable test cfg-fetch --trust-yes stat libfoo/1.0.0 "available" stat libfoo "available 1.0.0" test pkg-fetch libfoo/1.0.0 stat libfoo/1.0.0 "fetched" stat libfoo "fetched 1.0.0" # multiple versions/revisions # test cfg-create --wipe test cfg-add $rep/status/extra test cfg-fetch --trust-yes stat libbar "available 1.1.0+1" test cfg-add $rep/status/stable test cfg-fetch --trust-yes stat libbar "available 1.1.0+1 1.0.0" test cfg-create --wipe test cfg-add $rep/status/testing test cfg-fetch --trust-yes stat libbar "available 1.1.0 1.0.0+1 1.0.0" test cfg-create --wipe test cfg-add $rep/status/unstable test cfg-fetch --trust-yes stat libbar "available 2.0.0 1.1.0 1.0.0+1 1.0.0" test pkg-fetch libbar/1.0.0+1 stat libbar "fetched 1.0.0+1; available 2.0.0 1.1.0" test pkg-purge libbar test pkg-fetch libbar/2.0.0 stat libbar "fetched 2.0.0" ## ## pkg-update ## test cfg-create --wipe test cfg-add $rep/common/hello test cfg-fetch --trust $hello_fp fail pkg-update # package name expected fail pkg-update libhello # no such package test pkg-fetch libhello/1.0.0+1 fail pkg-update libhello # wrong package state test pkg-purge libhello # src == out # test pkg-fetch libhello/1.0.0+1 test pkg-unpack libhello test pkg-configure libhello 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+1 test pkg-configure libhello test pkg-update libhello test pkg-update libhello test pkg-disfigure libhello test pkg-purge libhello ## ## pkg-clean ## test cfg-create --wipe test cfg-add $rep/common/hello test cfg-fetch --trust $hello_fp fail pkg-clean # package name expected fail pkg-clean libhello # no such package test pkg-fetch libhello/1.0.0+1 fail pkg-clean libhello # wrong package state test pkg-purge libhello # src == out # test pkg-fetch libhello/1.0.0+1 test pkg-unpack libhello test pkg-configure libhello 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+1 test pkg-configure libhello 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 test cfg-add $rep/common/hello test cfg-fetch --trust $hello_fp test pkg-fetch libhello/1.0.0+1 test pkg-unpack libhello test pkg-configure libhello 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 cfg-add $rep/satisfy/t4c test cfg-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 # cfg-fetch # test cfg-create --wipe test cfg-add $rep/auth/signed test cfg-fetch --trust `rep_cert_fp pkg/1/build2.org/auth/signed` test cfg-fetch test cfg-fetch --trust-no # certificate is already trusted test cfg-create --wipe test cfg-add $rep/auth/signed test cfg-fetch --trust-yes test cfg-fetch test cfg-create --wipe test cfg-add $rep/auth/signed fail cfg-fetch --trust-no test cfg-create --wipe test cfg-add $rep/auth/signed fail cfg-fetch --trust-yes --trust-no # inconsistent options test cfg-create --wipe test cfg-add $rep/auth/unsigned1 test cfg-fetch --trust-yes test cfg-fetch test cfg-add $rep/auth/unsigned2 test cfg-fetch test cfg-fetch --trust-no # certificates are already trusted test cfg-create --wipe test cfg-add $rep/auth/unsigned1 fail cfg-fetch --trust-no test cfg-create --wipe test cfg-add $rep/auth/name-mismatch fail cfg-fetch --trust-yes # certificate name mismatch test cfg-create --wipe test cfg-add $rep/auth/expired fail cfg-fetch --trust-yes # certificate expired test cfg-create --wipe test cfg-add $rep/auth/sha256sum-mismatch fail cfg-fetch --trust-yes # packages file checksum mismatch test cfg-create --wipe test cfg-add $rep/auth/signature-mismatch fail cfg-fetch --trust-yes # packages file signature:mismatch # rep-info # test cfg-create --wipe test rep-info --trust-yes -d $cfg $rep/auth/signed <