summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZhineng Li <[email protected]>2026-01-21 15:57:44 +0800
committerZhineng Li <[email protected]>2026-01-21 16:00:18 +0800
commita00d74ff1c3f429239ef93787065c4376c54fabd (patch)
treed40828d6abeca2f0bad1f980f778d5dec0b39bb4
parent0fb3d952feed9773a777a336286b68e1f78e13c2 (diff)
downloadregion-china-a00d74ff1c3f429239ef93787065c4376c54fabd.tar.gz
region-china-a00d74ff1c3f429239ef93787065c4376c54fabd.zip
matrix test
-rw-r--r--.gitattributes1
-rw-r--r--composer.json8
-rw-r--r--docker-compose.yml20
-rw-r--r--scripts/test.sh28
4 files changed, 56 insertions, 1 deletions
diff --git a/.gitattributes b/.gitattributes
index f83bef1..6b51cf8 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -5,3 +5,4 @@ tests/ export-ignore
.gitignore export-ignore
phpunit.xml.dist export-ignore
src/Build/ export-ignore
+docker-compose.yml export-ignore
diff --git a/composer.json b/composer.json
index 0b244f0..d413ca9 100644
--- a/composer.json
+++ b/composer.json
@@ -27,6 +27,12 @@
"phpunit/phpunit": "^12"
},
"scripts": {
- "test": "phpunit"
+ "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 100644
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