From: Luke Shumaker <lukeshu@parabola.nu> Commit b61a714 introduced a regression that in a db-functions function called by db-update, config:PKGEXT is treated like a fixed string, instead of as a glob. Because of inadequacy of the test-suite, this did not cause a test failure. https://lists.archlinux.org/pipermail/arch-projects/2018-February/004742.htm... The broken function checks if the repo already contains a package that matches the one being released. This did not trigger a test-suite failure because right after the broken check there is another check that checks for the exact filename of the new package file. In the test-suite, all package files have the same extension, so the latter check always "saved" us. So, modify a relevant test case (a test case that verifies that we can't release the same package twice) such that the second time we release the package, we set PKGEXT to something different (.gz, instead of the normal .xz). This way, we can be sure that when db-update rejects the operation, it's because of the glob check, not the exact-filename check. This is made slightly tricky because the __buildPackage() test helper routine tries to cache builds, to speed up the tests. Without modification, this means that it will just ignore the new PKGEXT. So, modify it to only use the cache if it can successfully copy build artifacts out, in a way that respects PKGEXT. v2: - Follow Eli's suggestion to simplify the test-case by modifying __buildPackage so that the test-case itself doesn't need to worry about the call being cached. v3: - Simplify the test-case further by having it not prune the cache after running. v4: - Follow Eli's suggestion of simplifying __buildPackage by having the copy operation itself be the test on whether to use the cache. - Improve the commit message. --- I've also submitted this as a GitHub PR. https://github.com/archlinux/dbscripts/pull/3 You can verify that applying this without Eli's fix patchset it causes a test failure, but with Eli's fix patchset the tests pass. test/cases/db-update.bats | 2 +- test/lib/common.bash | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/test/cases/db-update.bats b/test/cases/db-update.bats index 1da7eef..2395438 100644 --- a/test/cases/db-update.bats +++ b/test/cases/db-update.bats @@ -92,7 +92,7 @@ load ../lib/common db-update checkPackage extra pkg-any-a - releasePackage extra pkg-any-a + PKGEXT=.pkg.tar.gz releasePackage extra pkg-any-a run db-update [ "$status" -ne 0 ] } diff --git a/test/lib/common.bash b/test/lib/common.bash index 540e403..e9cf6c9 100644 --- a/test/lib/common.bash +++ b/test/lib/common.bash @@ -23,8 +23,7 @@ __buildPackage() { if [[ -n ${BUILDDIR} ]]; then cache=${BUILDDIR}/$(__getCheckSum PKGBUILD) - if [[ -d ${cache} ]]; then - cp -Lv ${cache}/*${PKGEXT}{,.sig} ${pkgdest} + if cp -Lv ${cache}/*${PKGEXT}{,.sig} ${pkgdest} 2>/dev/null; then return 0 else mkdir -p ${cache} -- 2.16.1