From: Pierre Schmitz <pie...@archlinux.de> (cherry picked from commit 76f95dd139094dc2985b6733f23fcb098f07c64e) --- test/Makefile | 6 +-- test/cases/db-move.bats | 18 ++----- test/cases/db-remove.bats | 10 ++-- test/cases/db-repo-add.bats | 9 ++-- test/cases/db-repo-remove.bats | 10 ++-- test/cases/db-update.bats | 88 +++++++++++++++------------------ test/cases/ftpdir-cleanup.bats | 18 ++----- test/cases/packages.bats | 10 ++-- test/cases/sourceballs.bats | 14 ++---- test/fixtures/pkg-single-arch/PKGBUILD | 12 +++++ test/fixtures/pkg-single-epoch/PKGBUILD | 13 +++++ test/lib/common.bash | 64 ++++++++++++------------ 12 files changed, 132 insertions(+), 140 deletions(-) create mode 100644 test/fixtures/pkg-single-arch/PKGBUILD create mode 100644 test/fixtures/pkg-single-epoch/PKGBUILD
diff --git a/test/Makefile b/test/Makefile index 9a6d18f..da09c4a 100644 --- a/test/Makefile +++ b/test/Makefile @@ -1,10 +1,10 @@ -PACKAGE_CACHE ?= $(or $(TMPDIR),/tmp)/dbscripts-build +export BUILDDIR ?= $(or $(TMPDIR),/tmp)/dbscripts-build test: - PATH=$(CURDIR)/../:$(CURDIR)/../cron-jobs/:$(PATH) PACKAGE_CACHE=$(PACKAGE_CACHE) bats cases + PATH=$(CURDIR)/../:$(CURDIR)/../cron-jobs/:$(PATH) bats cases test-coverage: - PATH=$(CURDIR)/../:$(CURDIR)/../cron-jobs/:$(PATH) PACKAGE_CACHE=$(PACKAGE_CACHE) kcov \ + PATH=$(CURDIR)/../:$(CURDIR)/../cron-jobs/:$(PATH) kcov \ --include-path=$(CURDIR)/../ \ --exclude-path=$(CURDIR)/../test,$(CURDIR)/../cron-jobs/makepkg.conf,$(CURDIR)/../config \ $(COVERAGE_DIR) \ diff --git a/test/cases/db-move.bats b/test/cases/db-move.bats index a0af0ce..4eea575 100755 --- a/test/cases/db-move.bats +++ b/test/cases/db-move.bats @@ -6,9 +6,7 @@ load ../lib/common local arch for pkgbase in "${pkgs[@]}"; do - for arch in "${ARCH_BUILD[@]}"; do - releasePackage testing "${pkgbase}" "${arch}" - done + releasePackage testing "${pkgbase}" done db-update @@ -29,9 +27,7 @@ load ../lib/common local arch for pkgbase in "${pkgs[@]}"; do - for arch in "${ARCH_BUILD[@]}"; do - releasePackage testing "${pkgbase}" "${arch}" - done + releasePackage testing "${pkgbase}" done db-update @@ -52,9 +48,7 @@ load ../lib/common local arch for pkgbase in "${pkgs[@]}"; do - for arch in "${ARCH_BUILD[@]}"; do - releasePackage testing "${pkgbase}" "${arch}" - done + releasePackage testing "${pkgbase}" done db-update @@ -72,7 +66,7 @@ load ../lib/common local pkgbase for pkgbase in "${pkgs[@]}"; do - releasePackage testing "${pkgbase}" any + releasePackage testing "${pkgbase}" done db-update @@ -90,9 +84,7 @@ load ../lib/common local arch for pkgbase in "${pkgs[@]}"; do - for arch in "${ARCH_BUILD[@]}"; do - releasePackage testing "${pkgbase}" "${arch}" - done + releasePackage testing "${pkgbase}" done db-update diff --git a/test/cases/db-remove.bats b/test/cases/db-remove.bats index 5201440..deb0f0e 100755 --- a/test/cases/db-remove.bats +++ b/test/cases/db-remove.bats @@ -6,9 +6,7 @@ load ../lib/common local arch for pkgbase in "${pkgs[@]}"; do - for arch in "${ARCH_BUILD[@]}"; do - releasePackage extra "${pkgbase}" "${arch}" - done + releasePackage extra "${pkgbase}" done db-update @@ -32,9 +30,7 @@ load ../lib/common local arch for pkgbase in "${pkgs[@]}"; do - for arch in "${ARCH_BUILD[@]}"; do - releasePackage extra "${pkgbase}" "${arch}" - done + releasePackage extra "${pkgbase}" done db-update @@ -55,7 +51,7 @@ load ../lib/common local pkgbase for pkgbase in "${pkgs[@]}"; do - releasePackage extra "${pkgbase}" any + releasePackage extra "${pkgbase}" done db-update diff --git a/test/cases/db-repo-add.bats b/test/cases/db-repo-add.bats index 869796a..a04d9bb 100755 --- a/test/cases/db-repo-add.bats +++ b/test/cases/db-repo-add.bats @@ -27,8 +27,8 @@ __movePackageToRepo() { local arch for pkgbase in "${pkgs[@]}"; do + releasePackage extra "$pkgbase" for arch in "${ARCH_BUILD[@]}"; do - releasePackage extra "$pkgbase" "$arch" __movePackageToRepo extra ${pkgbase} ${arch} db-repo-add extra "${arch}" "${pkgbase}-1-1-${arch}.pkg.tar.xz" done @@ -46,10 +46,13 @@ __movePackageToRepo() { local pkgbase local arch + for pkgbase in "${pkgs[@]}"; do + releasePackage extra "$pkgbase" + done + for arch in "${ARCH_BUILD[@]}"; do add_pkgs=() for pkgbase in "${pkgs[@]}"; do - releasePackage extra "$pkgbase" "$arch" __movePackageToRepo extra ${pkgbase} ${arch} add_pkgs+=("${pkgbase}-1-1-${arch}.pkg.tar.xz") done @@ -69,7 +72,7 @@ __movePackageToRepo() { local arch for pkgbase in ${pkgs[@]}; do - releasePackage extra ${pkgbase} any + releasePackage extra ${pkgbase} __movePackageToRepo extra ${pkgbase} any db-repo-add extra any ${pkgbase}-1-1-any.pkg.tar.xz done diff --git a/test/cases/db-repo-remove.bats b/test/cases/db-repo-remove.bats index 165b759..6145f25 100755 --- a/test/cases/db-repo-remove.bats +++ b/test/cases/db-repo-remove.bats @@ -6,9 +6,7 @@ load ../lib/common local arch for pkgbase in "${pkgs[@]}"; do - for arch in "${ARCH_BUILD[@]}"; do - releasePackage extra "${pkgbase}" "${arch}" - done + releasePackage extra "${pkgbase}" done db-update @@ -32,9 +30,7 @@ load ../lib/common local arch for pkgbase in "${pkgs[@]}"; do - for arch in "${ARCH_BUILD[@]}"; do - releasePackage extra "${pkgbase}" "${arch}" - done + releasePackage extra "${pkgbase}" done db-update @@ -55,7 +51,7 @@ load ../lib/common local pkgbase for pkgbase in ${pkgs[@]}; do - releasePackage extra ${pkgbase} any + releasePackage extra ${pkgbase} done db-update diff --git a/test/cases/db-update.bats b/test/cases/db-update.bats index cf60fcd..2fafcd8 100755 --- a/test/cases/db-update.bats +++ b/test/cases/db-update.bats @@ -6,9 +6,7 @@ load ../lib/common local arch for pkgbase in "${pkgs[@]}"; do - for arch in "${ARCH_BUILD[@]}"; do - releasePackage extra "${pkgbase}" "${arch}" - done + releasePackage extra "${pkgbase}" done db-update @@ -21,15 +19,15 @@ load ../lib/common } @test "add single simple package" { - releasePackage extra 'pkg-simple-a' 'i686' + releasePackage extra 'pkg-single-arch' db-update - checkPackage extra 'pkg-simple-a-1-1-i686.pkg.tar.xz' 'i686' + checkPackage extra 'pkg-single-arch-1-1-x86_64.pkg.tar.xz' 'x86_64' } @test "add single epoch package" { - releasePackage extra 'pkg-simple-epoch' 'i686' + releasePackage extra 'pkg-single-epoch' db-update - checkPackage extra 'pkg-simple-epoch-1:1-1-i686.pkg.tar.xz' 'i686' + checkPackage extra 'pkg-single-epoch-1:1-1-x86_64.pkg.tar.xz' 'x86_64' } @test "add any packages" { @@ -37,7 +35,7 @@ load ../lib/common local pkgbase for pkgbase in "${pkgs[@]}"; do - releasePackage extra "${pkgbase}" any + releasePackage extra "${pkgbase}" done db-update @@ -54,9 +52,7 @@ load ../lib/common local arch for pkgbase in "${pkgs[@]}"; do - for arch in "${ARCH_BUILD[@]}"; do - releasePackage extra "${pkgbase}" "${arch}" - done + releasePackage extra "${pkgbase}" done db-update @@ -71,23 +67,23 @@ load ../lib/common } @test "update any package" { - releasePackage extra pkg-any-a any + releasePackage extra pkg-any-a db-update - updatePackage pkg-any-a any + updatePackage pkg-any-a - releasePackage extra pkg-any-a any + releasePackage extra pkg-any-a db-update checkPackage extra pkg-any-a-1-2-any.pkg.tar.xz any } @test "update any package to different repositories at once" { - releasePackage extra pkg-any-a any + releasePackage extra pkg-any-a - updatePackage pkg-any-a any + updatePackage pkg-any-a - releasePackage testing pkg-any-a any + releasePackage testing pkg-any-a db-update @@ -96,21 +92,21 @@ load ../lib/common } @test "update same any package to same repository" { - releasePackage extra pkg-any-a any + releasePackage extra pkg-any-a db-update checkPackage extra pkg-any-a-1-1-any.pkg.tar.xz any - releasePackage extra pkg-any-a any + releasePackage extra pkg-any-a run db-update [ "$status" -ne 0 ] } @test "update same any package to different repositories" { - releasePackage extra pkg-any-a any + releasePackage extra pkg-any-a db-update checkPackage extra pkg-any-a-1-1-any.pkg.tar.xz any - releasePackage testing pkg-any-a any + releasePackage testing pkg-any-a run db-update [ "$status" -ne 0 ] @@ -123,9 +119,7 @@ load ../lib/common local pkgbase='pkg-split-a' local arch - for arch in "${ARCH_BUILD[@]}"; do - releasePackage "${repo}" "${pkgbase}" "${arch}" - done + releasePackage "${repo}" "${pkgbase}" # remove a split package to make db-update fail rm "${STAGING}/extra/${pkgbase}1-"* @@ -140,26 +134,26 @@ load ../lib/common @test "unknown repo" { mkdir "${STAGING}/unknown/" - releasePackage extra 'pkg-simple-a' 'i686' - releasePackage unknown 'pkg-simple-b' 'i686' + releasePackage extra 'pkg-any-a' + releasePackage unknown 'pkg-any-b' db-update - checkPackage extra 'pkg-simple-a-1-1-i686.pkg.tar.xz' 'i686' + checkPackage extra 'pkg-any-a-1-1-any.pkg.tar.xz' any [ ! -e "${FTP_BASE}/unknown" ] rm -rf "${STAGING}/unknown/" } @test "add unsigned package fails" { - releasePackage extra 'pkg-simple-a' 'i686' + releasePackage extra 'pkg-any-a' rm "${STAGING}"/extra/*.sig run db-update [ "$status" -ne 0 ] - checkRemovedPackage extra pkg-simple-a-1-1-i686.pkg.tar.xz i686 + checkRemovedPackage extra pkg-any-a-1-1-any.pkg.tar.xz any } @test "add invalid signed package fails" { local p - releasePackage extra 'pkg-simple-a' 'i686' + releasePackage extra 'pkg-any-a' for p in "${STAGING}"/extra/*${PKGEXT}; do unxz "$p" xz -0 "${p%%.xz}" @@ -167,37 +161,37 @@ load ../lib/common run db-update [ "$status" -ne 0 ] - checkRemovedPackage extra pkg-simple-a-1-1-i686.pkg.tar.xz i686 + checkRemovedPackage extra pkg-any-a-1-1-any.pkg.tar.xz any } @test "add broken signature fails" { local s - releasePackage extra 'pkg-simple-a' 'i686' + releasePackage extra 'pkg-any-a' for s in "${STAGING}"/extra/*.sig; do echo 0 > "$s" done run db-update [ "$status" -ne 0 ] - checkRemovedPackage extra pkg-simple-a-1-1-i686.pkg.tar.xz i686 + checkRemovedPackage extra pkg-any-a-1-1-any.pkg.tar.xz any } @test "add package with inconsistent version fails" { local p - releasePackage extra 'pkg-simple-a' 'i686' + releasePackage extra 'pkg-any-a' for p in "${STAGING}"/extra/*; do - mv "${p}" "${p/pkg-simple-a-1/pkg-simple-a-2}" + mv "${p}" "${p/pkg-any-a-1/pkg-any-a-2}" done run db-update [ "$status" -ne 0 ] - checkRemovedPackage extra 'pkg-simple-a-2-1-i686.pkg.tar.xz' 'i686' + checkRemovedPackage extra 'pkg-any-a-2-1-any.pkg.tar.xz' 'any' } @test "add package with inconsistent name fails" { local p - releasePackage extra 'pkg-simple-a' 'i686' + releasePackage extra 'pkg-any-a' for p in "${STAGING}"/extra/*; do mv "${p}" "${p/pkg-/foo-pkg-}" @@ -205,40 +199,38 @@ load ../lib/common run db-update [ "$status" -ne 0 ] - checkRemovedPackage extra 'foo-pkg-simple-a-1-1-i686.pkg.tar.xz' 'i686' + checkRemovedPackage extra 'foo-pkg-any-a-1-1-any.pkg.tar.xz' 'any' } @test "add package with inconsistent pkgbuild fails" { skip # abslibre is broken - releasePackage extra 'pkg-simple-a' 'i686' + releasePackage extra 'pkg-any-a' - updateRepoPKGBUILD 'pkg-simple-a' extra i686 + updateRepoPKGBUILD 'pkg-any-a' extra any run db-update [ "$status" -ne 0 ] - checkRemovedPackage extra 'pkg-simple-a-1-1-i686.pkg.tar.xz' 'i686' + checkRemovedPackage extra 'pkg-any-a-1-1-any.pkg.tar.xz' 'any' } @test "add package with insufficient permissions fails" { - releasePackage core 'pkg-simple-a' 'i686' - releasePackage extra 'pkg-simple-b' 'i686' + releasePackage core 'pkg-any-a' + releasePackage extra 'pkg-any-b' chmod -xwr ${FTP_BASE}/core/os/i686 run db-update [ "$status" -ne 0 ] chmod +xwr ${FTP_BASE}/core/os/i686 - checkRemovedPackage core 'pkg-simple-a-1-1-i686.pkg.tar.xz' 'i686' - checkRemovedPackage extra 'pkg-simple-b-1-1-i686.pkg.tar.xz' 'i686' + checkRemovedPackage core 'pkg-any-a-1-1-any.pkg.tar.xz' 'any' + checkRemovedPackage extra 'pkg-any-b-1-1-any.pkg.tar.xz' 'any' } @test "package has to be a regular file" { local p local target=$(mktemp -d) - for arch in "${ARCH_BUILD[@]}"; do - releasePackage extra 'pkg-simple-a' $arch - done + releasePackage extra 'pkg-simple-a' for p in "${STAGING}"/extra/*i686*; do mv "${p}" "${target}" diff --git a/test/cases/ftpdir-cleanup.bats b/test/cases/ftpdir-cleanup.bats index 2cb2e59..1a46fdf 100755 --- a/test/cases/ftpdir-cleanup.bats +++ b/test/cases/ftpdir-cleanup.bats @@ -16,9 +16,7 @@ __checkRepoRemovedPackage() { local arch for pkgbase in "${pkgs[@]}"; do - for arch in "${ARCH_BUILD[@]}"; do - releasePackage extra "${pkgbase}" "${arch}" - done + releasePackage extra "${pkgbase}" done db-update @@ -44,9 +42,7 @@ __checkRepoRemovedPackage() { local arch for pkgbase in "${pkgs[@]}"; do - for arch in "${ARCH_BUILD[@]}"; do - releasePackage extra "${pkgbase}" "${arch}" - done + releasePackage extra "${pkgbase}" done db-update @@ -69,7 +65,7 @@ __checkRepoRemovedPackage() { local arch='any' for pkgbase in "${pkgs[@]}"; do - releasePackage extra "${pkgbase}" any + releasePackage extra "${pkgbase}" done db-update @@ -91,9 +87,7 @@ __checkRepoRemovedPackage() { local arch for pkgbase in "${pkgs[@]}"; do - for arch in "${ARCH_BUILD[@]}"; do - releasePackage extra "${pkgbase}" "${arch}" - done + releasePackage extra "${pkgbase}" done db-update @@ -122,9 +116,7 @@ __checkRepoRemovedPackage() { local arch for pkgbase in ${pkgs[@]}; do - for arch in "${ARCH_BUILD[@]}"; do - releasePackage extra ${pkgbase} ${arch} - done + releasePackage extra ${pkgbase} done db-update diff --git a/test/cases/packages.bats b/test/cases/packages.bats index 3e0246b..657de91 100755 --- a/test/cases/packages.bats +++ b/test/cases/packages.bats @@ -15,16 +15,16 @@ load ../lib/common for pkgbase in "${tmp}"/*; do pushd "${pkgbase}" + run namcap -e pkgnameindesc,tags PKGBUILD + [ -z "$output" ] + + __buildPackage + # FIXME: Is overriding IFS a bats bug? IFS=' ' pkgarchs=($(. PKGBUILD; echo ${arch[@]})) for pkgarch in "${pkgarchs[@]}"; do echo "Building ${pkgbase} on ${pkgarch}" - run namcap -e pkgnameindesc,tags PKGBUILD - [ -z "$output" ] - - __buildPackage "$pkgarch" - if [[ $pkgarch != "$ARCH_HOST" && $pkgarch != any ]]; then # Cross-arch namcap is silly: # diff --git a/test/cases/sourceballs.bats b/test/cases/sourceballs.bats index ba06b8d..f5e41a8 100755 --- a/test/cases/sourceballs.bats +++ b/test/cases/sourceballs.bats @@ -16,9 +16,7 @@ __checkRemovedSourcePackage() { local arch for pkgbase in "${pkgs[@]}"; do - for arch in "${ARCH_BUILD[@]}"; do - releasePackage extra "${pkgbase}" "${arch}" - done + releasePackage extra "${pkgbase}" done db-update @@ -33,7 +31,7 @@ __checkRemovedSourcePackage() { local pkgbase for pkgbase in "${pkgs[@]}"; do - releasePackage extra "${pkgbase}" any + releasePackage extra "${pkgbase}" done db-update @@ -50,9 +48,7 @@ __checkRemovedSourcePackage() { local arch for pkgbase in "${pkgs[@]}"; do - for arch in "${ARCH_BUILD[@]}"; do - releasePackage extra "${pkgbase}" "${arch}" - done + releasePackage extra "${pkgbase}" done db-update @@ -69,9 +65,7 @@ __checkRemovedSourcePackage() { local arch for pkgbase in "${pkgs[@]}"; do - for arch in "${ARCH_BUILD[@]}"; do - releasePackage extra "${pkgbase}" "${arch}" - done + releasePackage extra "${pkgbase}" done db-update sourceballs diff --git a/test/fixtures/pkg-single-arch/PKGBUILD b/test/fixtures/pkg-single-arch/PKGBUILD new file mode 100644 index 0000000..581efb4 --- /dev/null +++ b/test/fixtures/pkg-single-arch/PKGBUILD @@ -0,0 +1,12 @@ +pkgname=pkg-single-arch +pkgver=1 +pkgrel=1 +pkgdesc="A package called ${pkgname}" +arch=('x86_64') +url='http://www.archlinux.org/' +license=('GPL') +depends=('glibc') + +package() { + install -D -m755 /bin/true ${pkgdir}/usr/bin/${pkgname} +} diff --git a/test/fixtures/pkg-single-epoch/PKGBUILD b/test/fixtures/pkg-single-epoch/PKGBUILD new file mode 100644 index 0000000..c1bc3d6 --- /dev/null +++ b/test/fixtures/pkg-single-epoch/PKGBUILD @@ -0,0 +1,13 @@ +pkgname=pkg-single-epoch +pkgver=1 +pkgrel=1 +epoch=1 +pkgdesc="A package called ${pkgname}" +arch=('x86_64') +url='http://www.archlinux.org/' +license=('GPL') +depends=('glibc') + +package() { + install -D -m755 /bin/true ${pkgdir}/usr/bin/${pkgname} +} diff --git a/test/lib/common.bash b/test/lib/common.bash index ea01a2d..9c1ae4c 100644 --- a/test/lib/common.bash +++ b/test/lib/common.bash @@ -35,37 +35,44 @@ __getCheckSum() { } __buildPackage() { - local arch=$1 + local pkgdest=${1:-.} local p - local checkSum + local cache + local pkgarches + local tarch local pkgnames - if [[ -n ${PACKAGE_CACHE} ]]; then - checkSum=$(__getCheckSum PKGBUILD) - # TODO: Be more specific - if cp -av ${PACKAGE_CACHE}/${checkSum}/*-${arch}${PKGEXT}{,.sig} .; then - return 0 - fi + if [[ -n ${BUILDDIR} ]]; then + cache=${BUILDDIR}/$(__getCheckSum PKGBUILD) + if [[ -d ${cache} ]]; then + cp -Lv ${cache}/*${PKGEXT}{,.sig} ${pkgdest} + return 0 + else + mkdir -p ${cache} + fi fi - if [ "${arch}" == 'any' ]; then - sudo librechroot -n "dbscripts@${arch}" make - else - sudo librechroot -n "dbscripts@${arch}" -A "$arch" make - fi - sudo libremakepkg -n "dbscripts@${arch}" + pkgarches=($(. PKGBUILD; echo ${arch[@]})) + for tarch in ${pkgarches[@]}; do + if [ "${tarch}" == 'any' ]; then + sudo librechroot -n "dbscripts@${tarch}" make + else + sudo librechroot -n "dbscripts@${tarch}" -A "$tarch" make + fi + sudo PKGDEST="${pkgdest}" libremakepkg -n "dbscripts@${tarch}" + done pkgnames=($(. PKGBUILD; print_all_package_names)) + pushd ${pkgdest} for p in ${pkgnames[@]/%/${PKGEXT}}; do - [[ ${p} = *-${arch}${PKGEXT} ]] || continue # Manually sign packages as "makepkg --sign" is buggy gpg -v --detach-sign --no-armor --use-agent ${p} - if [[ -n ${PACKAGE_CACHE} ]]; then - mkdir -p ${PACKAGE_CACHE}/${checkSum} - cp -Lv ${p}{,.sig} ${PACKAGE_CACHE}/${checkSum}/ + if [[ -n ${BUILDDIR} ]]; then + cp -Lv ${p}{,.sig} ${cache}/ fi done + popd } setup() { @@ -128,11 +135,8 @@ teardown() { releasePackage() { local repo=$1 local pkgbase=$2 - local arch=$3 - local a - local p - local pkgver - local pkgname + local pkgarches + local tarch if [ ! -d "${TMP}/svn-packages-copy/${pkgbase}/trunk" ]; then mkdir -p "${TMP}/svn-packages-copy/${pkgbase}"/{trunk,repos} @@ -142,23 +146,21 @@ releasePackage() { fi pushd "${TMP}/svn-packages-copy/${pkgbase}/trunk/" - __buildPackage ${arch} - xbs release-client "${repo}" "${arch}" - pkgver=$(. PKGBUILD; get_full_version) - pkgname=($(. PKGBUILD; echo "${pkgname[@]}")) - for p in "${pkgname[@]}"; do - cp "${p}-${pkgver}-${arch}"${PKGEXT}{,.sig} "${STAGING}/${repo}/" + + __buildPackage "${STAGING}"/${repo} + pkgarches=($(. PKGBUILD; echo ${arch[@]})) + for tarch in "${pkgarches[@]}"; do + xbs release-client "${repo}" "${tarch}" done popd } updatePackage() { local pkgbase=$1 - local arch=$2 pushd "${TMP}/svn-packages-copy/${pkgbase}/trunk/" __updatePKGBUILD - __buildPackage ${arch} + __buildPackage popd } -- 2.16.2 _______________________________________________ Dev mailing list Dev@lists.parabola.nu https://lists.parabola.nu/mailman/listinfo/dev