aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeffery To <jeffery.to@gmail.com>2023-07-17 17:02:30 +0800
committerJeffery To <jeffery.to@gmail.com>2023-07-17 20:17:44 +0800
commit5422bd621836e361bcb49c427f888fe3a8df267c (patch)
treeeb2f9f2bc260e7e399a9b03df252d03a2524a8e1
parent0174cea69757589be50b9dd774394ce18cf61dae (diff)
CI: Fix finding test script
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 <jeffery.to@gmail.com>
1 files changed, 24 insertions, 16 deletions
diff --git a/.github/workflows/entrypoint.sh b/.github/workflows/entrypoint.sh
index 7587aa8b7..8d48d8a22 100755
--- a/.github/workflows/entrypoint.sh
+++ b/.github/workflows/entrypoint.sh
@@ -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"
@@ -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