Skip to content

Commit f7ffffe

Browse files
simPodspawniaCopilot
authored
ci: test with lowest and highest dependencies (#133)
* ci: test with lowest and highest dependencies * refactor: deduplicate example validation scripts * require composer version that has reinstall * fix install test.sh * Update .github/workflows/validate.yml Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * #133 (comment) * improve matrix coverage --------- Co-authored-by: spawnia <benedikt@franke.tech> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
1 parent 4dfd204 commit f7ffffe

19 files changed

Lines changed: 148 additions & 77 deletions

File tree

.github/workflows/validate.yml

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,21 @@ jobs:
124124
- php-keywords
125125
- simple
126126
- polymorphic
127+
- inline-fragments
128+
php-version:
129+
- 8.4
130+
dependencies:
131+
- highest
132+
include:
133+
- example: simple
134+
php-version: 7.4
135+
dependencies: lowest
136+
- example: simple
137+
php-version: 8.1
138+
dependencies: lowest
139+
- example: simple
140+
php-version: 8.2
141+
dependencies: lowest
127142

128143
steps:
129144
- uses: actions/checkout@v4
@@ -132,11 +147,11 @@ jobs:
132147
with:
133148
coverage: none
134149
extensions: mbstring
135-
php-version: 8.3
150+
php-version: ${{ matrix.php-version }}
136151
env:
137152
COMPOSER_TOKEN: ${{ secrets.GITHUB_TOKEN }}
138153

139-
- run: cd examples/${{ matrix.example }} && ./test.sh
154+
- run: examples/validate.sh "${{ matrix.example }}" --dependencies="${{ matrix.dependencies }}"
140155

141156
code-coverage:
142157
runs-on: ubuntu-latest

Makefile

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
.PHONY: it
2-
it: fix stan approve test test-examples ## Run the commonly used targets
2+
it: fix stan approve test validate-examples ## Run the commonly used targets
33

44
.PHONY: help
55
help: ## Displays this list of targets with descriptions
@@ -29,15 +29,15 @@ coverage: ## Collects coverage from running unit tests with phpunit
2929
approve: ## Generate code and approve it as expected
3030
tests/generate-and-approve-examples.php
3131

32-
.PHONY: test-examples
33-
test-examples: ## Test examples
34-
cd examples/custom-types && ./test.sh
35-
cd examples/inline-fragments && ./test.sh
36-
cd examples/input && ./test.sh
37-
cd examples/install && ./test.sh
38-
cd examples/php-keywords && ./test.sh
39-
cd examples/polymorphic && ./test.sh
40-
cd examples/simple && ./test.sh
32+
.PHONY: validate-examples
33+
validate-examples: ## Run integration tests on examples
34+
examples/validate.sh custom-types --dependencies=highest
35+
examples/validate.sh inline-fragments --dependencies=highest
36+
examples/validate.sh input --dependencies=highest
37+
examples/validate.sh install --dependencies=highest
38+
examples/validate.sh php-keywords --dependencies=highest
39+
examples/validate.sh polymorphic --dependencies=highest
40+
examples/validate.sh simple --dependencies=highest
4141

4242
vendor: composer.json composer.lock
4343
composer install

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
},
2727
"require-dev": {
2828
"bensampo/laravel-enum": "^3 || ^4.1 || ^5 || ^6",
29-
"composer/composer": "^2",
29+
"composer/composer": "^2.1",
3030
"ergebnis/composer-normalize": "^2.13",
3131
"friendsofphp/php-cs-fixer": "~3.63.0",
3232
"guzzlehttp/guzzle": "^7",
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
use Spawnia\Sailor\CustomTypes\Types\CustomEnum;
66
use Spawnia\Sailor\CustomTypesSrc\CustomObject;
77

8-
require __DIR__ . '/../vendor/autoload.php';
8+
require __DIR__ . '/vendor/autoload.php';
99

1010
$myCustomEnumQueryResult = MyCustomEnumQuery::execute(
1111
new CustomEnum(CustomEnum::A)

examples/custom-types/test.sh

Lines changed: 0 additions & 8 deletions
This file was deleted.
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
use Spawnia\Sailor\InlineFragments\Operations\SearchQuery;
44

5-
require __DIR__ . '/../vendor/autoload.php';
5+
require __DIR__ . '/vendor/autoload.php';
66

77
$result = SearchQuery::execute('test query')->errorFree();
88

examples/inline-fragments/test.sh

Lines changed: 0 additions & 8 deletions
This file was deleted.
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?php declare(strict_types=1);
22

3-
require __DIR__ . '/../vendor/autoload.php';
3+
require __DIR__ . '/vendor/autoload.php';
44

55
$result = Spawnia\Sailor\Input\Operations\TakeSomeInput::execute();
66

examples/input/test.sh

Lines changed: 0 additions & 8 deletions
This file was deleted.

examples/install/test.sh

Lines changed: 36 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,44 @@
11
#!/usr/bin/env bash
2-
set -euxo pipefail
2+
set -euo pipefail
33

4-
composer update
5-
composer reinstall spawnia/sailor
4+
if [[ $# -ne 0 ]]; then
5+
echo "Usage: examples/install/test.sh" >&2
6+
exit 1
7+
fi
8+
9+
echo "Clean up previous runs"
10+
rm -rf src sailor.php
11+
12+
if first_output="$(vendor/bin/sailor 2>&1)"; then
13+
echo "Expected the initial run of vendor/bin/sailor to exit with an error" >&2
14+
exit 1
15+
fi
16+
17+
if [[ "$first_output" != *"configuration file sailor.php does not exist"* ]]; then
18+
echo "Expected first run to fail because sailor.php is missing" >&2
19+
exit 1
20+
fi
21+
22+
if [[ ! -f "sailor.php" ]]; then
23+
echo "Expected sailor.php to be present after first executing vendor/bin/sailor" >&2
24+
exit 1
25+
fi
626

7-
echo Clean up previous runs
8-
rm -f sailor.php
27+
if second_output="$(vendor/bin/sailor 2>&1)"; then
28+
echo "Expected second run of vendor/bin/sailor to fail in an empty project" >&2
29+
exit 1
30+
fi
931

10-
if vendor/bin/sailor; then
11-
echo Expected the initial run of vendor/bin/sailor to exit with an error
12-
exit 1;
32+
if [[ "$second_output" != *"Directory does not exist"* ]]; then
33+
echo "Expected second run to fail because src directory is missing" >&2
34+
echo "$second_output" >&2
35+
exit 1
1336
fi
1437

15-
if ! test -f sailor.php; then
16-
echo Expected sailor.php to be present after first executing vendor/bin/sailor
38+
mkdir src
39+
40+
if ! third_output="$(vendor/bin/sailor 2>&1)"; then
41+
echo "Expected third run of vendor/bin/sailor to succeed, but it failed with:" >&2
42+
echo "$third_output" >&2
1743
exit 1
1844
fi

0 commit comments

Comments
 (0)