#!/bin/sh

set -eu

run_suite() {
    suite="$1"
    config="$2"
    infection_config="$3"

    mkdir -p "results/$suite"

    start="$(date +%s%3N)"
    php -d memory_limit=512M vendor/bin/phpunit \
        --configuration "$config" \
        --coverage-text="results/$suite/coverage.txt" \
        --path-coverage \
        >"results/$suite/phpunit.log" 2>&1
    status="$?"
    end="$(date +%s%3N)"

    printf 'command=%s\ncommand_exit_code=%s\nduration_milliseconds=%s\n' \
        "php -d memory_limit=512M vendor/bin/phpunit --configuration $config --coverage-text --path-coverage" \
        "$status" "$((end - start))" \
        >"results/$suite/phpunit-run.txt"

    rm -f results/infection.log results/infection-summary.log
    start="$(date +%s%3N)"
    set +e
    php -d memory_limit=512M vendor/bin/infection \
        --configuration="$infection_config" \
        --logger-text="results/$suite/infection.log" \
        --log-verbosity=all \
        --min-covered-msi=100 \
        --min-msi=100 \
        --threads=1 \
        --no-progress \
        >"results/$suite/infection-console.log" 2>&1
    status="$?"
    set -e
    end="$(date +%s%3N)"

    printf 'command=%s\ncommand_exit_code=%s\nduration_milliseconds=%s\n' \
        "php -d memory_limit=512M vendor/bin/infection --configuration=$infection_config --threads=1 --min-msi=100 --min-covered-msi=100" \
        "$status" "$((end - start))" \
        >"results/$suite/infection-run.txt"
}

rm -rf results/a results/b
rm -f results/comparison.txt \
    results/composer-version.txt \
    results/composer-audit.txt \
    results/infection-version.txt \
    results/php-version.txt \
    results/phpunit-version.txt \
    results/xdebug-version.txt
mkdir -p results/a results/b

php --version >results/php-version.txt
php -r 'echo phpversion("xdebug"), PHP_EOL;' >results/xdebug-version.txt
composer --version >results/composer-version.txt 2>&1
composer audit --locked --no-ansi >results/composer-audit.txt 2>&1
php -d memory_limit=512M vendor/bin/phpunit --version \
    | sed '/^$/d' >results/phpunit-version.txt
php -d memory_limit=512M vendor/bin/infection --version \
    >results/infection-version.txt

run_suite a suites/a/phpunit.xml infection-a.json5
run_suite b suites/b/phpunit.xml infection-b.json5

for log in results/a/*.log results/b/*.log; do
    sed -i 's/[[:space:]]*$//' "$log"
    sed -i '${/^$/d;}' "$log"
done

php compare.php >results/comparison.txt
cat results/comparison.txt

rm -rf results/a/tmp results/b/tmp
