| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 | <?php/** * This file allows for tests to be skipped. * For now conditions are simple. * We check if changes in the source with respect to the configured branch are limited to framework files, * if that is the case and the current framework isn't one with changed files then we skip it. */$branch ="2.5";function stderr($message){    fwrite(STDERR, $message . "\n");}$currentFramework = getenv('FRAMEWORK');if ($currentFramework === 'Codeception') {    stderr('Codeception tests are always executed');    die();}$files = [];// Workaround for travis #4806passthru("git fetch origin $branch:$branch --depth 1", $return);if ($return !== 0) {    stderr("Git fetch failed");    die($return);}exec("git diff --name-only $branch --", $files, $return);if ($return !== 0) {    stderr("Git diff failed");    die($return);}// Regexes for frameworks:$regexes = [    'Yii2' => '/.*Yii2.*/',    'Lumen' => '/.*(Lumen|LaravelCommon).*/',    'Laravel' => '/.*Laravel.*/',    'Phalcon' => '/.*Phalcon.*/',    'Symfony' => '/.*Symfony.*/',    'Yii1' => '/.*Yii1.*/',    'ZendExpressive' => '/.*ZendExpressive.*/',    'Zend1' => '/.*ZF1.*/',    'Zend2' => '/.*ZF2.*/',];// First check if changes include files that are not framework files.$frameworkOnly = true;$frameworks = [];foreach ($files as $file) {    $match = false;    foreach ($regexes as $framework => $regex) {        if (preg_match($regex, $file)) {            $match = true;            $frameworks[$framework] = $framework;            break;        }    }    if (!$match) {        $frameworkOnly = false;        break;    }}if ($frameworkOnly) {    stderr('Changes limited to frameworks: ' . implode(', ', $frameworks));    if (!isset($frameworks[$currentFramework])) {        stderr("Skipping test for framework: $currentFramework");        echo "export FRAMEWORK=\n";        echo "export PECL=\n";        echo "export FXP=\n";        echo "export CI_USER_TOKEN=\n";    }}
 |