summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Shumaker <lukeshu@parabola.nu>2018-04-20 17:31:35 -0400
committerLuke Shumaker <lukeshu@parabola.nu>2018-04-20 17:31:35 -0400
commit12fa04f545d0d27c1082af4e416b31c7ded1da34 (patch)
treecc28606b2e2bd21ca50b2f2a5c6795da1a52137e
parent0c3b06c84e65ffcb8aab669269402a8dc47704e4 (diff)
parent92856d037420e7dcce2bf6203067fa44564e7ae1 (diff)
Merge branch 'lukeshu/pierre-tests-v3'parabola/20180420
-rw-r--r--.editorconfig7
-rw-r--r--.gitignore7
-rw-r--r--.travis.yml9
-rw-r--r--db-functions2
-rwxr-xr-xdb-repo-add4
-rw-r--r--test/Makefile6
-rwxr-xr-xtest/cases/create-filelists.bats95
-rwxr-xr-xtest/cases/db-move.bats59
-rwxr-xr-xtest/cases/db-remove.bats20
-rwxr-xr-xtest/cases/db-repo-add.bats60
-rwxr-xr-xtest/cases/db-repo-remove.bats35
-rwxr-xr-xtest/cases/db-update.bats188
-rwxr-xr-xtest/cases/ftpdir-cleanup.bats107
-rwxr-xr-xtest/cases/packages.bats45
-rwxr-xr-xtest/cases/sourceballs.bats34
-rw-r--r--test/fixtures/pkg-any-a/PKGBUILD1
-rw-r--r--test/fixtures/pkg-any-b/PKGBUILD1
-rw-r--r--test/fixtures/pkg-simple-a/PKGBUILD1
-rw-r--r--test/fixtures/pkg-simple-b/PKGBUILD1
-rw-r--r--test/fixtures/pkg-simple-epoch/PKGBUILD1
-rw-r--r--test/fixtures/pkg-single-arch/PKGBUILD13
-rw-r--r--test/fixtures/pkg-single-epoch/PKGBUILD14
-rw-r--r--test/fixtures/pkg-split-a/PKGBUILD1
-rw-r--r--test/fixtures/pkg-split-b/PKGBUILD1
-rw-r--r--test/lib/common.bash280
25 files changed, 495 insertions, 497 deletions
diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 0000000..ffdaa55
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,7 @@
+root = true
+[*]
+indent_style = tab
+end_of_line = lf
+charset = utf-8
+[*.yml]
+indent_style = space
diff --git a/.gitignore b/.gitignore
index 26a5ca5..cd74b47 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,10 +1,11 @@
*~
-*.pyc
-/config.local
-test/packages/*/*.pkg.tar.?z
\#*#
.#*
+*.pyc
+/config.local
+/.idea
/coverage
+
yftime
src*
pkg*
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..0b0519c
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,9 @@
+sudo: required
+
+language: bash
+
+services:
+ - docker
+
+script:
+ - make test
diff --git a/db-functions b/db-functions
index 2629b85..2ef0a44 100644
--- a/db-functions
+++ b/db-functions
@@ -297,7 +297,7 @@ check_pkgfile() {
in_array "${pkgarch}" "${ARCHES[@]}" 'any' || return 1
- if echo "${pkgfile##*/}" | grep "${pkgname}-${pkgver}-${pkgarch}" &>/dev/null; then
+ if echo "${pkgfile##*/}" | grep "^${pkgname}-${pkgver}-${pkgarch}" &>/dev/null; then
return 0
else
return 1
diff --git a/db-repo-add b/db-repo-add
index c9e3a15..0fc69fe 100755
--- a/db-repo-add
+++ b/db-repo-add
@@ -30,8 +30,8 @@ done
for tarch in "${tarches[@]}"; do
for pkgfile in "${pkgfiles[@]}"; do
- if [[ ! -f "${FTP_BASE}/${repo}/os/${arch}/${pkgfile##*/}" ]]; then
- die "Package file %s not found in %s" "${pkgfile##*/}" "${FTP_BASE}/${repo}/os/${arch}/"
+ if [[ ! -f ${FTP_BASE}/${repo}/os/${tarch}/${pkgfile##*/} ]]; then
+ die "Package file %s not found in %s" "${pkgfile##*/}" "${FTP_BASE}/${repo}/os/${tarch}/"
else
msg "Adding %s to [%s]..." "$pkgfile" "$repo"
fi
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/create-filelists.bats b/test/cases/create-filelists.bats
deleted file mode 100755
index b7fa015..0000000
--- a/test/cases/create-filelists.bats
+++ /dev/null
@@ -1,95 +0,0 @@
-load ../lib/common
-
-@test "create simple file lists" {
- local pkgs=('pkg-simple-a' 'pkg-simple-b' 'pkg-simple-epoch')
- local pkgbase
- local arch
-
- for pkgbase in "${pkgs[@]}"; do
- for arch in "${ARCH_BUILD[@]}"; do
- releasePackage extra "${pkgbase}" "${arch}"
- done
- done
- db-update
-
- for pkgbase in "${pkgs[@]}"; do
- for arch in "${ARCH_BUILD[@]}"; do
- if ! bsdtar -xOf "${FTP_BASE}/extra/os/${arch}/extra${FILESEXT}" | grep "usr/bin/${pkgbase}" &>/dev/null; then
- die "usr/bin/${pkgbase} not found in ${arch}/extra${FILESEXT}"
- fi
- done
- done
-}
-
-@test "create any file lists" {
- local pkgs=('pkg-any-a' 'pkg-any-b')
- local pkgbase
- local arch
-
- for pkgbase in "${pkgs[@]}"; do
- releasePackage extra "${pkgbase}" any
- done
- db-update
-
- for pkgbase in "${pkgs[@]}"; do
- for arch in "${ARCH_BUILD[@]}"; do
- if ! bsdtar -xOf "${FTP_BASE}/extra/os/${arch}/extra${FILESEXT}" | grep "usr/share/${pkgbase}/test" &>/dev/null; then
- die "usr/share/${pkgbase}/test not found in ${arch}/extra${FILESEXT}"
- fi
- done
- done
-}
-
-@test "create split file lists" {
- local pkgs=('pkg-split-a' 'pkg-split-b')
- local pkg
- local pkgbase
- local pkgname
- local pkgnames
- local arch
-
- for pkgbase in "${pkgs[@]}"; do
- for arch in "${ARCH_BUILD[@]}"; do
- releasePackage extra "${pkgbase}" "${arch}"
- done
- done
- db-update
-
- for pkgbase in "${pkgs[@]}"; do
- pkgnames=($(source "${TMP}/svn-packages-copy/${pkgbase}/trunk/PKGBUILD"; echo "${pkgname[@]}"))
- for pkgname in "${pkgnames[@]}"; do
- for arch in "${ARCH_BUILD[@]}"; do
- if ! bsdtar -xOf "${FTP_BASE}/extra/os/${arch}/extra${FILESEXT}" | grep "usr/bin/${pkgname}" &>/dev/null; then
- die "usr/bin/${pkgname} not found in ${arch}/extra${FILESEXT}"
- fi
- done
- done
- done
-}
-
-@test "cleanup file lists" {
- local pkgs=('pkg-simple-a' 'pkg-simple-b')
- local pkgbase
- local arch
-
- for pkgbase in "${pkgs[@]}"; do
- for arch in "${ARCH_BUILD[@]}"; do
- releasePackage extra "${pkgbase}" "${arch}"
- done
- done
- db-update
-
- for arch in "${ARCH_BUILD[@]}"; do
- db-remove extra "${arch}" pkg-simple-a
- done
-
- for arch in "${ARCH_BUILD[@]}"; do
- if ! bsdtar -xOf "${FTP_BASE}/extra/os/${arch}/extra${FILESEXT}" | grep "usr/bin/pkg-simple-b" &>/dev/null; then
- die "usr/bin/pkg-simple-b not found in ${arch}/extra${FILESEXT}"
- fi
- if bsdtar -xOf "${FTP_BASE}/extra/os/${arch}/extra${FILESEXT}" | grep "usr/bin/pkg-simple-a" &>/dev/null; then
- die "usr/bin/pkg-simple-a still found in ${arch}/extra${FILESEXT}"
- fi
- done
-
-}
diff --git a/test/cases/db-move.bats b/test/cases/db-move.bats
index b23a5b7..8d5087f 100755
--- a/test/cases/db-move.bats
+++ b/test/cases/db-move.bats
@@ -6,21 +6,16 @@ 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
db-move testing extra pkg-simple-a
- for arch in "${ARCH_BUILD[@]}"; do
- checkPackage extra "pkg-simple-a-1-1-${arch}.pkg.tar.xz" "${arch}"
- checkRemovedPackage testing "pkg-simple-a-1-1-${arch}.pkg.tar.xz" "${arch}"
-
- checkPackage testing "pkg-simple-b-1-1-${arch}.pkg.tar.xz" "${arch}"
- done
+ checkRemovedPackage testing pkg-simple-a
+ checkPackage extra pkg-simple-a
+ checkPackage testing pkg-simple-b
}
@test "move multiple packages" {
@@ -29,9 +24,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
@@ -39,10 +32,8 @@ load ../lib/common
db-move testing extra pkg-simple-a pkg-simple-b
for pkgbase in "${pkgs[@]}"; do
- for arch in "${ARCH_BUILD[@]}"; do
- checkPackage extra "${pkgbase}-1-1-${arch}.pkg.tar.xz" "${arch}"
- checkRemovedPackage testing "${pkgbase}-1-1-${arch}.pkg.tar.xz" "${arch}"
- done
+ checkRemovedPackage testing "${pkgbase}"
+ checkPackage extra "${pkgbase}"
done
}
@@ -52,19 +43,15 @@ 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
db-move testing extra pkg-simple-epoch
- for arch in "${ARCH_BUILD[@]}"; do
- checkPackage extra "pkg-simple-epoch-1:1-1-${arch}.pkg.tar.xz" "${arch}"
- checkRemovedPackage testing "pkg-simple-epoch-1:1-1-${arch}.pkg.tar.xz" "${arch}"
- done
+ checkRemovedPackage testing pkg-simple-epoch
+ checkPackage extra pkg-simple-epoch
}
@test "move any packages" {
@@ -72,15 +59,15 @@ load ../lib/common
local pkgbase
for pkgbase in "${pkgs[@]}"; do
- releasePackage testing "${pkgbase}" any
+ releasePackage testing "${pkgbase}"
done
db-update
db-move testing extra pkg-any-a
- checkAnyPackage extra pkg-any-a-1-1-any.pkg.tar.xz
- checkRemovedAnyPackage testing pkg-any-a
- checkAnyPackage testing pkg-any-b-1-1-any.pkg.tar.xz
+ checkPackage extra pkg-any-a
+ checkRemovedPackage testing pkg-any-a
+ checkPackage testing pkg-any-b
}
@test "move split packages" {
@@ -90,24 +77,12 @@ 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
db-move testing extra pkg-split-a
- for arch in "${ARCH_BUILD[@]}"; do
- for pkg in $(getPackageNamesFromPackageBase pkg-split-a); do
- checkPackage extra "${pkg##*/}" "${arch}"
- done
- done
- for arch in "${ARCH_BUILD[@]}"; do
- for pkg in $(getPackageNamesFromPackageBase pkg-split-b); do
- checkPackage testing "${pkg##*/}" "${arch}"
- done
- done
-
- checkRemovedAnyPackage testing pkg-split-a
+ checkPackage extra pkg-split-a
+ checkPackage testing pkg-split-b
}
diff --git a/test/cases/db-remove.bats b/test/cases/db-remove.bats
index 99b31f7..ff88237 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
@@ -20,9 +18,7 @@ load ../lib/common
done
for pkgbase in "${pkgs[@]}"; do
- for arch in "${ARCH_BUILD[@]}"; do
- checkRemovedPackage extra "${pkgbase}" "${arch}"
- done
+ checkRemovedPackage extra "${pkgbase}"
done
}
@@ -32,9 +28,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
@@ -44,9 +38,7 @@ load ../lib/common
done
for pkgbase in "${pkgs[@]}"; do
- for arch in "${ARCH_BUILD[@]}"; do
- checkRemovedPackage extra "${pkgbase}" "${arch}"
- done
+ checkRemovedPackage extra "${pkgbase}"
done
}
@@ -55,7 +47,7 @@ load ../lib/common
local pkgbase
for pkgbase in "${pkgs[@]}"; do
- releasePackage extra "${pkgbase}" any
+ releasePackage extra "${pkgbase}"
done
db-update
@@ -65,6 +57,6 @@ load ../lib/common
done
for pkgbase in "${pkgs[@]}"; do
- checkRemovedAnyPackage extra "${pkgbase}"
+ checkRemovedPackage extra "${pkgbase}"
done
}
diff --git a/test/cases/db-repo-add.bats b/test/cases/db-repo-add.bats
index aeab8ef..ef6cfe7 100755
--- a/test/cases/db-repo-add.bats
+++ b/test/cases/db-repo-add.bats
@@ -1,24 +1,41 @@
load ../lib/common
+__movePackageToRepo() {
+ local repo=$1
+ local pkgbase=$2
+ local arch=$3
+ local tarch
+ local tarches
+
+ if [[ $arch == any ]]; then
+ tarches=(${ARCHES[@]})
+ else
+ tarches=(${arch})
+ fi
+
+ # FIXME: pkgbase might not be part of the package filename
+ mv -v "${STAGING}"/${repo}/${pkgbase}-*-*-${arch}${PKGEXT}{,.sig} "${FTP_BASE}/${PKGPOOL}/"
+ for tarch in ${tarches[@]}; do
+ ln -sv ${FTP_BASE}/${PKGPOOL}/${pkgbase}-*-*-${arch}${PKGEXT} "${FTP_BASE}/${repo}/os/${tarch}/"
+ ln -sv ${FTP_BASE}/${PKGPOOL}/${pkgbase}-*-*-${arch}${PKGEXT}.sig "${FTP_BASE}/${repo}/os/${tarch}/"
+ done
+}
+
@test "add simple packages" {
local pkgs=('pkg-simple-a' 'pkg-simple-b')
local pkgbase
local arch
for pkgbase in "${pkgs[@]}"; do
+ releasePackage extra "$pkgbase"
for arch in "${ARCH_BUILD[@]}"; do
- releasePackage extra "$pkgbase" "$arch"
- mv "${STAGING}"/extra/* "${FTP_BASE}/${PKGPOOL}/"
- ln -s "${FTP_BASE}/${PKGPOOL}/${pkgbase}-1-1-${arch}.pkg.tar.xz" "${FTP_BASE}/extra/os/${arch}/"
- ln -s "${FTP_BASE}/${PKGPOOL}/${pkgbase}-1-1-${arch}.pkg.tar.xz.sig" "${FTP_BASE}/extra/os/${arch}/"
+ __movePackageToRepo extra ${pkgbase} ${arch}
db-repo-add extra "${arch}" "${pkgbase}-1-1-${arch}.pkg.tar.xz"
done
done
for pkgbase in "${pkgs[@]}"; do
- for arch in "${ARCH_BUILD[@]}"; do
- checkPackageDB extra "${pkgbase}-1-1-${arch}.pkg.tar.xz" "${arch}"
- done
+ checkPackageDB extra "${pkgbase}"
done
}
@@ -27,21 +44,36 @@ load ../lib/common
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"
- mv "${STAGING}"/extra/* "${FTP_BASE}/${PKGPOOL}/"
- ln -s "${FTP_BASE}/${PKGPOOL}/${pkgbase}-1-1-${arch}.pkg.tar.xz" "${FTP_BASE}/extra/os/${arch}/"
- ln -s "${FTP_BASE}/${PKGPOOL}/${pkgbase}-1-1-${arch}.pkg.tar.xz.sig" "${FTP_BASE}/extra/os/${arch}/"
+ __movePackageToRepo extra ${pkgbase} ${arch}
add_pkgs+=("${pkgbase}-1-1-${arch}.pkg.tar.xz")
done
db-repo-add extra "${arch}" "${add_pkgs[@]}"
done
for pkgbase in "${pkgs[@]}"; do
- for arch in "${ARCH_BUILD[@]}"; do
- checkPackageDB extra "${pkgbase}-1-1-${arch}.pkg.tar.xz" "${arch}"
- done
+ checkPackageDB extra "${pkgbase}"
+ done
+}
+
+@test "add any packages" {
+ local pkgs=('pkg-any-a' 'pkg-any-b')
+ local pkgbase
+ local arch
+
+ for pkgbase in ${pkgs[@]}; do
+ releasePackage extra ${pkgbase}
+ __movePackageToRepo extra ${pkgbase} any
+ db-repo-add extra any ${pkgbase}-1-1-any.pkg.tar.xz
+ done
+
+ for pkgbase in ${pkgs[@]}; do
+ checkPackageDB extra ${pkgbase}
done
}
diff --git a/test/cases/db-repo-remove.bats b/test/cases/db-repo-remove.bats
index 5f8ddc7..389c31e 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
@@ -20,9 +18,7 @@ load ../lib/common
done
for pkgbase in "${pkgs[@]}"; do
- for arch in "${ARCH_BUILD[@]}"; do
- checkRemovedPackageDB extra "${pkgbase}" "${arch}"
- done
+ checkRemovedPackageDB extra "${pkgbase}"
done
}
@@ -32,9 +28,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
@@ -44,8 +38,25 @@ load ../lib/common
done
for pkgbase in "${pkgs[@]}"; do
- for arch in "${ARCH_BUILD[@]}"; do
- checkRemovedPackageDB extra "${pkgbase}" "${arch}"
- done
+ checkRemovedPackageDB extra "${pkgbase}"
+ done
+}
+
+@test "remove any packages" {
+ local pkgs=('pkg-any-a' 'pkg-any-b')
+ local pkgbase
+
+ for pkgbase in ${pkgs[@]}; do
+ releasePackage extra ${pkgbase}
+ done
+
+ db-update
+
+ for pkgbase in ${pkgs[@]}; do
+ db-repo-remove extra any ${pkgbase}
+ done
+
+ for pkgbase in ${pkgs[@]}; do
+ checkRemovedPackageDB extra ${pkgbase}
done
}
diff --git a/test/cases/db-update.bats b/test/cases/db-update.bats
index f0bb85b..56e364b 100755
--- a/test/cases/db-update.bats
+++ b/test/cases/db-update.bats
@@ -6,30 +6,26 @@ 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
for pkgbase in "${pkgs[@]}"; do
- for arch in "${ARCH_BUILD[@]}"; do
- checkPackage extra "${pkgbase}-1-1-${arch}.pkg.tar.xz" "${arch}"
- done
+ checkPackage extra "${pkgbase}"
done
}
@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'
}
@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'
}
@test "add any packages" {
@@ -37,13 +33,13 @@ load ../lib/common
local pkgbase
for pkgbase in "${pkgs[@]}"; do
- releasePackage extra "${pkgbase}" any
+ releasePackage extra "${pkgbase}"
done
db-update
for pkgbase in "${pkgs[@]}"; do
- checkAnyPackage extra "${pkgbase}-1-1-any.pkg.tar.xz"
+ checkPackage extra "${pkgbase}"
done
}
@@ -54,140 +50,186 @@ 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
for pkgbase in "${pkgs[@]}"; do
- for arch in "${ARCH_BUILD[@]}"; do
- for pkg in $(getPackageNamesFromPackageBase ${pkgbase}); do
- checkPackage extra "${pkg##*/}" "${arch}"
- done
- done
+ checkPackage extra "${pkgbase}"
done
}
@test "update any package" {
- releasePackage extra pkg-any-a any
+ releasePackage extra pkg-any-a
db-update
- pushd "${TMP}/svn-packages-copy/pkg-any-a/trunk/" >/dev/null
- sed 's/pkgrel=1/pkgrel=2/g' -i PKGBUILD
- svn commit -q -m"update pkg to pkgrel=2" >/dev/null
- __buildPackage any
- popd >/dev/null
+ updatePackage pkg-any-a
- releasePackage extra pkg-any-a any
+ releasePackage extra pkg-any-a
db-update
- checkAnyPackage extra pkg-any-a-1-2-any.pkg.tar.xz any
+ checkPackage extra pkg-any-a
}
@test "update any package to different repositories at once" {
- releasePackage extra pkg-any-a any
+ releasePackage extra pkg-any-a
- pushd "${TMP}/svn-packages-copy/pkg-any-a/trunk/" >/dev/null
- sed 's/pkgrel=1/pkgrel=2/g' -i PKGBUILD
- svn commit -q -m"update pkg to pkgrel=2" >/dev/null
- __buildPackage any
- popd >/dev/null
+ updatePackage pkg-any-a
- releasePackage testing pkg-any-a any
+ releasePackage testing pkg-any-a
db-update
- checkAnyPackage extra pkg-any-a-1-1-any.pkg.tar.xz any
- checkAnyPackage testing pkg-any-a-1-2-any.pkg.tar.xz any
+ checkPackage extra pkg-any-a
+ checkPackage testing pkg-any-a
}
@test "update same any package to same repository" {
- releasePackage extra pkg-any-a any
+ releasePackage extra pkg-any-a
db-update
- checkAnyPackage extra pkg-any-a-1-1-any.pkg.tar.xz any
+ checkPackage extra pkg-any-a
- releasePackage extra pkg-any-a any
- ! db-update >/dev/null 2>&1
+ 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
- checkAnyPackage extra pkg-any-a-1-1-any.pkg.tar.xz any
+ checkPackage extra pkg-any-a
- releasePackage testing pkg-any-a any
- ! db-update >/dev/null 2>&1
+ releasePackage testing pkg-any-a
+ run db-update
+ [ "$status" -ne 0 ]
- local arch
- for arch in "${ARCH_BUILD[@]}"; do
- if [ -r "${FTP_BASE}/testing/os/${arch}/testing${DBEXT%.tar.*}" ]; then
- ! bsdtar -xf "${FTP_BASE}/testing/os/${arch}/testing${DBEXT%.tar.*}" -O | grep "${pkgbase}" &>/dev/null
- fi
- done
+ checkRemovedPackageDB testing pkg-any-a
}
-
@test "add incomplete split package" {
skip # commented out with "This is fucking obnoxious" -- abslibre is broken
local repo='extra'
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-"*
- ! db-update >/dev/null 2>&1
+ run db-update
+ [ "$status" -ne 0 ]
- for arch in "${ARCH_BUILD[@]}"; do
- if [ -r "${FTP_BASE}/${repo}/os/${arch}/${repo}${DBEXT%.tar.*}" ]; then
- ! bsdtar -xf "${FTP_BASE}/${repo}/os/${arch}/${repo}${DBEXT%.tar.*}" -O | grep "${pkgbase}" &>/dev/null
- fi
- done
+ checkRemovedPackageDB ${repo} ${pkgbase}
}
@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'
[ ! -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
- ! db-update >/dev/null 2>&1
+ run db-update
+ [ "$status" -ne 0 ]
- checkRemovedPackage extra pkg-simple-a-1-1-i686.pkg.tar.xz i686
+ checkRemovedPackageDB extra pkg-any-a
}
@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}"
done
- ! db-update >/dev/null 2>&1
+ run db-update
+ [ "$status" -ne 0 ]
- checkRemovedPackage extra pkg-simple-a-1-1-i686.pkg.tar.xz i686
+ checkRemovedPackageDB extra pkg-any-a
}
@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
- ! db-update >/dev/null 2>&1
+ run db-update
+ [ "$status" -ne 0 ]
+
+ checkRemovedPackageDB extra pkg-any-a
+}
+
+@test "add package with inconsistent version fails" {
+ local p
+ releasePackage extra 'pkg-any-a'
+
+ for p in "${STAGING}"/extra/*; do
+ mv "${p}" "${p/pkg-any-a-1/pkg-any-a-2}"
+ done
+
+ run db-update
+ [ "$status" -ne 0 ]
+ checkRemovedPackageDB extra 'pkg-any-a'
+}
+
+@test "add package with inconsistent name fails" {
+ local p
+ releasePackage extra 'pkg-any-a'
+
+ for p in "${STAGING}"/extra/*; do
+ mv "${p}" "${p/pkg-/foo-pkg-}"
+ done
+
+ run db-update
+ [ "$status" -ne 0 ]
+ checkRemovedPackage extra 'pkg-any-a'
+}
+
+@test "add package with inconsistent pkgbuild fails" {
+ skip # abslibre is broken
+ releasePackage extra 'pkg-any-a'
+
+ updateRepoPKGBUILD 'pkg-any-a' extra any
+
+ run db-update
+ [ "$status" -ne 0 ]
+ checkRemovedPackageDB extra 'pkg-any-a'
+}
+
+@test "add package with insufficient permissions fails" {
+ 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
+
+ checkRemovedPackageDB core 'pkg-any-a'
+ checkRemovedPackageDB extra 'pkg-any-b'
+}
+
+@test "package has to be a regular file" {
+ local p
+ local target=$(mktemp -d)
+
+ releasePackage extra 'pkg-simple-a'
+
+ for p in "${STAGING}"/extra/*i686*; do
+ mv "${p}" "${target}"
+ ln -s "${target}/${p##*/}" "${p}"
+ done
- checkRemovedPackage extra pkg-simple-a-1-1-i686.pkg.tar.xz i686
+ run db-update
+ [ "$status" -ne 0 ]
+ checkRemovedPackageDB extra "pkg-simple-a"
}
diff --git a/test/cases/ftpdir-cleanup.bats b/test/cases/ftpdir-cleanup.bats
index 220418b..00fbe94 100755
--- a/test/cases/ftpdir-cleanup.bats
+++ b/test/cases/ftpdir-cleanup.bats
@@ -1,14 +1,30 @@
load ../lib/common
+__getPackageNamesFromPackageBase() {
+ local pkgbase=$1
+
+ (. "fixtures/${pkgbase}/PKGBUILD"; echo ${pkgname[@]})
+}
+
+__checkRepoRemovedPackage() {
+ local repo=$1
+ local pkgbase=$2
+ local repoarch=$3
+ local pkgname
+
+ for pkgname in $(__getPackageNamesFromPackageBase ${pkgbase}); do
+ [[ ! -f ${FTP_BASE}/${PKGPOOL}/${pkgname}-*${PKGEXT} ]]
+ [[ ! -f ${FTP_BASE}/${repo}/os/${repoarch}/${pkgname}-*${PKGEXT} ]]
+ done
+}
+
@test "cleanup simple packages" {
local pkgs=('pkg-simple-a' 'pkg-simple-b')
local pkgbase
local arch
for pkgbase in "${pkgs[@]}"; do
- for arch in "${ARCH_BUILD[@]}"; do
- releasePackage extra "${pkgbase}" "${arch}"
- done
+ releasePackage extra "${pkgbase}"
done
db-update
@@ -17,17 +33,14 @@ load ../lib/common
db-remove extra "${arch}" pkg-simple-a
done
- ftpdir-cleanup >/dev/null
+ ftpdir-cleanup
+ checkRemovedPackage extra 'pkg-simple-a'
for arch in "${ARCH_BUILD[@]}"; do
- local pkg1="pkg-simple-a-1-1-${arch}.pkg.tar.xz"
- checkRemovedPackage extra 'pkg-simple-a' "${arch}"
- [ ! -f "${FTP_BASE}/${PKGPOOL}/${pkg1}" ]
- [ ! -f "${FTP_BASE}/${repo}/os/${arch}/${pkg1}" ]
-
- local pkg2="pkg-simple-b-1-1-${arch}.pkg.tar.xz"
- checkPackage extra "${pkg2}" "${arch}"
+ __checkRepoRemovedPackage extra 'pkg-simple-a' ${arch}
done
+
+ checkPackage extra pkg-simple-b
}
@test "cleanup epoch packages" {
@@ -36,9 +49,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
@@ -47,13 +58,11 @@ load ../lib/common
db-remove extra "${arch}" pkg-simple-epoch
done
- ftpdir-cleanup >/dev/null
+ ftpdir-cleanup
+ checkRemovedPackage extra 'pkg-simple-epoch'
for arch in "${ARCH_BUILD[@]}"; do
- local pkg1="pkg-simple-epoch-1:1-1-${arch}.pkg.tar.xz"
- checkRemovedPackage extra 'pkg-simple-epoch' "${arch}"
- [ ! -f "${FTP_BASE}/${PKGPOOL}/${pkg1}" ]
- [ ! -f "${FTP_BASE}/${repo}/os/${arch}/${pkg1}" ]
+ __checkRepoRemovedPackage extra 'pkg-simple-epoch' ${arch}
done
}
@@ -63,20 +72,20 @@ load ../lib/common
local arch='any'
for pkgbase in "${pkgs[@]}"; do
- releasePackage extra "${pkgbase}" any
+ releasePackage extra "${pkgbase}"
done
db-update
db-remove extra any pkg-any-a
- ftpdir-cleanup >/dev/null
+ ftpdir-cleanup
local pkg1='pkg-any-a-1-1-any.pkg.tar.xz'
- checkRemovedAnyPackage extra 'pkg-any-a'
- [ ! -f "${FTP_BASE}/${PKGPOOL}/${pkg1}" ]
- [ ! -f "${FTP_BASE}/${repo}/os/${arch}/${pkg1}" ]
+ checkRemovedPackage extra 'pkg-any-a'
+ for arch in ${ARCH_BUILD[@]}; do
+ __checkRepoRemovedPackage extra 'pkg-any-a' ${arch}
+ done
- local pkg2="pkg-any-b-1-1-${arch}.pkg.tar.xz"
- checkAnyPackage extra "${pkg2}"
+ checkPackage extra pkg-any-b
}
@test "cleanup split packages" {
@@ -86,9 +95,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
@@ -97,17 +104,43 @@ load ../lib/common
db-remove extra "${arch}" "${pkgs[0]}"
done
- ftpdir-cleanup >/dev/null
+ ftpdir-cleanup
for arch in "${ARCH_BUILD[@]}"; do
- for pkg in $(getPackageNamesFromPackageBase "${pkgs[0]}"); do
- checkRemovedPackage extra "${pkgs[0]}" "${arch}"
- [ ! -f "${FTP_BASE}/${PKGPOOL}/${pkg}" ]
- [ ! -f "${FTP_BASE}/${repo}/os/${arch}/${pkg}" ]
- done
+ __checkRepoRemovedPackage extra ${pkgs[0]} ${arch}
+ done
- for pkg in $(getPackageNamesFromPackageBase "${pkgs[1]}"); do
- checkPackage extra "${pkg##*/}" "${arch}"
+ checkRemovedPackage extra "${pkgs[0]}"
+ checkPackage extra "${pkgs[1]}"
+}
+
+@test "cleanup old packages" {
+ local pkgs=('pkg-simple-a' 'pkg-simple-b')
+ local pkgbase
+ local arch
+
+ for pkgbase in ${pkgs[@]}; do
+ releasePackage extra ${pkgbase}
+ done
+
+ db-update
+
+ for pkgbase in ${pkgs[@]}; do
+ for arch in "${ARCH_BUILD[@]}"; do
+ db-remove extra ${arch} ${pkgbase}
done
done
+
+ ftpdir-cleanup
+
+ local pkgfilea="pkg-simple-a-1-1-${arch}.pkg.tar.xz"
+ local pkgfileb="pkg-simple-b-1-1-${arch}.pkg.tar.xz"
+ for arch in "${ARCH_BUILD[@]}"; do
+ touch -d "-$(expr ${CLEANUP_KEEP} + 1)days" ${CLEANUP_DESTDIR}/${pkgfilea}{,.sig}
+ done
+
+ ftpdir-cleanup
+
+ [ ! -f ${CLEANUP_DESTDIR}/${pkgfilea} ]
+ [ -f ${CLEANUP_DESTDIR}/${pkgfileb} ]
}
diff --git a/test/cases/packages.bats b/test/cases/packages.bats
deleted file mode 100755
index 3e0246b..0000000
--- a/test/cases/packages.bats
+++ /dev/null
@@ -1,45 +0,0 @@
-load ../lib/common
-
-@test "packages" {
- local result
- local pkg
- local pkgbase
- local pkgarchs
- local pkgarch
- local tmp
- tmp=$(mktemp -d)
-
- # FIXME: Evaluate if this test is sane and even needed
-
- cp -rL fixtures/* "${tmp}"
-
- for pkgbase in "${tmp}"/*; do
- pushd "${pkgbase}"
- # 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:
- #
- # W: Referenced library 'libc.so.6' is an uninstalled dependency
- # W: Dependency included and not needed ('glibc')ยป
- continue
- fi
- for pkg in *-${pkgarch}${PKGEXT}; do
- msg 'run namcap -e pkgnameindesc %q' "${pkg}"
- run namcap -e pkgnameindesc "${pkg}"
- printf '%s\n' "$output" | sed 's/^/> /'
- cp "$pkg" -t /tmp -f
- [ -z "$output" ]
- done
- done
- popd
- done
-}
diff --git a/test/cases/sourceballs.bats b/test/cases/sourceballs.bats
index cf80658..f5e41a8 100755
--- a/test/cases/sourceballs.bats
+++ b/test/cases/sourceballs.bats
@@ -1,20 +1,28 @@
load ../lib/common
+__checkSourcePackage() {
+ local pkgbase=$1
+ [ -r ${FTP_BASE}/${SRCPOOL}/${pkgbase}-*${SRCEXT} ]
+}
+
+__checkRemovedSourcePackage() {
+ local pkgbase=$1
+ [ ! -r ${FTP_BASE}/${SRCPOOL}/${pkgbase}-*${SRCEXT} ]
+}
+
@test "sourceballs" {
local pkgs=('pkg-simple-a' 'pkg-simple-b' 'pkg-simple-epoch')
local pkgbase
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
for pkgbase in "${pkgs[@]}"; do
- [ -r "${FTP_BASE}/${SRCPOOL}/${pkgbase}"-*"${SRCEXT}" ]
+ __checkSourcePackage ${pkgbase}
done
}
@@ -23,13 +31,13 @@ load ../lib/common
local pkgbase
for pkgbase in "${pkgs[@]}"; do
- releasePackage extra "${pkgbase}" any
+ releasePackage extra "${pkgbase}"
done
db-update
sourceballs
for pkgbase in "${pkgs[@]}"; do
- [ -r "${FTP_BASE}/${SRCPOOL}/${pkgbase}"-*"${SRCEXT}" ]
+ __checkSourcePackage ${pkgbase}
done
}
@@ -40,16 +48,14 @@ 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
sourceballs
for pkgbase in "${pkgs[@]}"; do
- [ -r "${FTP_BASE}/${SRCPOOL}/${pkgbase}"-*"${SRCEXT}" ]
+ __checkSourcePackage ${pkgbase}
done
}
@@ -59,9 +65,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
sourceballs
@@ -71,6 +75,6 @@ load ../lib/common
done
sourceballs
- [ ! -r "${FTP_BASE}/${SRCPOOL}/pkg-simple-a"-*"${SRCEXT}" ]
- [ -r "${FTP_BASE}/${SRCPOOL}/pkg-simple-b"-*"${SRCEXT}" ]
+ __checkRemovedSourcePackage pkg-simple-a
+ __checkSourcePackage pkg-simple-b
}
diff --git a/test/fixtures/pkg-any-a/PKGBUILD b/test/fixtures/pkg-any-a/PKGBUILD
index cd5d66f..bf8f39c 100644
--- a/test/fixtures/pkg-any-a/PKGBUILD
+++ b/test/fixtures/pkg-any-a/PKGBUILD
@@ -5,6 +5,7 @@ pkgdesc="A package called ${pkgname}"
arch=('any')
url='http://www.archlinux.org/'
license=('GPL')
+options=(!strip)
package() {
install -d -m755 "${pkgdir}"/usr/share/${pkgname}
diff --git a/test/fixtures/pkg-any-b/PKGBUILD b/test/fixtures/pkg-any-b/PKGBUILD
index 90794fc..295cc77 100644
--- a/test/fixtures/pkg-any-b/PKGBUILD
+++ b/test/fixtures/pkg-any-b/PKGBUILD
@@ -5,6 +5,7 @@ pkgdesc="A package called ${pkgname}"
arch=('any')
url='http://www.archlinux.org/'
license=('GPL')
+options=(!strip)
package() {
install -d -m755 "${pkgdir}"/usr/share/${pkgname}
diff --git a/test/fixtures/pkg-simple-a/PKGBUILD b/test/fixtures/pkg-simple-a/PKGBUILD
index 9b4478e..d3fcbbb 100644
--- a/test/fixtures/pkg-simple-a/PKGBUILD
+++ b/test/fixtures/pkg-simple-a/PKGBUILD
@@ -6,6 +6,7 @@ arch=('i686' 'x86_64')
url='http://www.archlinux.org/'
license=('GPL')
depends=('glibc')
+options=(!strip)
makedepends=('gcc')
source=('Makefile' 'test.c')
md5sums=('c6cb8dcc86253355fed559416d0c8dcf'
diff --git a/test/fixtures/pkg-simple-b/PKGBUILD b/test/fixtures/pkg-simple-b/PKGBUILD
index 4a9e58d..fb44762 100644
--- a/test/fixtures/pkg-simple-b/PKGBUILD
+++ b/test/fixtures/pkg-simple-b/PKGBUILD
@@ -6,6 +6,7 @@ arch=('i686' 'x86_64')
url='http://www.archlinux.org/'
license=('GPL')
depends=('glibc')
+options=(!strip)
makedepends=('gcc')
source=('Makefile' 'test.c')
md5sums=('c6cb8dcc86253355fed559416d0c8dcf'
diff --git a/test/fixtures/pkg-simple-epoch/PKGBUILD b/test/fixtures/pkg-simple-epoch/PKGBUILD
index 0761b32..ef1261f 100644
--- a/test/fixtures/pkg-simple-epoch/PKGBUILD
+++ b/test/fixtures/pkg-simple-epoch/PKGBUILD
@@ -7,6 +7,7 @@ arch=('i686' 'x86_64')
url='http://www.archlinux.org/'
license=('GPL')
depends=('glibc')
+options=(!strip)
makedepends=('gcc')
source=('Makefile' 'test.c')
md5sums=('c6cb8dcc86253355fed559416d0c8dcf'
diff --git a/test/fixtures/pkg-single-arch/PKGBUILD b/test/fixtures/pkg-single-arch/PKGBUILD
new file mode 100644
index 0000000..de5dbc2
--- /dev/null
+++ b/test/fixtures/pkg-single-arch/PKGBUILD
@@ -0,0 +1,13 @@
+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')
+options=(!strip)
+
+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..95898ac
--- /dev/null
+++ b/test/fixtures/pkg-single-epoch/PKGBUILD
@@ -0,0 +1,14 @@
+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')
+options=(!strip)
+
+package() {
+ install -D -m755 /bin/true ${pkgdir}/usr/bin/${pkgname}
+}
diff --git a/test/fixtures/pkg-split-a/PKGBUILD b/test/fixtures/pkg-split-a/PKGBUILD
index f7a0576..06b6148 100644
--- a/test/fixtures/pkg-split-a/PKGBUILD
+++ b/test/fixtures/pkg-split-a/PKGBUILD
@@ -7,6 +7,7 @@ arch=('i686' 'x86_64')
url='http://www.archlinux.org/'
license=('GPL')
depends=('glibc')
+options=(!strip)
makedepends=('gcc')
source=('Makefile' 'test.c')
md5sums=('c6cb8dcc86253355fed559416d0c8dcf'
diff --git a/test/fixtures/pkg-split-b/PKGBUILD b/test/fixtures/pkg-split-b/PKGBUILD
index 3bd635c..7d1f0d6 100644
--- a/test/fixtures/pkg-split-b/PKGBUILD
+++ b/test/fixtures/pkg-split-b/PKGBUILD
@@ -8,6 +8,7 @@ url='http://www.archlinux.org/'
license=('GPL')
depends=('glibc')
+options=(!strip)
makedepends=('gcc')
source=('Makefile' 'test.c')
md5sums=('c6cb8dcc86253355fed559416d0c8dcf'
diff --git a/test/lib/common.bash b/test/lib/common.bash
index aeed8a0..73b0c54 100644
--- a/test/lib/common.bash
+++ b/test/lib/common.bash
@@ -3,9 +3,12 @@
. /usr/share/makepkg/util.sh
. "$(dirname "${BASH_SOURCE[0]}")"/../test.conf
-die() {
- echo "$*" >&2
- exit 1
+__updatePKGBUILD() {
+ local pkgrel
+
+ pkgrel=$(. PKGBUILD; expr ${pkgrel} + 1)
+ sed "s/pkgrel=.*/pkgrel=${pkgrel}/" -i PKGBUILD
+ svn commit -q -m"update pkg to pkgrel=${pkgrel}"
}
__getCheckSum() {
@@ -15,37 +18,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() {
@@ -65,6 +75,7 @@ setup() {
SRCPOOL='sources/packages'
TESTING_REPO='testing'
STABLE_REPOS=('core' 'extra')
+ ARCHES=(${ARCH_BUILD[*]@Q})
CLEANUP_DESTDIR="${TMP}/package-cleanup"
SOURCE_CLEANUP_DESTDIR="${TMP}/source-cleanup"
STAGING="${TMP}/staging"
@@ -73,6 +84,7 @@ setup() {
SOURCE_CLEANUP_DRYRUN=false
eot
. config
+ PKGEXT=".pkg.tar.xz"
mkdir -p "${TMP}/"{ftp,tmp,staging,{package,source}-cleanup,svn-packages-{copy,repo}}
@@ -95,7 +107,7 @@ eot
SVNREPOS=(
"svn-packages-copy file://${TMP}/svn-packages-repo core extra testing"
)
- ARCHES=(${ARCH_BUILD[*]})
+ ARCHES=(${ARCH_BUILD[*]@Q})
eot
echo 'BUILDSYSTEM=abs' > "$XDG_CONFIG_HOME/xbs/xbs.conf"
}
@@ -104,31 +116,11 @@ teardown() {
rm -rf "${TMP}"
}
-getpkgbase() {
- local _base
- _grep_pkginfo() {
- local _ret
-
- _ret="$(/usr/bin/bsdtar -xOqf "$1" .PKGINFO | grep -m 1 "^${2} = ")"
- echo "${_ret#${2} = }"
- }
-
- _base="$(_grep_pkginfo "$1" "pkgbase")"
- if [ -z "$_base" ]; then
- _grep_pkginfo "$1" "pkgname"
- else
- echo "$_base"
- fi
-}
-
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}
@@ -137,142 +129,148 @@ releasePackage() {
svn commit -q -m"initial commit of ${pkgbase}" "${TMP}/svn-packages-copy"
fi
- pushd "${TMP}/svn-packages-copy/${pkgbase}/trunk/" >/dev/null
- __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}/"
+ pushd "${TMP}/svn-packages-copy/${pkgbase}/trunk/"
+
+ __buildPackage "${STAGING}"/${repo}
+ pkgarches=($(. PKGBUILD; echo ${arch[@]}))
+ for tarch in "${pkgarches[@]}"; do
+ xbs release-client "${repo}" "${tarch}"
done
- popd >/dev/null
+ popd
}
-getPackageNamesFromPackageBase() {
+updatePackage() {
local pkgbase=$1
- $(. "packages/${pkgbase}/PKGBUILD"; echo ${pkgname[@]})
-}
-
-checkAnyPackageDB() {
- local repo=$1
- local pkg=$2
- local arch
- local db
-
- [ -r "${FTP_BASE}/${PKGPOOL}/${pkg}" ]
- [ -r "${FTP_BASE}/${PKGPOOL}/${pkg}.sig" ]
-
- for arch in "${ARCH_BUILD[@]}"; do
- [ -L "${FTP_BASE}/${repo}/os/${arch}/${pkg}" ]
- [ "$(readlink -e "${FTP_BASE}/${repo}/os/${arch}/${pkg}")" == "$(readlink -e "${FTP_BASE}/${PKGPOOL}/${pkg}")" ]
-
- [ -L "${FTP_BASE}/${repo}/os/${arch}/${pkg}.sig" ]
- [ "$(readlink -e "${FTP_BASE}/${repo}/os/${arch}/${pkg}.sig")" == "$(readlink -e "${FTP_BASE}/${PKGPOOL}/${pkg}.sig")" ]
-
- for db in "${DBEXT}" "${FILESEXT}"; do
- if [ -r "${FTP_BASE}/${repo}/os/${arch}/${repo}${db%.tar.*}" ]; then
- bsdtar -xf "${FTP_BASE}/${repo}/os/${arch}/${repo}${db%.tar.*}" -O | grep "${pkg}" &>/dev/null
- fi
- done
- done
- [ ! -r "${STAGING}/${repo}/${pkg}" ]
- [ ! -r "${STAGING}/${repo}/${pkg}".sig ]
+ pushd "${TMP}/svn-packages-copy/${pkgbase}/trunk/"
+ __updatePKGBUILD
+ __buildPackage
+ popd
}
-checkAnyPackage() {
- local repo=$1
- local pkg=$2
-
- checkAnyPackageDB "$repo" "$pkg"
+updateRepoPKGBUILD() {
+ local pkgbase=$1
+ local repo=$2
+ local arch=$3
- local pkgbase=$(getpkgbase "${FTP_BASE}/${PKGPOOL}/${pkg}")
- svn up -q "${TMP}/svn-packages-copy/${pkgbase}"
- [ -d "${TMP}/svn-packages-copy/${pkgbase}/repos/${repo}-any" ]
+ pushd "${TMP}/svn-packages-copy/${pkgbase}/repos/${repo}-${arch}/"
+ __updatePKGBUILD
+ popd
}
checkPackageDB() {
local repo=$1
- local pkg=$2
- local arch=$3
+ local pkgbase=$2
local db
+ local pkgarch
+ local repoarch
+ local repoarches
+ local pkgfile
+ local pkgname
- [ -r "${FTP_BASE}/${PKGPOOL}/${pkg}" ]
- [ -L "${FTP_BASE}/${repo}/os/${arch}/${pkg}" ]
- [ ! -r "${STAGING}/${repo}/${pkg}" ]
-
- [ "$(readlink -e "${FTP_BASE}/${repo}/os/${arch}/${pkg}")" == "$(readlink -e "${FTP_BASE}/${PKGPOOL}/${pkg}")" ]
-
- [ -r "${FTP_BASE}/${PKGPOOL}/${pkg}.sig" ]
- [ -L "${FTP_BASE}/${repo}/os/${arch}/${pkg}.sig" ]
- [ ! -r "${STAGING}/${repo}/${pkg}.sig" ]
-
- [ "$(readlink -e "${FTP_BASE}/${repo}/os/${arch}/${pkg}.sig")" == "$(readlink -e "${FTP_BASE}/${PKGPOOL}/${pkg}.sig")" ]
+ # FIXME: We guess the location of the PKGBUILD used for this repo
+ # We cannot read from trunk as __updatePKGBUILD() might have bumped the version
+ # and different repos can have different versions of the same package
+ local pkgbuildPaths=($(compgen -G "${TMP}/svn-packages-copy/${pkgbase}/repos/${repo}-*"))
+ local pkgbuildPath="${pkgbuildPaths[0]}"
+ echo Repo is $repo
+ echo pkgbuildPaths = ${pkgbuildPaths[@]}
+ echo pkgbuildPath = ${pkgbuildPath}
+ ls -ahl ${TMP}/svn-packages-copy/${pkgbase}/repos/
+ [ -r "${pkgbuildPath}/PKGBUILD" ]
+
+ local pkgarches=($(. "${pkgbuildPath}/PKGBUILD"; echo ${arch[@]}))
+ local pkgnames=($(. "${pkgbuildPath}/PKGBUILD"; echo ${pkgname[@]}))
+ local pkgver=$(. "${pkgbuildPath}/PKGBUILD"; get_full_version)
+
+ if [[ ${pkgarches[@]} == any ]]; then
+ repoarches=("${ARCHES[@]}")
+ else
+ repoarches=("${pkgarches[@]}")
+ fi
- for db in "${DBEXT}" "${FILESEXT}"; do
- if [ -r "${FTP_BASE}/${repo}/os/${arch}/${repo}${db%.tar.*}" ]; then
- bsdtar -xf "${FTP_BASE}/${repo}/os/${arch}/${repo}${db%.tar.*}" -O | grep "${pkg}" &>/dev/null
- fi
+ for pkgarch in ${pkgarches[@]}; do
+ for pkgname in ${pkgnames[@]}; do
+ pkgfile="${pkgname}-${pkgver}-${pkgarch}${PKGEXT}"
+
+ [ -r "${FTP_BASE}/${PKGPOOL}/${pkgfile}" ]
+ [ -r "${FTP_BASE}/${PKGPOOL}/${pkgfile}.sig" ]
+ [ ! -r "${STAGING}/${repo}/${pkgfile}" ]
+ [ ! -r "${STAGING}/${repo}/${pkgfile}.sig" ]
+
+ for repoarch in "${repoarches[@]}"; do
+ # Only 'any' packages can be found in repos of both arches
+ if [[ $pkgarch != any ]]; then
+ if [[ $pkgarch != ${repoarch} ]]; then
+ continue
+ fi
+ fi
+
+ [ -L "${FTP_BASE}/${repo}/os/${repoarch}/${pkgfile}" ]
+ [ "$(readlink -e "${FTP_BASE}/${repo}/os/${repoarch}/${pkgfile}")" == "$(readlink -e "${FTP_BASE}/${PKGPOOL}/${pkgfile}")" ]
+
+ [ -L "${FTP_BASE}/${repo}/os/${repoarch}/${pkgfile}.sig" ]
+ [ "$(readlink -e "${FTP_BASE}/${repo}/os/${repoarch}/${pkgfile}.sig")" == "$(readlink -e "${FTP_BASE}/${PKGPOOL}/${pkgfile}.sig")" ]
+
+ for db in "${DBEXT}" "${FILESEXT}"; do
+ [ -r "${FTP_BASE}/${repo}/os/${repoarch}/${repo}${db%.tar.*}" ]
+ bsdtar -xf "${FTP_BASE}/${repo}/os/${repoarch}/${repo}${db%.tar.*}" -O | grep "${pkgfile%${PKGEXT}}" &>/dev/null
+ done
+ done
+ done
done
}
checkPackage() {
local repo=$1
- local pkg=$2
- local arch=$3
-
- checkPackageDB "$repo" "$pkg" "$arch"
+ local pkgbase=$2
- local pkgbase=$(getpkgbase "${FTP_BASE}/${PKGPOOL}/${pkg}")
svn up -q "${TMP}/svn-packages-copy/${pkgbase}"
- [ -d "${TMP}/svn-packages-copy/${pkgbase}/repos/${repo}-${arch}" ]
-}
+ # TODO: Does not fail if one arch is missing
+ compgen -G "${TMP}/svn-packages-copy/${pkgbase}/repos/${repo}-*" >/dev/null
-checkRemovedPackageDB() {
- local repo=$1
- local pkgbase=$2
- local arch=$3
- local db
-
- for db in "${DBEXT}" "${FILESEXT}"; do
- if [ -r "${FTP_BASE}/${repo}/os/${arch}/${repo}${db%.tar.*}" ]; then
- ! bsdtar -xf "${FTP_BASE}/${repo}/os/${arch}/${repo}${db%.tar.*}" -O | grep "${pkgbase}" &>/dev/null
- fi
- done
+ checkPackageDB "$repo" "$pkgbase"
}
checkRemovedPackage() {
local repo=$1
local pkgbase=$2
- local arch=$3
-
- checkRemovedPackageDB "$repo" "$pkgbase" "$arch"
svn up -q "${TMP}/svn-packages-copy/${pkgbase}"
- [ ! -d "${TMP}/svn-packages-copy/${pkgbase}/repos/${repo}-${arch}" ]
+ ! compgen -G "${TMP}/svn-packages-copy/${pkgbase}/repos/${repo}-*" >/dev/null
+
+ checkRemovedPackageDB "$repo" "$pkgbase"
}
-checkRemovedAnyPackageDB() {
+checkRemovedPackageDB() {
local repo=$1
local pkgbase=$2
local arch
local db
+ local tarch
+ local tarches
+ local pkgarches
+ local pkgnames
+ local pkgname
+
+ local pkgbuildPath="${TMP}/svn-packages-copy/${pkgbase}/trunk/PKGBUILD"
+ [[ -r ${pkgbuildPath} ]]
+ pkgarches=($(. "${pkgbuildPath}"; echo ${arch[@]}))
+ pkgnames=($(. "${pkgbuildPath}"; echo ${pkgname[@]}))
+
+ if [[ ${pkgarches[@]} == any ]]; then
+ tarches=(${ARCHES[@]})
+ else
+ tarches=(${pkgarches[@]})
+ fi
for db in "${DBEXT}" "${FILESEXT}"; do
- for arch in "${ARCH_BUILD[@]}"; do
- if [ -r "${FTP_BASE}/${repo}/os/${arch}/${repo}${db%.tar.*}" ]; then
- ! bsdtar -xf "${FTP_BASE}/${repo}/os/${arch}/${repo}${db%.tar.*}" -O | grep "${pkgbase}" &>/dev/null
+ for tarch in "${tarches[@]}"; do
+ if [ -r "${FTP_BASE}/${repo}/os/${tarch}/${repo}${db%.tar.*}" ]; then
+ for pkgname in ${pkgnames[@]}; do
+ ! bsdtar -xf "${FTP_BASE}/${repo}/os/${tarch}/${repo}${db%.tar.*}" -O | grep "${pkgname}" &>/dev/null
+ done
fi
done
done
}
-
-checkRemovedAnyPackage() {
- local repo=$1
- local pkgbase=$2
-
- checkRemovedAnyPackageDB "$repo" "$pkgbase"
-
- svn up -q "${TMP}/svn-packages-copy/${pkgbase}"
- [ ! -d "${TMP}/svn-packages-copy/${pkgbase}/repos/${repo}-any" ]
-}