binutils/tests/lib.sh
Miloš Prchlík 7391c5eea6 Add coverage for RHEL-45873
binutils: Avoid creating gaps between adjacent LOAD segments
2024-08-08 19:19:18 +02:00

145 lines
3.5 KiB
Bash

#!/bin/bash
. /usr/share/beakerlib/beakerlib.sh || exit 1
BU_TMPDIR_PARENT="${BU_TMPDIR_PARENT:-/tmp}"
BU_TEST_USER="${BU_TEST_USER:-buUser}"
BU_SOURCE_DIR="${BU_SOURCE_DIR:-$(pwd)}"
function buEnterTestUser () {
username="${1:-$BU_TEST_USER}"
rlRun "userdel -r $username" 0,6
rlRun "useradd -m -d /home/$username $username"
}
function buExitTestUser () {
username="${1:-$BU_TEST_USER}"
rlRun "userdel -r $username"
}
function buTestHeader () {
_LD="$(which ld)"
_GCC="$(which gcc)"
_LD_PACKAGE="$(rpm --qf '%{name}\n' -qf "$_LD" | head -1)"
_GCC_PACKAGE="$(rpm --qf '%{name}\n' -qf "$_GCC" | head -1)"
export REQUIRES="${REQUIRES} ${_REQUIRES:-}"
rlLogInfo "PACKAGES=$PACKAGES"
rlLogInfo "REQUIRES=$REQUIRES"
rlLogInfo "COLLECTIONS=$COLLECTIONS"
rlLogInfo "TOOLSET=$TOOLSET"
rlLogInfo "COLLECTION_PACKAGES=$COLLECTION_PACKAGES"
rlLogInfo "LD=$_LD"
rlLogInfo "GCC=$_GCC"
rlLogInfo "ARCH=$(arch)"
rlLogInfo "BU_TMPDIR_PARENT=$BU_TMPDIR_PARENT"
rlLogInfo "BU_AS_TEST_USER=$BU_AS_TEST_USER"
rlShowRunningKernel
rlAssertRpm --all
if [ "$1" = "--system-is-active" ]; then
rlAssertEquals "active ld $_LD is owned by the given package" \
"$_LD_PACKAGE" \
"binutils"
rlAssertEquals "active gcc $_GCC is owned by the given package" \
"$_GCC_PACKAGE" \
"gcc"
else
rlAssertEquals "active ld $_LD is owned by the given package" \
"$_LD_PACKAGE" \
"$BINUTILS_PACKAGE"
rlAssertEquals "active gcc $_GCC is owned by the given package" \
"$_GCC_PACKAGE" \
"$GCC_PACKAGE"
fi
}
function buEnterTmpDir () {
rlRun "export TmpDir=$(mktemp -d -p "$BU_TMPDIR_PARENT")" 0 "Creating tmp directory"
if [ -n "$BU_AS_TEST_USER" ]; then
username="${1:-$BU_TEST_USER}"
buEnterTestUser "$username"
rlRun "chown -R $username $TmpDir"
fi
rlRun "pushd $TmpDir"
}
function buExitTmpDir () {
rlRun "popd"
if [ -z "$PRESERVE_TMPDIR" ]; then
rlRun "rm -r $TmpDir" 0 "Removing tmp directory"
fi
if [ -n "$BU_AS_TEST_USER" ]; then
username="${1:-$BU_TEST_USER}"
buExitTestUser "$username"
fi
}
function buPrepareSRPM () {
local installed_rpm="$1"
local builddep_options="${2:-}"
rlFetchSrcForInstalled "$installed_rpm"
rlRun "export SRPM=$(find . -name '*.src.rpm')"
rlRun "rpm -ivh --define=\"_topdir $TmpDir\" $SRPM"
rlRun "export SPECDIR=$(rpm --define="_topdir $TmpDir" --eval=%_specdir)"
rlRun "export SPECFILE=$(find "$SPECDIR/" -name '*.spec')"
rlRun "yum-builddep -y --define=\"_topdir $TmpDir\" $builddep_options $SPECFILE"
}
function buConfigureSRPM () {
if [ -n "$BU_AS_TEST_USER" ]; then
username="${1:-$BU_TEST_USER}"
rlRun "su - $username -c 'rpmbuild -bp --define=\"_topdir $TmpDir\" $SPECFILE'"
else
rlRun " rpmbuild -bp --define=\"_topdir $TmpDir\" $SPECFILE"
fi
}
function buBuildSRPM () {
if [ -n "$BU_AS_TEST_USER" ]; then
username="${1:-$BU_TEST_USER}"
rlRun "su - $username -c 'rpmbuild -bc --define=\"_topdir $TmpDir\" $SPECFILE'"
else
rlRun " rpmbuild -bc --define=\"_topdir $TmpDir\" $SPECFILE"
fi
}
function buCopyReproducers () {
for filename in $1; do
rlRun "cp $BU_SOURCE_DIR/$filename $TmpDir/"
done
}