Skip to content

Commit d7571ba

Browse files
committed
ci: improve image test script
1 parent a7d9143 commit d7571ba

1 file changed

Lines changed: 60 additions & 8 deletions

File tree

runtime/test-image.sh

Lines changed: 60 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,19 @@ fi
5959

6060
# 5. Modules (with standard Lambda LD_LIBRARY_PATH)
6161
LAMBDA_LD_PATH="/opt/lib:/lib64:/usr/lib64"
62-
MODULES=$(docker run --rm --platform "$PLATFORM" -e LD_LIBRARY_PATH="$LAMBDA_LD_PATH" --entrypoint /opt/ymir/bin/php "$IMAGE" -m 2>/dev/null)
62+
# Capture both stdout and stderr to detect startup warnings
63+
MODULE_OUTPUT=$(docker run --rm --platform "$PLATFORM" -e LD_LIBRARY_PATH="$LAMBDA_LD_PATH" --entrypoint /opt/ymir/bin/php "$IMAGE" -m 2>&1)
64+
MODULES=$(echo "$MODULE_OUTPUT" | grep -v "PHP Warning" | grep -v "Failed loading" || true)
65+
STARTUP_ERRORS=$(echo "$MODULE_OUTPUT" | grep -E "PHP Warning|Failed loading|Unable to load" || true)
66+
67+
if [ -n "$STARTUP_ERRORS" ]; then
68+
echo " [FAIL] PHP Startup Errors detected:"
69+
echo "--------------------------------------------------------------------------------"
70+
echo "$STARTUP_ERRORS"
71+
echo "--------------------------------------------------------------------------------"
72+
FAILED=1
73+
fi
74+
6375
PHP_VER=$(docker run --rm --platform "$PLATFORM" -e LD_LIBRARY_PATH="$LAMBDA_LD_PATH" --entrypoint /opt/ymir/bin/php "$IMAGE" -r "echo PHP_VERSION_ID;" 2>/dev/null)
6476

6577
REQUIRED=("apcu" "igbinary" "zstd" "imagick" "intl" "pdo_mysql")
@@ -72,13 +84,43 @@ REQUIRED+=("Zend OPcache")
7284

7385
for mod in "${REQUIRED[@]}"; do
7486
if echo "$MODULES" | grep -qi "$mod"; then
75-
echo " [OK] $mod"
87+
echo " [OK] Module loaded: $mod"
7688
else
77-
echo " [FAIL] $mod missing!"
89+
echo " [FAIL] Module missing: $mod"
7890
FAILED=1
7991
fi
8092
done
8193

94+
# 5.5 Extension File Verification
95+
echo " [INFO] Verifying extension paths..."
96+
EXT_DIR=$(docker run --rm --platform "$PLATFORM" -e LD_LIBRARY_PATH="$LAMBDA_LD_PATH" --entrypoint /opt/ymir/bin/php "$IMAGE" -r "echo ini_get('extension_dir');" 2>/dev/null)
97+
if [ -z "$EXT_DIR" ]; then
98+
echo " [FAIL] Could not determine extension_dir"
99+
FAILED=1
100+
else
101+
if docker run --rm --platform "$PLATFORM" --entrypoint /bin/sh "$IMAGE" -c "[ -d $EXT_DIR ]"; then
102+
echo " [OK] Extension directory exists: $EXT_DIR"
103+
for ext in "pdo_mysql.so"; do
104+
if docker run --rm --platform "$PLATFORM" --entrypoint /bin/sh "$IMAGE" -c "[ -f $EXT_DIR/$ext ]"; then
105+
echo " [OK] Extension file exists: $ext"
106+
else
107+
echo " [FAIL] Extension file missing: $EXT_DIR/$ext"
108+
FAILED=1
109+
fi
110+
done
111+
# Opcache can be built-in or shared
112+
if ! docker run --rm --platform "$PLATFORM" -e LD_LIBRARY_PATH="$LAMBDA_LD_PATH" --entrypoint /opt/ymir/bin/php "$IMAGE" -m | grep -qi "Zend OPcache"; then
113+
if ! docker run --rm --platform "$PLATFORM" --entrypoint /bin/sh "$IMAGE" -c "[ -f $EXT_DIR/opcache.so ]"; then
114+
echo " [FAIL] Zend OPcache missing (not in php -m and no opcache.so found)"
115+
FAILED=1
116+
fi
117+
fi
118+
else
119+
echo " [FAIL] Extension directory missing: $EXT_DIR"
120+
FAILED=1
121+
fi
122+
fi
123+
82124
# 6. Relay Configuration
83125
if [ -n "$PHP_VER" ] && [ "$PHP_VER" -ge 70400 ]; then
84126
EVICTION_POLICY=$(docker run --rm --platform "$PLATFORM" -e LD_LIBRARY_PATH="$LAMBDA_LD_PATH" --entrypoint /opt/ymir/bin/php "$IMAGE" -r "echo ini_get('relay.eviction_policy');" 2>/dev/null)
@@ -90,13 +132,23 @@ if [ -n "$PHP_VER" ] && [ "$PHP_VER" -ge 70400 ]; then
90132
fi
91133
fi
92134

93-
# 7. Warnings
94-
WARNINGS=$(docker run --rm --platform "$PLATFORM" --entrypoint /opt/ymir/bin/php "$IMAGE" -v 2>&1 >/dev/null || true)
95-
if [ -n "$WARNINGS" ]; then
96-
echo " [FAIL] Warnings: $WARNINGS"
135+
# 7. Warnings (Comprehensive check)
136+
# Check multiple commands to ensure no hidden startup warnings
137+
PHP_COMMANDS=("-v" "-i" "-m")
138+
ANY_WARNINGS=""
139+
for cmd in "${PHP_COMMANDS[@]}"; do
140+
CMD_WARNINGS=$(docker run --rm --platform "$PLATFORM" --entrypoint /opt/ymir/bin/php "$IMAGE" $cmd 2>&1 >/dev/null | grep -E "Warning|Error|failed" || true)
141+
if [ -n "$CMD_WARNINGS" ]; then
142+
ANY_WARNINGS="${ANY_WARNINGS}\nCommand 'php $cmd':\n$CMD_WARNINGS"
143+
fi
144+
done
145+
146+
if [ -n "$ANY_WARNINGS" ]; then
147+
echo " [FAIL] PHP Startup Warnings/Errors detected:"
148+
echo -e "$ANY_WARNINGS"
97149
FAILED=1
98150
else
99-
echo " [OK] No warnings"
151+
echo " [OK] No PHP startup warnings"
100152
fi
101153

102154
# 8. PHP-FPM

0 commit comments

Comments
 (0)