diff --git a/.github/workflows/continuous-integration.yml b/.github/workflows/continuous-integration.yml
new file mode 100644
index 00000000..c84bc85c
--- /dev/null
+++ b/.github/workflows/continuous-integration.yml
@@ -0,0 +1,101 @@
+name: "Continuous Integration"
+
+on:
+ pull_request:
+ push:
+ branches:
+ - 'refs/pull/*'
+
+env:
+ TEST_TAG: laminas/ci-matrix-action:test
+
+jobs:
+ matrix:
+ name: Generate job matrix
+ runs-on: ubuntu-latest
+ outputs:
+ matrix: ${{ steps.matrix.outputs.matrix }}
+ steps:
+ - name: Checkout sourcecode
+ uses: actions/checkout@v3
+ - name: Gather integration test directory names
+ id: matrix
+ # This provides a dedicated "check" to asynchronously test all integration tests within the tests/ directory
+ # The project name from the tests/ directory is then re-used within the "qa" job to run the generated "container"
+ # within that directory.
+ run: cd tests; echo "::set-output name=matrix::[\"$(ls -d * | tr '\n' ' ' | sed 's/ $//' | sed 's/ /\",\"/g')\"]"
+
+ container:
+ name: Prepare docker container
+ runs-on: "ubuntu-latest"
+ strategy:
+ fail-fast: true
+ steps:
+ - name: Checkout sourcecode
+ uses: actions/checkout@v3
+
+ - name: Set up QEMU
+ uses: docker/setup-qemu-action@v1
+
+ - name: Set up Docker Buildx
+ uses: docker/setup-buildx-action@v1
+
+ - name: Build container for CI pipeline
+ uses: docker/build-push-action@v2
+ with:
+ context: .
+ load: true
+ push: false
+ tags: ${{ env.TEST_TAG }}
+ outputs: type=docker,dest=/tmp/container.tar
+ cache-from: type=gha
+ cache-to: type=gha,mode=max
+
+ - name: Upload container artifact
+ uses: actions/upload-artifact@v2
+ with:
+ name: container
+ path: /tmp/container.tar
+
+ qa:
+ name: QA Checks
+ needs: [matrix, container]
+ runs-on: "ubuntu-latest"
+ strategy:
+ fail-fast: false
+ matrix:
+ projectName: ${{ fromJSON(needs.matrix.outputs.matrix) }}
+ steps:
+ - name: Checkout sourcecode
+ uses: actions/checkout@v3
+
+ - name: Download container artifact
+ uses: actions/download-artifact@v2
+ with:
+ name: container
+ path: /tmp
+
+ - name: Load image
+ run: docker load --input /tmp/container.tar
+
+ - name: "Generating matrix for project: ${{ matrix.projectName }}"
+ id: matrix_generation
+ env:
+ PROJECT_NAME_TO_TEST: ${{ matrix.projectName }}
+ run: cd tests/${PROJECT_NAME_TO_TEST} && docker run -v $(realpath .):/github/workspace -w=/github/workspace ${TEST_TAG} node ../../index.js $(test -r diff && cat diff || echo -n "")
+
+ - name: "Output generated matrix"
+ uses: sergeysova/jq-action@v2
+ with:
+ cmd: "jq . < <(echo '${{ steps.matrix_generation.outputs.matrix }}')"
+
+ - name: Minify matrix from test directory
+ uses: sergeysova/jq-action@v2
+ id: expected_matrix
+ env:
+ PROJECT_NAME_TO_TEST: ${{ matrix.projectName }}
+ with:
+ cmd: 'jq -c . < tests/${PROJECT_NAME_TO_TEST}/matrix.json'
+
+ - name: "verify output of generated matrix for project: empty-project"
+ run: diff --color <(echo '${{ steps.expected_matrix.outputs.value }}') <(echo '${{ steps.matrix_generation.outputs.matrix }}')
diff --git a/.laminas-ci.json b/.laminas-ci.json
new file mode 100644
index 00000000..3cfc5fd9
--- /dev/null
+++ b/.laminas-ci.json
@@ -0,0 +1,10 @@
+{
+ "additional_checks": [
+ {
+ "name": "Run matrix on every test project",
+ "job": {
+ "command": "for directory tests/*; do cd $directory; node ../../index.js || exit 1; cd ../.."
+ }
+ }
+ ]
+}
diff --git a/tests/code-check-codeception-dist/.laminas-ci.json b/tests/code-check-codeception-dist/.laminas-ci.json
new file mode 100644
index 00000000..a912e7b6
--- /dev/null
+++ b/tests/code-check-codeception-dist/.laminas-ci.json
@@ -0,0 +1,3 @@
+{
+ "stablePHP": "7.4"
+}
diff --git a/tests/code-check-codeception-dist/codeception.yml.dist b/tests/code-check-codeception-dist/codeception.yml.dist
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/code-check-codeception-dist/matrix.json b/tests/code-check-codeception-dist/matrix.json
new file mode 100644
index 00000000..04dceca3
--- /dev/null
+++ b/tests/code-check-codeception-dist/matrix.json
@@ -0,0 +1,10 @@
+{
+ "include": [
+ {
+ "name": "./vendor/bin/codecept run on PHP 7.4",
+ "job": "{\"command\":\"./vendor/bin/codecept run\",\"php\":\"7.4\",\"extensions\":[],\"ini\":[\"memory_limit = -1\"],\"dependencies\":\"locked\",\"ignore_platform_reqs_8\":false,\"ignore_php_platform_requirement\":false,\"additional_composer_arguments\":[]}",
+ "operatingSystem": "ubuntu-latest",
+ "action": "laminas/laminas-continuous-integration-action@v1"
+ }
+ ]
+}
diff --git a/tests/code-check-codeception-nodist/.laminas-ci.json b/tests/code-check-codeception-nodist/.laminas-ci.json
new file mode 100644
index 00000000..a912e7b6
--- /dev/null
+++ b/tests/code-check-codeception-nodist/.laminas-ci.json
@@ -0,0 +1,3 @@
+{
+ "stablePHP": "7.4"
+}
diff --git a/tests/code-check-codeception-nodist/codeception.yml b/tests/code-check-codeception-nodist/codeception.yml
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/code-check-codeception-nodist/matrix.json b/tests/code-check-codeception-nodist/matrix.json
new file mode 100644
index 00000000..04dceca3
--- /dev/null
+++ b/tests/code-check-codeception-nodist/matrix.json
@@ -0,0 +1,10 @@
+{
+ "include": [
+ {
+ "name": "./vendor/bin/codecept run on PHP 7.4",
+ "job": "{\"command\":\"./vendor/bin/codecept run\",\"php\":\"7.4\",\"extensions\":[],\"ini\":[\"memory_limit = -1\"],\"dependencies\":\"locked\",\"ignore_platform_reqs_8\":false,\"ignore_php_platform_requirement\":false,\"additional_composer_arguments\":[]}",
+ "operatingSystem": "ubuntu-latest",
+ "action": "laminas/laminas-continuous-integration-action@v1"
+ }
+ ]
+}
diff --git a/tests/code-check-composer-require-checker/.laminas-ci.json b/tests/code-check-composer-require-checker/.laminas-ci.json
new file mode 100644
index 00000000..a912e7b6
--- /dev/null
+++ b/tests/code-check-composer-require-checker/.laminas-ci.json
@@ -0,0 +1,3 @@
+{
+ "stablePHP": "7.4"
+}
diff --git a/tests/code-check-composer-require-checker/composer-require-checker.json b/tests/code-check-composer-require-checker/composer-require-checker.json
new file mode 100644
index 00000000..0967ef42
--- /dev/null
+++ b/tests/code-check-composer-require-checker/composer-require-checker.json
@@ -0,0 +1 @@
+{}
diff --git a/tests/code-check-composer-require-checker/matrix.json b/tests/code-check-composer-require-checker/matrix.json
new file mode 100644
index 00000000..261ec067
--- /dev/null
+++ b/tests/code-check-composer-require-checker/matrix.json
@@ -0,0 +1,10 @@
+{
+ "include": [
+ {
+ "name": "./vendor/bin/composer-require-checker check --config-file=composer-require-checker.json -n -v composer.json on PHP 7.4",
+ "job": "{\"command\":\"./vendor/bin/composer-require-checker check --config-file=composer-require-checker.json -n -v composer.json\",\"php\":\"7.4\",\"extensions\":[],\"ini\":[\"memory_limit = -1\"],\"dependencies\":\"locked\",\"ignore_platform_reqs_8\":false,\"ignore_php_platform_requirement\":false,\"additional_composer_arguments\":[]}",
+ "operatingSystem": "ubuntu-latest",
+ "action": "laminas/laminas-continuous-integration-action@v1"
+ }
+ ]
+}
diff --git a/tests/code-check-infection-dist/.laminas-ci.json b/tests/code-check-infection-dist/.laminas-ci.json
new file mode 100644
index 00000000..a912e7b6
--- /dev/null
+++ b/tests/code-check-infection-dist/.laminas-ci.json
@@ -0,0 +1,3 @@
+{
+ "stablePHP": "7.4"
+}
diff --git a/tests/code-check-infection-dist/composer.json b/tests/code-check-infection-dist/composer.json
new file mode 100644
index 00000000..0967ef42
--- /dev/null
+++ b/tests/code-check-infection-dist/composer.json
@@ -0,0 +1 @@
+{}
diff --git a/tests/code-check-infection-dist/infection.json.dist b/tests/code-check-infection-dist/infection.json.dist
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/code-check-infection-dist/matrix.json b/tests/code-check-infection-dist/matrix.json
new file mode 100644
index 00000000..f6d9d253
--- /dev/null
+++ b/tests/code-check-infection-dist/matrix.json
@@ -0,0 +1,10 @@
+{
+ "include": [
+ {
+ "name": "phpdbg -qrr ./vendor/bin/infection on PHP 7.4",
+ "job": "{\"command\":\"phpdbg -qrr ./vendor/bin/infection\",\"php\":\"7.4\",\"extensions\":[],\"ini\":[\"memory_limit = -1\"],\"dependencies\":\"locked\",\"ignore_platform_reqs_8\":false,\"ignore_php_platform_requirement\":false,\"additional_composer_arguments\":[]}",
+ "operatingSystem": "ubuntu-latest",
+ "action": "laminas/laminas-continuous-integration-action@v1"
+ }
+ ]
+}
diff --git a/tests/code-check-infection-nodist/.laminas-ci.json b/tests/code-check-infection-nodist/.laminas-ci.json
new file mode 100644
index 00000000..a912e7b6
--- /dev/null
+++ b/tests/code-check-infection-nodist/.laminas-ci.json
@@ -0,0 +1,3 @@
+{
+ "stablePHP": "7.4"
+}
diff --git a/tests/code-check-infection-nodist/composer.json b/tests/code-check-infection-nodist/composer.json
new file mode 100644
index 00000000..0967ef42
--- /dev/null
+++ b/tests/code-check-infection-nodist/composer.json
@@ -0,0 +1 @@
+{}
diff --git a/tests/code-check-infection-nodist/infection.json b/tests/code-check-infection-nodist/infection.json
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/code-check-infection-nodist/matrix.json b/tests/code-check-infection-nodist/matrix.json
new file mode 100644
index 00000000..f6d9d253
--- /dev/null
+++ b/tests/code-check-infection-nodist/matrix.json
@@ -0,0 +1,10 @@
+{
+ "include": [
+ {
+ "name": "phpdbg -qrr ./vendor/bin/infection on PHP 7.4",
+ "job": "{\"command\":\"phpdbg -qrr ./vendor/bin/infection\",\"php\":\"7.4\",\"extensions\":[],\"ini\":[\"memory_limit = -1\"],\"dependencies\":\"locked\",\"ignore_platform_reqs_8\":false,\"ignore_php_platform_requirement\":false,\"additional_composer_arguments\":[]}",
+ "operatingSystem": "ubuntu-latest",
+ "action": "laminas/laminas-continuous-integration-action@v1"
+ }
+ ]
+}
diff --git a/tests/code-check-infection-roave-static-analysis-plugin-dist/.laminas-ci.json b/tests/code-check-infection-roave-static-analysis-plugin-dist/.laminas-ci.json
new file mode 100644
index 00000000..a912e7b6
--- /dev/null
+++ b/tests/code-check-infection-roave-static-analysis-plugin-dist/.laminas-ci.json
@@ -0,0 +1,3 @@
+{
+ "stablePHP": "7.4"
+}
diff --git a/tests/code-check-infection-roave-static-analysis-plugin-dist/composer.json b/tests/code-check-infection-roave-static-analysis-plugin-dist/composer.json
new file mode 100644
index 00000000..bef44f26
--- /dev/null
+++ b/tests/code-check-infection-roave-static-analysis-plugin-dist/composer.json
@@ -0,0 +1,8 @@
+{
+ "require": {
+ "php": "~8.1.0"
+ },
+ "require-dev": {
+ "roave/infection-static-analysis-plugin": "*"
+ }
+}
diff --git a/tests/code-check-infection-roave-static-analysis-plugin-dist/infection.json.dist b/tests/code-check-infection-roave-static-analysis-plugin-dist/infection.json.dist
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/code-check-infection-roave-static-analysis-plugin-dist/matrix.json b/tests/code-check-infection-roave-static-analysis-plugin-dist/matrix.json
new file mode 100644
index 00000000..5b2e9d58
--- /dev/null
+++ b/tests/code-check-infection-roave-static-analysis-plugin-dist/matrix.json
@@ -0,0 +1,10 @@
+{
+ "include": [
+ {
+ "name": "phpdbg -qrr ./vendor/bin/roave-infection-static-analysis-plugin on PHP 8.1",
+ "job": "{\"command\":\"phpdbg -qrr ./vendor/bin/roave-infection-static-analysis-plugin\",\"php\":\"8.1\",\"extensions\":[],\"ini\":[\"memory_limit = -1\"],\"dependencies\":\"locked\",\"ignore_platform_reqs_8\":false,\"ignore_php_platform_requirement\":false,\"additional_composer_arguments\":[]}",
+ "operatingSystem": "ubuntu-latest",
+ "action": "laminas/laminas-continuous-integration-action@v1"
+ }
+ ]
+}
diff --git a/tests/code-check-infection-roave-static-analysis-plugin-nodist/.laminas-ci.json b/tests/code-check-infection-roave-static-analysis-plugin-nodist/.laminas-ci.json
new file mode 100644
index 00000000..a912e7b6
--- /dev/null
+++ b/tests/code-check-infection-roave-static-analysis-plugin-nodist/.laminas-ci.json
@@ -0,0 +1,3 @@
+{
+ "stablePHP": "7.4"
+}
diff --git a/tests/code-check-infection-roave-static-analysis-plugin-nodist/composer.json b/tests/code-check-infection-roave-static-analysis-plugin-nodist/composer.json
new file mode 100644
index 00000000..bef44f26
--- /dev/null
+++ b/tests/code-check-infection-roave-static-analysis-plugin-nodist/composer.json
@@ -0,0 +1,8 @@
+{
+ "require": {
+ "php": "~8.1.0"
+ },
+ "require-dev": {
+ "roave/infection-static-analysis-plugin": "*"
+ }
+}
diff --git a/tests/code-check-infection-roave-static-analysis-plugin-nodist/infection.json b/tests/code-check-infection-roave-static-analysis-plugin-nodist/infection.json
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/code-check-infection-roave-static-analysis-plugin-nodist/matrix.json b/tests/code-check-infection-roave-static-analysis-plugin-nodist/matrix.json
new file mode 100644
index 00000000..5b2e9d58
--- /dev/null
+++ b/tests/code-check-infection-roave-static-analysis-plugin-nodist/matrix.json
@@ -0,0 +1,10 @@
+{
+ "include": [
+ {
+ "name": "phpdbg -qrr ./vendor/bin/roave-infection-static-analysis-plugin on PHP 8.1",
+ "job": "{\"command\":\"phpdbg -qrr ./vendor/bin/roave-infection-static-analysis-plugin\",\"php\":\"8.1\",\"extensions\":[],\"ini\":[\"memory_limit = -1\"],\"dependencies\":\"locked\",\"ignore_platform_reqs_8\":false,\"ignore_php_platform_requirement\":false,\"additional_composer_arguments\":[]}",
+ "operatingSystem": "ubuntu-latest",
+ "action": "laminas/laminas-continuous-integration-action@v1"
+ }
+ ]
+}
diff --git a/tests/code-check-phpbench/.laminas-ci.json b/tests/code-check-phpbench/.laminas-ci.json
new file mode 100644
index 00000000..a912e7b6
--- /dev/null
+++ b/tests/code-check-phpbench/.laminas-ci.json
@@ -0,0 +1,3 @@
+{
+ "stablePHP": "7.4"
+}
diff --git a/tests/code-check-phpbench/matrix.json b/tests/code-check-phpbench/matrix.json
new file mode 100644
index 00000000..82d03561
--- /dev/null
+++ b/tests/code-check-phpbench/matrix.json
@@ -0,0 +1,10 @@
+{
+ "include": [
+ {
+ "name": "./vendor/bin/phpbench run --revs=2 --iterations=2 --report=aggregate on PHP 7.4",
+ "job": "{\"command\":\"./vendor/bin/phpbench run --revs=2 --iterations=2 --report=aggregate\",\"php\":\"7.4\",\"extensions\":[],\"ini\":[\"memory_limit = -1\"],\"dependencies\":\"locked\",\"ignore_platform_reqs_8\":false,\"ignore_php_platform_requirement\":false,\"additional_composer_arguments\":[]}",
+ "operatingSystem": "ubuntu-latest",
+ "action": "laminas/laminas-continuous-integration-action@v1"
+ }
+ ]
+}
diff --git a/tests/code-check-phpbench/phpbench.json b/tests/code-check-phpbench/phpbench.json
new file mode 100644
index 00000000..0967ef42
--- /dev/null
+++ b/tests/code-check-phpbench/phpbench.json
@@ -0,0 +1 @@
+{}
diff --git a/tests/code-check-phpcs-dist/.laminas-ci.json b/tests/code-check-phpcs-dist/.laminas-ci.json
new file mode 100644
index 00000000..a912e7b6
--- /dev/null
+++ b/tests/code-check-phpcs-dist/.laminas-ci.json
@@ -0,0 +1,3 @@
+{
+ "stablePHP": "7.4"
+}
diff --git a/tests/code-check-phpcs-dist/matrix.json b/tests/code-check-phpcs-dist/matrix.json
new file mode 100644
index 00000000..0f91ca7a
--- /dev/null
+++ b/tests/code-check-phpcs-dist/matrix.json
@@ -0,0 +1,10 @@
+{
+ "include": [
+ {
+ "name": "./vendor/bin/phpcs -q --report=checkstyle | cs2pr on PHP 7.4",
+ "job": "{\"command\":\"./vendor/bin/phpcs -q --report=checkstyle | cs2pr\",\"php\":\"7.4\",\"extensions\":[],\"ini\":[\"memory_limit = -1\"],\"dependencies\":\"locked\",\"ignore_platform_reqs_8\":false,\"ignore_php_platform_requirement\":false,\"additional_composer_arguments\":[]}",
+ "operatingSystem": "ubuntu-latest",
+ "action": "laminas/laminas-continuous-integration-action@v1"
+ }
+ ]
+}
diff --git a/tests/code-check-phpcs-dist/phpcs.xml.dist b/tests/code-check-phpcs-dist/phpcs.xml.dist
new file mode 100644
index 00000000..0e632ce3
--- /dev/null
+++ b/tests/code-check-phpcs-dist/phpcs.xml.dist
@@ -0,0 +1,2 @@
+
+
diff --git a/tests/code-check-phpcs-nodist/.laminas-ci.json b/tests/code-check-phpcs-nodist/.laminas-ci.json
new file mode 100644
index 00000000..a912e7b6
--- /dev/null
+++ b/tests/code-check-phpcs-nodist/.laminas-ci.json
@@ -0,0 +1,3 @@
+{
+ "stablePHP": "7.4"
+}
diff --git a/tests/code-check-phpcs-nodist/matrix.json b/tests/code-check-phpcs-nodist/matrix.json
new file mode 100644
index 00000000..0f91ca7a
--- /dev/null
+++ b/tests/code-check-phpcs-nodist/matrix.json
@@ -0,0 +1,10 @@
+{
+ "include": [
+ {
+ "name": "./vendor/bin/phpcs -q --report=checkstyle | cs2pr on PHP 7.4",
+ "job": "{\"command\":\"./vendor/bin/phpcs -q --report=checkstyle | cs2pr\",\"php\":\"7.4\",\"extensions\":[],\"ini\":[\"memory_limit = -1\"],\"dependencies\":\"locked\",\"ignore_platform_reqs_8\":false,\"ignore_php_platform_requirement\":false,\"additional_composer_arguments\":[]}",
+ "operatingSystem": "ubuntu-latest",
+ "action": "laminas/laminas-continuous-integration-action@v1"
+ }
+ ]
+}
diff --git a/tests/code-check-phpcs-nodist/phpcs.xml b/tests/code-check-phpcs-nodist/phpcs.xml
new file mode 100644
index 00000000..0e632ce3
--- /dev/null
+++ b/tests/code-check-phpcs-nodist/phpcs.xml
@@ -0,0 +1,2 @@
+
+
diff --git a/tests/code-check-phpunit-dist/.laminas-ci.json b/tests/code-check-phpunit-dist/.laminas-ci.json
new file mode 100644
index 00000000..a912e7b6
--- /dev/null
+++ b/tests/code-check-phpunit-dist/.laminas-ci.json
@@ -0,0 +1,3 @@
+{
+ "stablePHP": "7.4"
+}
diff --git a/tests/code-check-phpunit-dist/composer.json b/tests/code-check-phpunit-dist/composer.json
new file mode 100644
index 00000000..a026b4b0
--- /dev/null
+++ b/tests/code-check-phpunit-dist/composer.json
@@ -0,0 +1,5 @@
+{
+ "require": {
+ "php": "~8.1.0"
+ }
+}
diff --git a/tests/code-check-phpunit-dist/composer.lock b/tests/code-check-phpunit-dist/composer.lock
new file mode 100644
index 00000000..2c63c085
--- /dev/null
+++ b/tests/code-check-phpunit-dist/composer.lock
@@ -0,0 +1,2 @@
+{
+}
diff --git a/tests/code-check-phpunit-dist/matrix.json b/tests/code-check-phpunit-dist/matrix.json
new file mode 100644
index 00000000..80f89c89
--- /dev/null
+++ b/tests/code-check-phpunit-dist/matrix.json
@@ -0,0 +1,22 @@
+{
+ "include": [
+ {
+ "name": "PHPUnit on PHP 8.1 with locked dependencies",
+ "job": "{\"command\":\"./vendor/bin/phpunit\",\"php\":\"8.1\",\"extensions\":[],\"ini\":[\"memory_limit = -1\"],\"dependencies\":\"locked\",\"ignore_platform_reqs_8\":false,\"ignore_php_platform_requirement\":false,\"additional_composer_arguments\":[]}",
+ "operatingSystem": "ubuntu-latest",
+ "action": "laminas/laminas-continuous-integration-action@v1"
+ },
+ {
+ "name": "PHPUnit on PHP 8.1 with lowest dependencies",
+ "job": "{\"command\":\"./vendor/bin/phpunit\",\"php\":\"8.1\",\"extensions\":[],\"ini\":[\"memory_limit = -1\"],\"dependencies\":\"lowest\",\"ignore_platform_reqs_8\":false,\"ignore_php_platform_requirement\":false,\"additional_composer_arguments\":[]}",
+ "operatingSystem": "ubuntu-latest",
+ "action": "laminas/laminas-continuous-integration-action@v1"
+ },
+ {
+ "name": "PHPUnit on PHP 8.1 with latest dependencies",
+ "job": "{\"command\":\"./vendor/bin/phpunit\",\"php\":\"8.1\",\"extensions\":[],\"ini\":[\"memory_limit = -1\"],\"dependencies\":\"latest\",\"ignore_platform_reqs_8\":false,\"ignore_php_platform_requirement\":false,\"additional_composer_arguments\":[]}",
+ "operatingSystem": "ubuntu-latest",
+ "action": "laminas/laminas-continuous-integration-action@v1"
+ }
+ ]
+}
diff --git a/tests/code-check-phpunit-dist/phpunit.xml.dist b/tests/code-check-phpunit-dist/phpunit.xml.dist
new file mode 100644
index 00000000..0e632ce3
--- /dev/null
+++ b/tests/code-check-phpunit-dist/phpunit.xml.dist
@@ -0,0 +1,2 @@
+
+
diff --git a/tests/code-check-phpunit-nodist/.laminas-ci.json b/tests/code-check-phpunit-nodist/.laminas-ci.json
new file mode 100644
index 00000000..a912e7b6
--- /dev/null
+++ b/tests/code-check-phpunit-nodist/.laminas-ci.json
@@ -0,0 +1,3 @@
+{
+ "stablePHP": "7.4"
+}
diff --git a/tests/code-check-phpunit-nodist/composer.json b/tests/code-check-phpunit-nodist/composer.json
new file mode 100644
index 00000000..a026b4b0
--- /dev/null
+++ b/tests/code-check-phpunit-nodist/composer.json
@@ -0,0 +1,5 @@
+{
+ "require": {
+ "php": "~8.1.0"
+ }
+}
diff --git a/tests/code-check-phpunit-nodist/matrix.json b/tests/code-check-phpunit-nodist/matrix.json
new file mode 100644
index 00000000..4a5c4c6e
--- /dev/null
+++ b/tests/code-check-phpunit-nodist/matrix.json
@@ -0,0 +1,16 @@
+{
+ "include": [
+ {
+ "name": "PHPUnit on PHP 8.1 with lowest dependencies",
+ "job": "{\"command\":\"./vendor/bin/phpunit\",\"php\":\"8.1\",\"extensions\":[],\"ini\":[\"memory_limit = -1\"],\"dependencies\":\"lowest\",\"ignore_platform_reqs_8\":false,\"ignore_php_platform_requirement\":false,\"additional_composer_arguments\":[]}",
+ "operatingSystem": "ubuntu-latest",
+ "action": "laminas/laminas-continuous-integration-action@v1"
+ },
+ {
+ "name": "PHPUnit on PHP 8.1 with latest dependencies",
+ "job": "{\"command\":\"./vendor/bin/phpunit\",\"php\":\"8.1\",\"extensions\":[],\"ini\":[\"memory_limit = -1\"],\"dependencies\":\"latest\",\"ignore_platform_reqs_8\":false,\"ignore_php_platform_requirement\":false,\"additional_composer_arguments\":[]}",
+ "operatingSystem": "ubuntu-latest",
+ "action": "laminas/laminas-continuous-integration-action@v1"
+ }
+ ]
+}
diff --git a/tests/code-check-phpunit-nodist/phpunit.xml b/tests/code-check-phpunit-nodist/phpunit.xml
new file mode 100644
index 00000000..0e632ce3
--- /dev/null
+++ b/tests/code-check-phpunit-nodist/phpunit.xml
@@ -0,0 +1,2 @@
+
+
diff --git a/tests/code-check-psalm-dist/.laminas-ci.json b/tests/code-check-psalm-dist/.laminas-ci.json
new file mode 100644
index 00000000..a912e7b6
--- /dev/null
+++ b/tests/code-check-psalm-dist/.laminas-ci.json
@@ -0,0 +1,3 @@
+{
+ "stablePHP": "7.4"
+}
diff --git a/tests/code-check-psalm-dist/matrix.json b/tests/code-check-psalm-dist/matrix.json
new file mode 100644
index 00000000..ad0f2e96
--- /dev/null
+++ b/tests/code-check-psalm-dist/matrix.json
@@ -0,0 +1,10 @@
+{
+ "include": [
+ {
+ "name": "./vendor/bin/psalm --shepherd --stats --output-format=github --no-cache on PHP 7.4",
+ "job": "{\"command\":\"./vendor/bin/psalm --shepherd --stats --output-format=github --no-cache\",\"php\":\"7.4\",\"extensions\":[],\"ini\":[\"memory_limit = -1\"],\"dependencies\":\"locked\",\"ignore_platform_reqs_8\":false,\"ignore_php_platform_requirement\":false,\"additional_composer_arguments\":[]}",
+ "operatingSystem": "ubuntu-latest",
+ "action": "laminas/laminas-continuous-integration-action@v1"
+ }
+ ]
+}
diff --git a/tests/code-check-psalm-dist/psalm.xml.dist b/tests/code-check-psalm-dist/psalm.xml.dist
new file mode 100644
index 00000000..0e632ce3
--- /dev/null
+++ b/tests/code-check-psalm-dist/psalm.xml.dist
@@ -0,0 +1,2 @@
+
+
diff --git a/tests/code-check-psalm-nodist/.laminas-ci.json b/tests/code-check-psalm-nodist/.laminas-ci.json
new file mode 100644
index 00000000..a912e7b6
--- /dev/null
+++ b/tests/code-check-psalm-nodist/.laminas-ci.json
@@ -0,0 +1,3 @@
+{
+ "stablePHP": "7.4"
+}
diff --git a/tests/code-check-psalm-nodist/matrix.json b/tests/code-check-psalm-nodist/matrix.json
new file mode 100644
index 00000000..ad0f2e96
--- /dev/null
+++ b/tests/code-check-psalm-nodist/matrix.json
@@ -0,0 +1,10 @@
+{
+ "include": [
+ {
+ "name": "./vendor/bin/psalm --shepherd --stats --output-format=github --no-cache on PHP 7.4",
+ "job": "{\"command\":\"./vendor/bin/psalm --shepherd --stats --output-format=github --no-cache\",\"php\":\"7.4\",\"extensions\":[],\"ini\":[\"memory_limit = -1\"],\"dependencies\":\"locked\",\"ignore_platform_reqs_8\":false,\"ignore_php_platform_requirement\":false,\"additional_composer_arguments\":[]}",
+ "operatingSystem": "ubuntu-latest",
+ "action": "laminas/laminas-continuous-integration-action@v1"
+ }
+ ]
+}
diff --git a/tests/code-check-psalm-nodist/psalm.xml b/tests/code-check-psalm-nodist/psalm.xml
new file mode 100644
index 00000000..0e632ce3
--- /dev/null
+++ b/tests/code-check-psalm-nodist/psalm.xml
@@ -0,0 +1,2 @@
+
+
diff --git a/tests/configuration-additional-job-latest-php-version/.laminas-ci.json b/tests/configuration-additional-job-latest-php-version/.laminas-ci.json
new file mode 100644
index 00000000..7ee28897
--- /dev/null
+++ b/tests/configuration-additional-job-latest-php-version/.laminas-ci.json
@@ -0,0 +1,11 @@
+{
+ "additional_checks": [
+ {
+ "name": "Whatever Check",
+ "job": {
+ "php": "@latest",
+ "command": "test"
+ }
+ }
+ ]
+}
diff --git a/tests/configuration-additional-job-latest-php-version/composer.json b/tests/configuration-additional-job-latest-php-version/composer.json
new file mode 100644
index 00000000..902396cf
--- /dev/null
+++ b/tests/configuration-additional-job-latest-php-version/composer.json
@@ -0,0 +1,5 @@
+{
+ "require": {
+ "php": "<=8.1.0"
+ }
+}
diff --git a/tests/configuration-additional-job-latest-php-version/matrix.json b/tests/configuration-additional-job-latest-php-version/matrix.json
new file mode 100644
index 00000000..b015fdbc
--- /dev/null
+++ b/tests/configuration-additional-job-latest-php-version/matrix.json
@@ -0,0 +1,10 @@
+{
+ "include": [
+ {
+ "name": "Whatever Check on PHP 8.1 with locked dependencies",
+ "job": "{\"command\":\"test\",\"php\":\"8.1\",\"extensions\":[],\"ini\":[\"memory_limit = -1\"],\"dependencies\":\"locked\",\"ignore_platform_reqs_8\":false,\"ignore_php_platform_requirement\":false,\"additional_composer_arguments\":[]}",
+ "operatingSystem": "ubuntu-latest",
+ "action": "laminas/laminas-continuous-integration-action@v1"
+ }
+ ]
+}
diff --git a/tests/configuration-additional-job-lowest-php-version/.laminas-ci.json b/tests/configuration-additional-job-lowest-php-version/.laminas-ci.json
new file mode 100644
index 00000000..20928213
--- /dev/null
+++ b/tests/configuration-additional-job-lowest-php-version/.laminas-ci.json
@@ -0,0 +1,11 @@
+{
+ "additional_checks": [
+ {
+ "name": "Whatever Check",
+ "job": {
+ "php": "@lowest",
+ "command": "test"
+ }
+ }
+ ]
+}
diff --git a/tests/configuration-additional-job-lowest-php-version/composer.json b/tests/configuration-additional-job-lowest-php-version/composer.json
new file mode 100644
index 00000000..35397fba
--- /dev/null
+++ b/tests/configuration-additional-job-lowest-php-version/composer.json
@@ -0,0 +1,5 @@
+{
+ "require": {
+ "php": ">=5.6"
+ }
+}
diff --git a/tests/configuration-additional-job-lowest-php-version/matrix.json b/tests/configuration-additional-job-lowest-php-version/matrix.json
new file mode 100644
index 00000000..ec829e22
--- /dev/null
+++ b/tests/configuration-additional-job-lowest-php-version/matrix.json
@@ -0,0 +1,10 @@
+{
+ "include": [
+ {
+ "name": "Whatever Check on PHP 5.6 with locked dependencies",
+ "job": "{\"command\":\"test\",\"php\":\"5.6\",\"extensions\":[],\"ini\":[\"memory_limit = -1\"],\"dependencies\":\"locked\",\"ignore_platform_reqs_8\":false,\"ignore_php_platform_requirement\":false,\"additional_composer_arguments\":[]}",
+ "operatingSystem": "ubuntu-latest",
+ "action": "laminas/laminas-continuous-integration-action@v1"
+ }
+ ]
+}
diff --git a/tests/configuration-explicit-job-wildcard-dependency-set/.laminas-ci.json b/tests/configuration-explicit-job-wildcard-dependency-set/.laminas-ci.json
new file mode 100644
index 00000000..535c0e44
--- /dev/null
+++ b/tests/configuration-explicit-job-wildcard-dependency-set/.laminas-ci.json
@@ -0,0 +1,12 @@
+{
+ "checks": [
+ {
+ "name": "Whatever Check",
+ "job": {
+ "php": "8.1",
+ "dependencies": "*",
+ "command": "test"
+ }
+ }
+ ]
+}
diff --git a/tests/configuration-explicit-job-wildcard-dependency-set/composer.json b/tests/configuration-explicit-job-wildcard-dependency-set/composer.json
new file mode 100644
index 00000000..fb4d5cbe
--- /dev/null
+++ b/tests/configuration-explicit-job-wildcard-dependency-set/composer.json
@@ -0,0 +1,5 @@
+{
+ "require": {
+ "php": "~7.4.0 || ~8.0.0"
+ }
+}
diff --git a/tests/configuration-explicit-job-wildcard-dependency-set/matrix.json b/tests/configuration-explicit-job-wildcard-dependency-set/matrix.json
new file mode 100644
index 00000000..f831a419
--- /dev/null
+++ b/tests/configuration-explicit-job-wildcard-dependency-set/matrix.json
@@ -0,0 +1,16 @@
+{
+ "include": [
+ {
+ "name": "Whatever Check on PHP 8.1 with lowest dependencies",
+ "job": "\"{\\\"command\\\":\\\"test\\\",\\\"php\\\":\\\"8.1\\\",\\\"extensions\\\":[],\\\"ini\\\":[\\\"memory_limit = -1\\\"],\\\"dependencies\\\":\\\"lowest\\\",\\\"ignore_platform_reqs_8\\\":false,\\\"ignore_php_platform_requirement\\\":false,\\\"additional_composer_arguments\\\":[]}\"",
+ "operatingSystem": "ubuntu-latest",
+ "action": "laminas/laminas-continuous-integration-action@v1"
+ },
+ {
+ "name": "Whatever Check on PHP 8.1 with latest dependencies",
+ "job": "\"{\\\"command\\\":\\\"test\\\",\\\"php\\\":\\\"8.1\\\",\\\"extensions\\\":[],\\\"ini\\\":[\\\"memory_limit = -1\\\"],\\\"dependencies\\\":\\\"latest\\\",\\\"ignore_platform_reqs_8\\\":false,\\\"ignore_php_platform_requirement\\\":false,\\\"additional_composer_arguments\\\":[]}\"",
+ "operatingSystem": "ubuntu-latest",
+ "action": "laminas/laminas-continuous-integration-action@v1"
+ }
+ ]
+}
diff --git a/tests/configuration-explicit-job-wildcard-php/.laminas-ci.json b/tests/configuration-explicit-job-wildcard-php/.laminas-ci.json
new file mode 100644
index 00000000..bc384eb5
--- /dev/null
+++ b/tests/configuration-explicit-job-wildcard-php/.laminas-ci.json
@@ -0,0 +1,11 @@
+{
+ "checks": [
+ {
+ "name": "Whatever Check",
+ "job": {
+ "php": "*",
+ "command": "test"
+ }
+ }
+ ]
+}
diff --git a/tests/configuration-explicit-job-wildcard-php/composer.json b/tests/configuration-explicit-job-wildcard-php/composer.json
new file mode 100644
index 00000000..f3afd8a6
--- /dev/null
+++ b/tests/configuration-explicit-job-wildcard-php/composer.json
@@ -0,0 +1,5 @@
+{
+ "require": {
+ "php": "<=8.1.99"
+ }
+}
diff --git a/tests/configuration-explicit-job-wildcard-php/matrix.json b/tests/configuration-explicit-job-wildcard-php/matrix.json
new file mode 100644
index 00000000..abf278df
--- /dev/null
+++ b/tests/configuration-explicit-job-wildcard-php/matrix.json
@@ -0,0 +1,52 @@
+{
+ "include": [
+ {
+ "name": "Whatever Check on PHP 5.6 with locked dependencies",
+ "job": "\"{\\\"command\\\":\\\"test\\\",\\\"php\\\":\\\"5.6\\\",\\\"extensions\\\":[],\\\"ini\\\":[\\\"memory_limit = -1\\\"],\\\"dependencies\\\":\\\"locked\\\",\\\"ignore_platform_reqs_8\\\":false,\\\"ignore_php_platform_requirement\\\":false,\\\"additional_composer_arguments\\\":[]}\"",
+ "operatingSystem": "ubuntu-latest",
+ "action": "laminas/laminas-continuous-integration-action@v1"
+ },
+ {
+ "name": "Whatever Check on PHP 7.0 with locked dependencies",
+ "job": "\"{\\\"command\\\":\\\"test\\\",\\\"php\\\":\\\"7.0\\\",\\\"extensions\\\":[],\\\"ini\\\":[\\\"memory_limit = -1\\\"],\\\"dependencies\\\":\\\"locked\\\",\\\"ignore_platform_reqs_8\\\":false,\\\"ignore_php_platform_requirement\\\":false,\\\"additional_composer_arguments\\\":[]}\"",
+ "operatingSystem": "ubuntu-latest",
+ "action": "laminas/laminas-continuous-integration-action@v1"
+ },
+ {
+ "name": "Whatever Check on PHP 7.1 with locked dependencies",
+ "job": "\"{\\\"command\\\":\\\"test\\\",\\\"php\\\":\\\"7.1\\\",\\\"extensions\\\":[],\\\"ini\\\":[\\\"memory_limit = -1\\\"],\\\"dependencies\\\":\\\"locked\\\",\\\"ignore_platform_reqs_8\\\":false,\\\"ignore_php_platform_requirement\\\":false,\\\"additional_composer_arguments\\\":[]}\"",
+ "operatingSystem": "ubuntu-latest",
+ "action": "laminas/laminas-continuous-integration-action@v1"
+ },
+ {
+ "name": "Whatever Check on PHP 7.2 with locked dependencies",
+ "job": "\"{\\\"command\\\":\\\"test\\\",\\\"php\\\":\\\"7.2\\\",\\\"extensions\\\":[],\\\"ini\\\":[\\\"memory_limit = -1\\\"],\\\"dependencies\\\":\\\"locked\\\",\\\"ignore_platform_reqs_8\\\":false,\\\"ignore_php_platform_requirement\\\":false,\\\"additional_composer_arguments\\\":[]}\"",
+ "operatingSystem": "ubuntu-latest",
+ "action": "laminas/laminas-continuous-integration-action@v1"
+ },
+ {
+ "name": "Whatever Check on PHP 7.3 with locked dependencies",
+ "job": "\"{\\\"command\\\":\\\"test\\\",\\\"php\\\":\\\"7.3\\\",\\\"extensions\\\":[],\\\"ini\\\":[\\\"memory_limit = -1\\\"],\\\"dependencies\\\":\\\"locked\\\",\\\"ignore_platform_reqs_8\\\":false,\\\"ignore_php_platform_requirement\\\":false,\\\"additional_composer_arguments\\\":[]}\"",
+ "operatingSystem": "ubuntu-latest",
+ "action": "laminas/laminas-continuous-integration-action@v1"
+ },
+ {
+ "name": "Whatever Check on PHP 7.4 with locked dependencies",
+ "job": "\"{\\\"command\\\":\\\"test\\\",\\\"php\\\":\\\"7.4\\\",\\\"extensions\\\":[],\\\"ini\\\":[\\\"memory_limit = -1\\\"],\\\"dependencies\\\":\\\"locked\\\",\\\"ignore_platform_reqs_8\\\":false,\\\"ignore_php_platform_requirement\\\":false,\\\"additional_composer_arguments\\\":[]}\"",
+ "operatingSystem": "ubuntu-latest",
+ "action": "laminas/laminas-continuous-integration-action@v1"
+ },
+ {
+ "name": "Whatever Check on PHP 8.0 with locked dependencies",
+ "job": "\"{\\\"command\\\":\\\"test\\\",\\\"php\\\":\\\"8.0\\\",\\\"extensions\\\":[],\\\"ini\\\":[\\\"memory_limit = -1\\\"],\\\"dependencies\\\":\\\"locked\\\",\\\"ignore_platform_reqs_8\\\":true,\\\"ignore_php_platform_requirement\\\":true,\\\"additional_composer_arguments\\\":[]}\"",
+ "operatingSystem": "ubuntu-latest",
+ "action": "laminas/laminas-continuous-integration-action@v1"
+ },
+ {
+ "name": "Whatever Check on PHP 8.1 with locked dependencies",
+ "job": "\"{\\\"command\\\":\\\"test\\\",\\\"php\\\":\\\"8.1\\\",\\\"extensions\\\":[],\\\"ini\\\":[\\\"memory_limit = -1\\\"],\\\"dependencies\\\":\\\"locked\\\",\\\"ignore_platform_reqs_8\\\":false,\\\"ignore_php_platform_requirement\\\":false,\\\"additional_composer_arguments\\\":[]}\"",
+ "operatingSystem": "ubuntu-latest",
+ "action": "laminas/laminas-continuous-integration-action@v1"
+ }
+ ]
+}
diff --git a/tests/doc-linting-doc-book/.laminas-ci.json b/tests/doc-linting-doc-book/.laminas-ci.json
new file mode 100644
index 00000000..a912e7b6
--- /dev/null
+++ b/tests/doc-linting-doc-book/.laminas-ci.json
@@ -0,0 +1,3 @@
+{
+ "stablePHP": "7.4"
+}
diff --git a/tests/doc-linting-doc-book/doc/book/.gitkeep b/tests/doc-linting-doc-book/doc/book/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/doc-linting-doc-book/matrix.json b/tests/doc-linting-doc-book/matrix.json
new file mode 100644
index 00000000..dfffa174
--- /dev/null
+++ b/tests/doc-linting-doc-book/matrix.json
@@ -0,0 +1,10 @@
+{
+ "include": [
+ {
+ "name": "markdownlint doc/book/**/*.md on PHP 7.4",
+ "job": "{\"command\":\"markdownlint doc/book/**/*.md\",\"php\":\"7.4\",\"extensions\":[],\"ini\":[\"memory_limit = -1\"],\"dependencies\":\"locked\",\"ignore_platform_reqs_8\":false,\"ignore_php_platform_requirement\":false,\"additional_composer_arguments\":[]}",
+ "operatingSystem": "ubuntu-latest",
+ "action": "laminas/laminas-continuous-integration-action@v1"
+ }
+ ]
+}
diff --git a/tests/doc-linting-docs-book/.laminas-ci.json b/tests/doc-linting-docs-book/.laminas-ci.json
new file mode 100644
index 00000000..a912e7b6
--- /dev/null
+++ b/tests/doc-linting-docs-book/.laminas-ci.json
@@ -0,0 +1,3 @@
+{
+ "stablePHP": "7.4"
+}
diff --git a/tests/doc-linting-docs-book/docs/book/.gitkeep b/tests/doc-linting-docs-book/docs/book/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/doc-linting-docs-book/matrix.json b/tests/doc-linting-docs-book/matrix.json
new file mode 100644
index 00000000..771f6240
--- /dev/null
+++ b/tests/doc-linting-docs-book/matrix.json
@@ -0,0 +1,10 @@
+{
+ "include": [
+ {
+ "name": "markdownlint docs/book/**/*.md on PHP 7.4",
+ "job": "{\"command\":\"markdownlint docs/book/**/*.md\",\"php\":\"7.4\",\"extensions\":[],\"ini\":[\"memory_limit = -1\"],\"dependencies\":\"locked\",\"ignore_platform_reqs_8\":false,\"ignore_php_platform_requirement\":false,\"additional_composer_arguments\":[]}",
+ "operatingSystem": "ubuntu-latest",
+ "action": "laminas/laminas-continuous-integration-action@v1"
+ }
+ ]
+}
diff --git a/tests/doc-linting-mkdocs/.laminas-ci.json b/tests/doc-linting-mkdocs/.laminas-ci.json
new file mode 100644
index 00000000..a912e7b6
--- /dev/null
+++ b/tests/doc-linting-mkdocs/.laminas-ci.json
@@ -0,0 +1,3 @@
+{
+ "stablePHP": "7.4"
+}
diff --git a/tests/doc-linting-mkdocs/matrix.json b/tests/doc-linting-mkdocs/matrix.json
new file mode 100644
index 00000000..30f2518b
--- /dev/null
+++ b/tests/doc-linting-mkdocs/matrix.json
@@ -0,0 +1,10 @@
+{
+ "include": [
+ {
+ "name": "yamllint -d relaxed --no-warnings mkdocs.yml on PHP 7.4",
+ "job": "{\"command\":\"yamllint -d relaxed --no-warnings mkdocs.yml\",\"php\":\"7.4\",\"extensions\":[],\"ini\":[\"memory_limit = -1\"],\"dependencies\":\"locked\",\"ignore_platform_reqs_8\":false,\"ignore_php_platform_requirement\":false,\"additional_composer_arguments\":[]}",
+ "operatingSystem": "ubuntu-latest",
+ "action": "laminas/laminas-continuous-integration-action@v1"
+ }
+ ]
+}
diff --git a/tests/doc-linting-mkdocs/mkdocs.yml b/tests/doc-linting-mkdocs/mkdocs.yml
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/extensions-from-composer-json/.laminas-ci.json b/tests/extensions-from-composer-json/.laminas-ci.json
new file mode 100644
index 00000000..c3ad139b
--- /dev/null
+++ b/tests/extensions-from-composer-json/.laminas-ci.json
@@ -0,0 +1,11 @@
+{
+ "checks": [
+ {
+ "name": "Some Job",
+ "job": {
+ "php": "7.4",
+ "command": "test"
+ }
+ }
+ ]
+}
diff --git a/tests/extensions-from-composer-json/composer.json b/tests/extensions-from-composer-json/composer.json
new file mode 100644
index 00000000..a27e211d
--- /dev/null
+++ b/tests/extensions-from-composer-json/composer.json
@@ -0,0 +1,9 @@
+{
+ "require": {
+ "php": "~8.1.0",
+ "ext-mbstring": "*"
+ },
+ "require-dev": {
+ "ext-json": "*"
+ }
+}
diff --git a/tests/extensions-from-composer-json/matrix.json b/tests/extensions-from-composer-json/matrix.json
new file mode 100644
index 00000000..b4af9cdc
--- /dev/null
+++ b/tests/extensions-from-composer-json/matrix.json
@@ -0,0 +1,10 @@
+{
+ "include": [
+ {
+ "name": "Some Job on PHP 7.4 with locked dependencies",
+ "job": "\"{\\\"command\\\":\\\"test\\\",\\\"php\\\":\\\"7.4\\\",\\\"extensions\\\":[\\\"mbstring\\\",\\\"json\\\"],\\\"ini\\\":[\\\"memory_limit = -1\\\"],\\\"dependencies\\\":\\\"locked\\\",\\\"ignore_platform_reqs_8\\\":false,\\\"ignore_php_platform_requirement\\\":false,\\\"additional_composer_arguments\\\":[]}\"",
+ "operatingSystem": "ubuntu-latest",
+ "action": "laminas/laminas-continuous-integration-action@v1"
+ }
+ ]
+}
diff --git a/tests/no-checks/.laminas-ci.json b/tests/no-checks/.laminas-ci.json
new file mode 100644
index 00000000..a912e7b6
--- /dev/null
+++ b/tests/no-checks/.laminas-ci.json
@@ -0,0 +1,3 @@
+{
+ "stablePHP": "7.4"
+}
diff --git a/tests/no-checks/matrix.json b/tests/no-checks/matrix.json
new file mode 100644
index 00000000..f5fa0997
--- /dev/null
+++ b/tests/no-checks/matrix.json
@@ -0,0 +1,10 @@
+{
+ "include": [
+ {
+ "name": "No checks",
+ "job": "{\"command\":\"\",\"php\":\"7.4\",\"extensions\":[],\"ini\":[],\"dependencies\":\"locked\",\"ignore_platform_reqs_8\":false,\"ignore_php_platform_requirement\":false,\"additional_composer_arguments\":[]}",
+ "operatingSystem": "ubuntu-latest",
+ "action": "laminas/laminas-continuous-integration-action@v1"
+ }
+ ]
+}
diff --git a/tests/php-ini-from-configuration/.laminas-ci.json b/tests/php-ini-from-configuration/.laminas-ci.json
new file mode 100644
index 00000000..9259c134
--- /dev/null
+++ b/tests/php-ini-from-configuration/.laminas-ci.json
@@ -0,0 +1,15 @@
+
+{
+ "ini": [
+ "error_reporting=E_ALL"
+ ],
+ "checks": [
+ {
+ "name": "Some Job",
+ "job": {
+ "php": "7.4",
+ "command": "test"
+ }
+ }
+ ]
+}
diff --git a/tests/php-ini-from-configuration/composer.json b/tests/php-ini-from-configuration/composer.json
new file mode 100644
index 00000000..a27e211d
--- /dev/null
+++ b/tests/php-ini-from-configuration/composer.json
@@ -0,0 +1,9 @@
+{
+ "require": {
+ "php": "~8.1.0",
+ "ext-mbstring": "*"
+ },
+ "require-dev": {
+ "ext-json": "*"
+ }
+}
diff --git a/tests/php-ini-from-configuration/matrix.json b/tests/php-ini-from-configuration/matrix.json
new file mode 100644
index 00000000..4030cb59
--- /dev/null
+++ b/tests/php-ini-from-configuration/matrix.json
@@ -0,0 +1,10 @@
+{
+ "include": [
+ {
+ "name": "Some Job on PHP 7.4 with locked dependencies",
+ "job": "\"{\\\"command\\\":\\\"test\\\",\\\"php\\\":\\\"7.4\\\",\\\"extensions\\\":[\\\"mbstring\\\",\\\"json\\\"],\\\"ini\\\":[\\\"memory_limit = -1\\\",\\\"error_reporting=E_ALL\\\"],\\\"dependencies\\\":\\\"locked\\\",\\\"ignore_platform_reqs_8\\\":false,\\\"ignore_php_platform_requirement\\\":false,\\\"additional_composer_arguments\\\":[]}\"",
+ "operatingSystem": "ubuntu-latest",
+ "action": "laminas/laminas-continuous-integration-action@v1"
+ }
+ ]
+}