diff --git a/tests/04-test-aptly b/tests/04-test-aptly new file mode 100755 index 0000000000000000000000000000000000000000..2a8483f194067e2d0fdda7e01310d2df74d41589 --- /dev/null +++ b/tests/04-test-aptly @@ -0,0 +1,122 @@ +#!/bin/sh + +. $(dirname $0)/scripts/common.sh + +set +x + +prj_arch="x86_64" +prj_components="target development sdk" +prj_distro="v2030" +prj_osname="apertis" +prj_repo="default" +prj_public_prefix="shared/apertis/public/apertis" + +get_prjconf () { + prj_distro="$1" + cat << EOF +Repotype: debian +type: dsc +release: b$prj_distro.0b<B_CNT> +buildengine: debootstrap +EOF +} + +get_empty_prjmeta() { + cat << EOF +<project name="$1"> + <title>$1 repository</title> +</project> +EOF +} + +APTLY_API_URL=http://aptly:8080 + +aptlyctl() { + echo + APTLY_API_URL=$APTLY_API_URL aptlyctl "$@" + docker-compose --project-directory "$OBSDIR" exec -T -e APTLY_API_URL=$APTLY_API_URL backend aptlyctl "$@" +} + +wait_for_aptly() { + iterations=5 + wait=5 + + echo "Checking aptly: $@" + + for i in $(seq $iterations) + do + if aptlyctl "$@" + then + break + fi + if [ $i -eq $iterations ] + then + return 1 + fi + echo "Sleeping ${wait}s (iteration $i/$iterations)" + sleep $wait + done +} + +cleanup() { + aptlyctl publish drop --ignore-if-missing $prj_public_prefix $prj_distro + for prj_component in $prj_components + do + project="$prj_osname:$prj_distro:$prj_component" + # Newer osc can do osc repo remove + get_empty_prjmeta $project | osc meta prj "$project" -F - + done + + tap_end +} + +trap cleanup EXIT + +for prj_component in $prj_components +do + project="$prj_osname:$prj_distro:$prj_component" + + create-project --publish Debian:$debian_release:main/main "$project/$prj_repo" + + get_prjconf $prj_distro | osc meta prjconf "$project" -F - + + repo="$project/$prj_repo" + + wait_for_aptly repo test-exists "$repo" + tap_ok $? "aptly repo for $prj_component exists" +done + +echo "Checking aptly distribution publish: $prj_public_prefix $prj_distro" +wait_for_aptly publish test-exists $prj_public_prefix $prj_distro +tap_ok $? "aptly publish exists" + +test_component=${prj_components%% *} +pkg_version=$(date +%+4Y%m%d.%H%M%S) + +cat > test-pkg.equivs <<EOF +Package: test-pkg +Version: $pkg_version +Build-Depends: debhelper-compat (= 12) +EOF + +bin_files=test-pkg + +equivs-build --source test-pkg.equivs + +osc dput $prj_osname:$prj_distro:$test_component test-pkg_*.dsc +tap_ok $? "upload and create test package" + +wait-for-pkg $prj_osname:$prj_distro:$test_component test-pkg $prj_repo x86_64 +tap_ok $? "build test package" + +echo Waiting for the package to publish +sleep 5 + +for bin_file in $bin_files; do + echo "Checking package binary: $bin_file" + aptlyctl repo search --exit-code "$prj_osname:$prj_distro:$test_component/$prj_repo" "$bin_file" | grep "$pkg_version" + tap_ok $? "binary package $bin_file present in aptly repo" +done + +echo DONE + +