1<?php
2use SebastianBergmann\CodeCoverage\CodeCoverage;
3
4if (!defined('STDOUT')) {
5    // php://stdout does not obey output buffering. Any output would break
6    // unserialization of child process results in the parent process.
7    define('STDOUT', fopen('php://temp', 'w+b'));
8    define('STDERR', fopen('php://stderr', 'wb'));
9}
10
11{iniSettings}
12ini_set('display_errors', 'stderr');
13set_include_path('{include_path}');
14
15$composerAutoload = {composerAutoload};
16$phar             = {phar};
17
18ob_start();
19
20if ($composerAutoload) {
21    require_once $composerAutoload;
22    define('PHPUNIT_COMPOSER_INSTALL', $composerAutoload);
23} else if ($phar) {
24    require $phar;
25}
26
27function __phpunit_run_isolated_test()
28{
29    if (!class_exists('{className}')) {
30        require_once '{filename}';
31    }
32
33    $result = new PHPUnit_Framework_TestResult;
34
35    if ({collectCodeCoverageInformation}) {
36        $result->setCodeCoverage(
37            new CodeCoverage(
38                null,
39                unserialize('{codeCoverageFilter}')
40            )
41        );
42    }
43
44    $result->beStrictAboutTestsThatDoNotTestAnything({isStrictAboutTestsThatDoNotTestAnything});
45    $result->beStrictAboutOutputDuringTests({isStrictAboutOutputDuringTests});
46    $result->enforceTimeLimit({enforcesTimeLimit});
47    $result->beStrictAboutTodoAnnotatedTests({isStrictAboutTodoAnnotatedTests});
48    $result->beStrictAboutResourceUsageDuringSmallTests({isStrictAboutResourceUsageDuringSmallTests});
49
50    $test = new {className}('{methodName}', unserialize('{data}'), '{dataName}');
51    $test->setDependencyInput(unserialize('{dependencyInput}'));
52    $test->setInIsolation(TRUE);
53
54    ob_end_clean();
55    $test->run($result);
56    $output = '';
57    if (!$test->hasExpectationOnOutput()) {
58        $output = $test->getActualOutput();
59    }
60
61    @rewind(STDOUT); /* @ as not every STDOUT target stream is rewindable */
62    if ($stdout = stream_get_contents(STDOUT)) {
63        $output = $stdout . $output;
64    }
65
66    print serialize(
67      array(
68        'testResult'    => $test->getResult(),
69        'numAssertions' => $test->getNumAssertions(),
70        'result'        => $result,
71        'output'        => $output
72      )
73    );
74}
75
76$configurationFilePath = '{configurationFilePath}';
77
78if ('' !== $configurationFilePath) {
79    $configuration = PHPUnit_Util_Configuration::getInstance($configurationFilePath);
80    $configuration->handlePHPConfiguration();
81    unset($configuration);
82}
83
84function __phpunit_error_handler($errno, $errstr, $errfile, $errline, $errcontext)
85{
86   return true;
87}
88
89set_error_handler("__phpunit_error_handler");
90
91{constants}
92{included_files}
93{globals}
94
95restore_error_handler();
96
97if (isset($GLOBALS['__PHPUNIT_BOOTSTRAP'])) {
98    require_once $GLOBALS['__PHPUNIT_BOOTSTRAP'];
99    unset($GLOBALS['__PHPUNIT_BOOTSTRAP']);
100}
101
102__phpunit_run_isolated_test();
103