Skip to content

Commit

Permalink
CI: Fix finding test script
Browse files Browse the repository at this point in the history
Currently, the run-test code tries to find the package source directory
based on the directory name only. This fails for the Go compiler package
because there is more than one directory named "golang".

This uses the full path listed in the "Source:" line of the control file
to find the package source directory.

This also:

* Checks for the test script earlier, to avoid installing and removing
  ipk files when there is no test script to be run

* Makes PKG_VERSION parsing more lenient, as the package may not have a
  PKG_RELEASE, e.g. attendedsysupgrade-common

Signed-off-by: Jeffery To <[email protected]>
(cherry picked from commit 5422bd6)
  • Loading branch information
jefferyto authored and 1715173329 committed Jul 22, 2023
1 parent 9d1c06f commit 254e817
Showing 1 changed file with 24 additions and 16 deletions.
40 changes: 24 additions & 16 deletions .github/workflows/entrypoint.sh
Original file line number Diff line number Diff line change
Expand Up @@ -20,15 +20,29 @@ for PKG in /ci/*.ipk; do
# package name including variant
PKG_NAME=$(sed -ne 's#^Package: \(.*\)$#\1#p' ./control)
# package version without release
PKG_VERSION=$(sed -ne 's#^Version: \(.*\)-[0-9]*$#\1#p' ./control)
# package source contianing test.sh script
PKG_SOURCE=$(sed -ne 's#^Source: .*/\(.*\)$#\1#p' ./control)
PKG_VERSION=$(sed -ne 's#^Version: \(.*\)$#\1#p' ./control)
PKG_VERSION="${PKG_VERSION%-[!-]*}"
# package source containing test.sh script
PKG_SOURCE=$(sed -ne 's#^Source: \(.*\)$#\1#p' ./control)
PKG_SOURCE="${PKG_SOURCE#/feed/}"

echo
echo "Testing package $PKG_NAME in version $PKG_VERSION from $PKG_SOURCE"

export PKG_NAME PKG_VERSION CI_HELPER
if ! [ -d "/ci/$PKG_SOURCE" ]; then
echo "$PKG_SOURCE is not a directory"
exit 1
fi

PRE_TEST_SCRIPT="/ci/$PKG_SOURCE/pre-test.sh"
TEST_SCRIPT="/ci/$PKG_SOURCE/test.sh"

if ! [ -f "$TEST_SCRIPT" ]; then
echo "No test.sh script available"
continue
fi

PRE_TEST_SCRIPT=$(find /ci/ -name "$PKG_SOURCE" -type d)/pre-test.sh
export PKG_NAME PKG_VERSION CI_HELPER

if [ -f "$PRE_TEST_SCRIPT" ]; then
echo "Use package specific pre-test.sh"
Expand All @@ -44,18 +58,12 @@ for PKG in /ci/*.ipk; do

opkg install "$PKG"

TEST_SCRIPT=$(find /ci/ -name "$PKG_SOURCE" -type d)/test.sh

if [ -f "$TEST_SCRIPT" ]; then
echo "Use package specific test.sh"
if sh "$TEST_SCRIPT" "$PKG_NAME" "$PKG_VERSION"; then
echo "Test successful"
else
echo "Test failed"
exit 1
fi
echo "Use package specific test.sh"
if sh "$TEST_SCRIPT" "$PKG_NAME" "$PKG_VERSION"; then
echo "Test successful"
else
echo "No test.sh script available"
echo "Test failed"
exit 1
fi

opkg remove "$PKG_NAME" --force-removal-of-dependent-packages --force-remove --autoremove || true
Expand Down

0 comments on commit 254e817

Please sign in to comment.