abuild/tests/abump_test
Kevin Daudt b7813c377c abump: demonstrate abump environment polution
abump sources the APKBUILD to be able to check some variables. When the
APKBUILD exports variables in the global scope, that affects the abump
environment as well.

When abump then executes abuild, it will inherrit the environment from
abump. This is an issue under the following circumstances:

* The APKBUILD only updates the value of an exported variable if it's
  not set
* The default value includes a variable set by abuild, like `$srcdir`.

Because the variable is set by abuild, but not abump, the resulting
exported variable is different. Because it's then set incorrectly in the
abump environment, it's no longer updated with the correct variable when
abuild is invoked.
2022-10-15 10:52:11 +00:00

116 lines
2.3 KiB
Plaintext
Executable File

#!/usr/bin/env atf-sh
. $(atf_get_srcdir)/test_env.sh
init_tests \
abump_help \
abump_invalid_opt \
abump_missing_args \
abump_simple_bump \
abump_isolates_apkbuild
export ABUILD_SHAREDIR=$(atf_get_srcdir)/..
export GIT_CONFIG_GLOBAL="$(atf_get_srcdir)/testdata/gitconfig"
export APORTSDIR="$PWD"
export ABUILD_OPTS=""
export ABUILD_APK_INDEX_OPTS="--allow-untrusted"
export REPODEST="$PWD"/packages
abump_help_body() {
atf_check -s exit:0 \
-o match:"Usage" \
abump -h
}
abump_invalid_opt_body() {
atf_check -s exit:2 \
-e match:"Usage" \
abump -@
}
abump_missing_args_body() {
atf_check -s exit:2 \
-e match:"Usage" \
abump
}
abump_simple_bump_body() {
cp -r "$(atf_get_srcdir)"/testdata/.abuild .
git init
mkdir -p main/foo
cd main/foo
echo "first" > foo-1.0.txt
cat > APKBUILD <<-EOF
# Maintainer: Test user <user@example.com>
pkgname="foo"
pkgver=1.0
pkgrel=0
pkgdesc="dummy package for test"
url="https://alpinelinux.org"
license="MIT"
arch="noarch"
source="foo-\$pkgver.txt"
options="!check"
package() {
install -D "\$srcdir"/foo-\$pkgver.txt "\$pkgdir"/foo
}
EOF
abuild checksum
abuild
git add APKBUILD foo-1.0.txt
git commit -m "test commit"
echo "second" > foo-1.1.txt
atf_check \
-o match:"foo-1.1.txt: OK" \
-e match:"upgrade to 1.1" \
abump foo-1.1
atf_check -s exit:1 \
-e match:">>> ERROR: version is already 1.1" \
abump foo-1.1
sed -i -e 's/pkgver=.*/pkgver=1.2/' APKBUILD
echo "third" > foo-1.2.txt
atf_check \
-o match:"foo-1.2.txt: OK" \
-e match:"upgrade to 1.2" \
abump foo-1.2
}
abump_isolates_apkbuild_body() {
cp -r "$(atf_get_srcdir)"/testdata/.abuild .
git init
mkdir -p main/bar
cd main/bar
echo "first" > bar-1.0.txt
cat > APKBUILD <<-"EOF"
# Maintainer: Test user <user@example.com>
pkgname="bar"
pkgver=1.0
pkgrel=0
pkgdesc="dummy package for test"
url="https://alpinelinux.org"
license="MIT"
arch="noarch"
source="bar-$pkgver.txt"
options="!check"
export BUILDFLAGS="${BUILDFLAGS:-"repo=$repo"}"
package() {
echo "BUILDFLAGS: $BUILDFLAGS"
install -D "$srcdir"/bar-$pkgver.txt "$pkgdir"/bar
}
EOF
abuild checksum
abuild
git add APKBUILD bar-1.0.txt
git commit -m "test commit"
echo "second" > bar-1.1.txt
atf_check \
-o match:"BUILDFLAGS: repo=main" \
-e ignore \
abump bar-1.1
}