summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZhineng Li <[email protected]>2026-01-21 10:49:17 +0800
committerZhineng Li <[email protected]>2026-01-21 10:49:17 +0800
commit4aad07d551b920a61596cf27c9357f92c6516717 (patch)
tree9c9475e9c021ff393966cfd99edc3b0afa9414a0
parente9c4a26494516f8c71fa1cbbc741ccf2212ceb76 (diff)
downloadvehicle-license-china-4aad07d551b920a61596cf27c9357f92c6516717.tar.gz
vehicle-license-china-4aad07d551b920a61596cf27c9357f92c6516717.zip
matrix test
-rw-r--r--composer.json9
-rw-r--r--docker-compose.yml20
-rwxr-xr-xscripts/test.sh28
3 files changed, 57 insertions, 0 deletions
diff --git a/composer.json b/composer.json
index 07e888d..001780a 100644
--- a/composer.json
+++ b/composer.json
@@ -24,5 +24,14 @@
},
"require-dev": {
"phpunit/phpunit": "^12"
+ },
+ "scripts": {
+ "test": "phpunit",
+ "matrix": [
+ "COMPOSER_FLAGS=--prefer-lowest docker compose run --rm php84",
+ "COMPOSER_FLAGS=--prefer-stable docker compose run --rm php84",
+ "COMPOSER_FLAGS=--prefer-lowest docker compose run --rm php85",
+ "COMPOSER_FLAGS=--prefer-stable docker compose run --rm php85"
+ ]
}
}
diff --git a/docker-compose.yml b/docker-compose.yml
new file mode 100644
index 0000000..4a8aea4
--- /dev/null
+++ b/docker-compose.yml
@@ -0,0 +1,20 @@
+x-test: &test
+ environment:
+ - COMPOSER_FLAGS=${COMPOSER_FLAGS:-}
+ volumes:
+ - .:/app:ro
+ - composer-cache:/root/.composer
+ working_dir: /app
+ command: sh scripts/test.sh
+
+services:
+ php84:
+ <<: *test
+ image: php:8.4-cli-alpine
+
+ php85:
+ <<: *test
+ image: php:8.5-cli-alpine
+
+volumes:
+ composer-cache:
diff --git a/scripts/test.sh b/scripts/test.sh
new file mode 100755
index 0000000..70554be
--- /dev/null
+++ b/scripts/test.sh
@@ -0,0 +1,28 @@
+#!/bin/sh
+set -e
+
+COMPOSER_PHAR="/root/.composer/composer.phar"
+WORKDIR="/tmp/app"
+
+# Copy project to isolated working directory
+rm -rf "$WORKDIR"
+cp -r /app "$WORKDIR"
+cd "$WORKDIR"
+
+# Remove lock file and vendor for fresh install
+rm -f composer.lock
+rm -rf vendor/
+
+# Download Composer if not cached
+if [ ! -f "$COMPOSER_PHAR" ]; then
+ echo "Downloading Composer..."
+ mkdir -p /root/.composer
+ curl -sS https://getcomposer.org/installer | php -- --install-dir=/root/.composer --filename=composer.phar
+fi
+
+# Install dependencies
+echo "COMPOSER_FLAGS: ${COMPOSER_FLAGS:-<empty>}"
+php "$COMPOSER_PHAR" update --no-interaction ${COMPOSER_FLAGS:-}
+
+# Run tests
+php "$COMPOSER_PHAR" test