mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-04-22 08:44:01 +00:00
I am eating my own words this once, because having the tester plugin as a separate repository makes no sense - it is just added barriers to writing proper tests with no actual benefit. Since the tester plugin is specifically intended for CI, it doesn't make sense for it to be in its own module.
70 lines
1.9 KiB
Bash
Executable File
70 lines
1.9 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
PHP_BINARY="php"
|
|
PM_WORKERS="auto"
|
|
|
|
while getopts "p:t:" OPTION 2> /dev/null; do
|
|
case ${OPTION} in
|
|
p)
|
|
PHP_BINARY="$OPTARG"
|
|
;;
|
|
t)
|
|
PM_WORKERS="$OPTARG"
|
|
;;
|
|
esac
|
|
done
|
|
|
|
./tests/lint.sh -p "$PHP_BINARY" -d ./src/pocketmine
|
|
|
|
if [ $? -ne 0 ]; then
|
|
echo Lint scan failed!
|
|
exit 1
|
|
fi
|
|
|
|
#Run PHPUnit tests
|
|
curl https://phar.phpunit.de/phpunit-7.phar --silent --location -o phpunit.phar
|
|
"$PHP_BINARY" phpunit.phar --bootstrap vendor/autoload.php tests/phpunit || exit 1
|
|
|
|
#Run-the-server tests
|
|
DATA_DIR="test_data"
|
|
PLUGINS_DIR="$DATA_DIR/plugins"
|
|
|
|
rm -rf "$DATA_DIR"
|
|
rm PocketMine-MP.phar 2> /dev/null
|
|
|
|
cd tests/plugins/PocketMine-DevTools
|
|
"$PHP_BINARY" -dphar.readonly=0 ./src/DevTools/ConsoleScript.php --make ./ --relative ./ --out ../../../DevTools.phar
|
|
cd ../../..
|
|
|
|
"$PHP_BINARY" -dphar.readonly=0 DevTools.phar --make src,vendor --relative ./ --entry src/pocketmine/PocketMine.php --out PocketMine-MP.phar
|
|
if [ -f PocketMine-MP.phar ]; then
|
|
echo Server phar created successfully.
|
|
else
|
|
echo Server phar was not created!
|
|
exit 1
|
|
fi
|
|
|
|
mkdir "$DATA_DIR"
|
|
mkdir "$PLUGINS_DIR"
|
|
mv DevTools.phar "$PLUGINS_DIR"
|
|
cp -r tests/plugins/TesterPlugin "$PLUGINS_DIR"
|
|
echo -e "stop\n" | "$PHP_BINARY" PocketMine-MP.phar --no-wizard --disable-ansi --disable-readline --debug.level=2 --data="$DATA_DIR" --plugins="$PLUGINS_DIR" --anonymous-statistics.enabled=0 --settings.async-workers="$PM_WORKERS" --settings.enable-dev-builds=1
|
|
|
|
output=$(grep '\[TesterPlugin\]' "$DATA_DIR/server.log")
|
|
if [ "$output" == "" ]; then
|
|
echo TesterPlugin failed to run tests, check the logs
|
|
exit 1
|
|
fi
|
|
|
|
result=$(echo "$output" | grep 'Finished' | grep -v 'PASS')
|
|
if [ "$result" != "" ]; then
|
|
echo "$result"
|
|
echo Some tests did not complete successfully, changing build status to failed
|
|
exit 1
|
|
elif [ $(grep -c "ERROR\|CRITICAL\|EMERGENCY" "$DATA_DIR/server.log") -ne 0 ]; then
|
|
echo Server log contains error messages, changing build status to failed
|
|
exit 1
|
|
else
|
|
echo All tests passed
|
|
fi
|