Merge branch 'makepkg-regression-tests' into 'master'

Draft: tests: add some tests for makepkg

See merge request pacman/pacman!186
This commit is contained in:
Christoph Reiter 2025-06-22 09:33:23 +00:00
commit e258e81c90
4 changed files with 115 additions and 0 deletions

View file

@ -466,6 +466,7 @@ TEST_ENV.set('PMTEST_SCRIPT_DIR', join_paths(meson.project_build_root(), 'script
subdir('test/pacman')
subdir('test/scripts')
subdir('test/util')
subdir('test/makepkg')
message('\n '.join([
'@0@ @1@'.format(meson.project_name(), meson.project_version()),

View file

@ -0,0 +1,48 @@
#!/usr/bin/bash
set -e
tempdir=$(mktemp -d)
cleanup() { rm -rf "$tempdir"; }
trap cleanup EXIT
export MAKEPKG_LIBRARY="${PMTEST_LIBMAKEPKG_DIR}"
export MAKEPKG_CONF="${PMTEST_UTIL_DIR}/makepkg.conf"
export PACMAN="${PMTEST_UTIL_DIR}/pacman"
MAKEPKG="${PMTEST_SCRIPT_DIR}/makepkg"
# https://gitlab.archlinux.org/pacman/pacman/-/issues/142
# Running makepkg twice if the source is git without a fragment
# should not fail.
test() {
# Dummy git repo
export GIT_COMMITTER_NAME="Test User"
export GIT_COMMITTER_EMAIL="test@example.com"
export GIT_AUTHOR_NAME="$GIT_COMMITTER_NAME"
export GIT_AUTHOR_EMAIL="$GIT_COMMITTER_EMAIL"
local gitrepo="$tempdir/gitrepo"
mkdir -p $gitrepo && cd $gitrepo
git init .
git checkout -b main
git commit --allow-empty -m "test"
# Dummy PKGBUILD
local pkgbuild_content=$(cat <<EOF
pkgname=test
pkgver=1
pkgrel=1
arch=('any')
source=(git+file://$gitrepo)
sha256sums=('SKIP')
EOF
)
local pkgdir="$tempdir/pkgdir"
mkdir -p "$pkgdir" && cd "$pkgdir"
echo "$pkgbuild_content" > "PKGBUILD"
"$MAKEPKG"
"$MAKEPKG" -f
}
test;

View file

@ -0,0 +1,57 @@
#!/usr/bin/bash
set -e
tempdir=$(mktemp -d)
cleanup() { rm -rf "$tempdir"; }
trap cleanup EXIT
export MAKEPKG_LIBRARY="${PMTEST_LIBMAKEPKG_DIR}"
export MAKEPKG_CONF="${PMTEST_UTIL_DIR}/makepkg.conf"
export PACMAN="${PMTEST_UTIL_DIR}/pacman"
MAKEPKG="${PMTEST_SCRIPT_DIR}/makepkg"
# https://gitlab.archlinux.org/pacman/pacman/-/issues/143
# Always check out the default branch, and not a branch matching
# the directory name.
test() {
# Dummy git repo
export GIT_COMMITTER_NAME="Test User"
export GIT_COMMITTER_EMAIL="test@example.com"
export GIT_AUTHOR_NAME="$GIT_COMMITTER_NAME"
export GIT_AUTHOR_EMAIL="$GIT_COMMITTER_EMAIL"
local gitrepo="$tempdir/gitrepo"
mkdir -p $gitrepo && cd $gitrepo
git init --initial-branch=main
git checkout -b main
touch good
git add good
git commit -m "good"
git checkout -b somebranch
git rm good
git commit -m "bad"
git checkout main
# Dummy PKGBUILD
local pkgbuild_content=$(cat <<EOF
pkgname=test
pkgver=1
pkgrel=1
arch=('any')
source=(somebranch::git+file://$gitrepo)
sha256sums=('SKIP')
package() {
[[ -e somebranch/good ]]
}
EOF
)
local pkgdir="$tempdir/pkgdir"
mkdir -p "$pkgdir" && cd "$pkgdir"
echo "$pkgbuild_content" > "PKGBUILD"
"$MAKEPKG"
}
test;

9
test/makepkg/meson.build Normal file
View file

@ -0,0 +1,9 @@
find_program('git', required: true)
test('makepkg-build-git-head-twice',
find_program('makepkg-build-git-head-twice.sh'),
env: TEST_ENV)
test('makepkg-checkout-dir-matches-branch',
find_program('makepkg-checkout-dir-matches-branch.sh'),
env: TEST_ENV)