#!/usr/bin/env bash

set -e

endroid_test_dir=$( dirname $( dirname $(readlink -f $0)))


# Behat (when available)

printf "\nRunning Behat (when available) ...\n\n"

EXECUTABLE_PATH=vendor/bin/behat

if [ -f $EXECUTABLE_PATH ]; then
    $EXECUTABLE_PATH --stop-on-failure
fi


# PHPUnit

printf "\nRunning PHPUnit ...\n\n"

EXECUTABLE_PATH=$endroid_test_dir/phpunit-latest

if [ ! -f $EXECUTABLE_PATH ]; then
    curl -L https://phar.phpunit.de/phpunit.phar -o $EXECUTABLE_PATH
    chmod +x $EXECUTABLE_PATH
fi

$EXECUTABLE_PATH tests --bootstrap vendor/autoload.php --colors=always --do-not-cache-result


# PHPStan

printf "\nRunning PHPStan ...\n\n"

EXECUTABLE_PATH=$endroid_test_dir/phpstan-latest

if [ ! -f $EXECUTABLE_PATH ]; then
    curl -L https://github.com/phpstan/phpstan-shim/raw/master/phpstan.phar -o $EXECUTABLE_PATH
    chmod +x $EXECUTABLE_PATH
fi

$EXECUTABLE_PATH analyse src --configuration=$endroid_test_dir/phpstan.neon --level=max


# PHP CS Fixer

printf "\nRunning CS Fixer ...\n\n"

EXECUTABLE_PATH=$endroid_test_dir/php-cs-fixer-latest

if [ ! -f $EXECUTABLE_PATH ]; then
    curl -L https://cs.symfony.com/download/php-cs-fixer-v2.phar -o $EXECUTABLE_PATH
    chmod +x $EXECUTABLE_PATH
fi

$EXECUTABLE_PATH fix src --config=$endroid_test_dir/.php_cs --using-cache=no
