Improved run-api-tests.sh script to make it compatible with sh

This commit is contained in:
Alejandro Celaya 2022-08-27 09:36:37 +02:00
parent df70810aa6
commit bfbeb7b1fb
5 changed files with 25 additions and 22 deletions

View file

@ -28,7 +28,6 @@ jobs:
php-extensions: openswoole-4.11.1
extensions-cache-key: tests-extensions-${{ matrix.php-version }}-${{ inputs.test-group }}
- run: composer test:${{ inputs.test-group }}:ci
shell: bash
- uses: actions/upload-artifact@v3
if: ${{ matrix.php-version == '8.1' }}
with:

View file

@ -49,7 +49,6 @@ jobs:
- run: composer install --no-interaction --prefer-dist
- run: ./vendor/bin/rr get --location bin/ && chmod +x bin/rr
- run: composer test:api:rr
shell: bash
cli-tests:
uses: './.github/workflows/ci-tests.yml'

View file

@ -12,26 +12,35 @@ mkdir data/log/api-tests
touch $OUTPUT_LOGS
# Try to stop server just in case it hanged in last execution
[[ $TEST_RUNTIME == 'openswoole' ]] && vendor/bin/laminas mezzio:swoole:stop
[[ $TEST_RUNTIME == 'rr' ]] && bin/rr stop -f
if test "$TEST_RUNTIME" == 'openswoole'; then
vendor/bin/laminas mezzio:swoole:stop
elif test "$TEST_RUNTIME" == 'rr'; then
bin/rr stop -f
fi
echo 'Starting server...'
[[ $TEST_RUNTIME == 'openswoole' ]] && vendor/bin/laminas mezzio:swoole:start -d
[[ $TEST_RUNTIME == 'rr' ]] && bin/rr serve -p -c=config/roadrunner/.rr.dev.yml \
-o=http.address=0.0.0.0:9999 \
-o=logs.encoding=json \
-o=logs.channels.http.encoding=json \
-o=logs.channels.server.encoding=json \
-o=logs.output="${PWD}/${OUTPUT_LOGS}" \
-o=logs.channels.http.output="${PWD}/${OUTPUT_LOGS}" \
-o=logs.channels.server.output="${PWD}/${OUTPUT_LOGS}" &
if test "$TEST_RUNTIME" == 'openswoole'; then
vendor/bin/laminas mezzio:swoole:start -d
elif test "$TEST_RUNTIME" == 'rr'; then
bin/rr serve -p -c=config/roadrunner/.rr.dev.yml \
-o=http.address=0.0.0.0:9999 \
-o=logs.encoding=json \
-o=logs.channels.http.encoding=json \
-o=logs.channels.server.encoding=json \
-o=logs.output="${PWD}/${OUTPUT_LOGS}" \
-o=logs.channels.http.output="${PWD}/${OUTPUT_LOGS}" \
-o=logs.channels.server.output="${PWD}/${OUTPUT_LOGS}" &
fi
sleep 2 # Let's give the server a couple of seconds to start
vendor/bin/phpunit --order-by=random -c phpunit-api.xml --testdox --colors=always --log-junit=build/coverage-api/junit.xml $*
testsExitCode=$?
[[ $TEST_RUNTIME == 'openswoole' ]] && vendor/bin/laminas mezzio:swoole:stop
[[ $TEST_RUNTIME == 'rr' ]] && bin/rr stop -c config/roadrunner/.rr.dev.yml -o=http.address=0.0.0.0:9999
if test "$TEST_RUNTIME" == 'openswoole'; then
vendor/bin/laminas mezzio:swoole:stop
elif test "$TEST_RUNTIME" == 'rr'; then
bin/rr stop -c config/roadrunner/.rr.dev.yml -o=http.address=0.0.0.0:9999
fi
# Exit this script with the same code as the tests. If tests failed, this script has to fail
exit $testsExitCode

View file

@ -17,8 +17,9 @@ use function Shlinkio\Shlink\Config\swooleIsInstalled;
use const PHP_SAPI;
$enableSwoole = PHP_SAPI === 'cli' && swooleIsInstalled();
$isTestEnv = env('APP_ENV') === 'test';
$isRR = env('RR_MODE') !== null;
$enableSwoole = PHP_SAPI === 'cli' && ! $isRR && swooleIsInstalled();
return (new ConfigAggregator\ConfigAggregator([
! $isTestEnv

View file

@ -5,9 +5,4 @@ if ! [[ $(docker ps | grep shlink) ]]; then
docker-compose up -d
fi
if [[ "$*" == *"test:api:rr"* ]]; then
# API tests should be run inside the RoadRunner container when the test runtime is RoadRunner
docker exec -it shlink_roadrunner /bin/sh -c "$*"
else
docker exec -it shlink_swoole /bin/sh -c "$*"
fi
docker exec -it shlink_swoole /bin/sh -c "$*"