#!/usr/bin/env php
<?php
/**
 * Copyright © OXID eSales AG. All rights reserved.
 * See LICENSE file for license details.
 */

use OxidEsales\TestingLibrary\Helper\TestResultsPrintingHelper;
use OxidEsales\TestingLibrary\TestConfig;

require_once __DIR__ .'/../base.php';

$testConfig = new TestConfig();
$resultsHelper = new TestResultsPrintingHelper();

$arguments = [];
array_shift($argv);
foreach ($argv as $argument) {
    $arguments[] = (strpos($argument, '-') === 0) ? $argument : escapeshellarg($argument);
}
$arguments = implode(' ', $arguments);

$php = getenv('PHPBIN') ? getenv('PHPBIN') : 'php';

$returnCode = 0;
foreach ($testConfig->getTestSuites() as $suite) {
    if (!file_exists($configurationFile = "$suite/codeception.yml")) {
        continue;
    }
    $configuration = "-c " . escapeshellarg($configurationFile);
    $codecept = $testConfig->getVendorDirectory() . '/bin/codecept';
    passthru(
            "$php $codecept build $configuration",
            $ccReturnCode
    );
    $reportFileName = $resultsHelper->getReportFileName();
    passthru(
            "TEST_SUITE=$suite $php $codecept $configuration run acceptance --xml $reportFileName --no-colors $arguments",
            $ccReturnCode
    );
    $returnCode = $returnCode == 0 ? $ccReturnCode : $returnCode;
}

exit($returnCode);
