Example #1
0
function JsonWriter(Pest $pest, $tests)
{
    $jo = new \stdClass();
    $jo->unitName = $pest->getName();
    $jo->testsCount = count($tests);
    $jo->tests = array();
    $passedTests = 0;
    $allRecordsCount = 0;
    $allPassedRecords = 0;
    foreach ($tests as $test) {
        $joTest = new \stdClass();
        $allRecordsCount += $recordsCount = count($test->getRecords());
        $passedRecords = 0;
        foreach ($test->getRecords() as $record) {
            if ($record->getStatus()) {
                $passedRecords++;
                $allPassedRecords++;
            } else {
                if ($record->getSkipped() > 0) {
                    $allRecordsCount += $record->getSkipped();
                    $recordsCount += $record->getSkipped();
                }
            }
        }
        if ($recordsCount === $passedRecords) {
            $passedTests++;
        }
        $joTest->name = $test->getName();
        if (($exception = $test->getException()) != null) {
            $joTest->exception = new \stdClass();
            $joTest->exception->type = get_class($exception);
            $joTest->exception->message = $exception->getMessage();
            $joTest->exception->code = $exception->getCode();
            $joTest->exception->file = $exception->getFile();
            $joTest->exception->line = $exception->getLine();
            $joTest->exception->stacktrace = $exception->getTraceAsString();
        }
        $joTest->assertions = array();
        foreach ($test->getRecords() as $record) {
            $joRecord = new \stdClass();
            $joRecord->status = $record->getStatus();
            $joRecord->function = $record->getStackInfo()->getFunction();
            $joRecord->message = empty($record->getMessage()) ? "" : ": " . $record->getMessage();
            $joRecord->file = $record->getStackInfo()->getFile();
            $joRecord->line = $record->getStackInfo()->getLine();
            $joRecord->code = $record->getStackInfo()->getCode();
            $joRecord->values = $record->getValues();
            $joRecord->skipped = $record->getSkipped();
            $joTest->assertions[] = $joRecord;
        }
        $joTest->output = $test->getOutput();
        $joTest->assertionStatus = array("passed" => $passedRecords, "failed" => $recordsCount - $passedRecords);
        $jo->tests[] = $joTest;
    }
    $jo->assertionStatus = array("passed" => $allPassedRecords, "failed" => $allRecordsCount - $allPassedRecords);
    $jo->testsStatus = array("passed" => $passedTests, "failed" => $jo->testsCount - $passedTests);
    echo json_encode($jo, JSON_PRETTY_PRINT);
}
Example #2
0
function ThreeLineLinuxWriter(Pest $pest, $tests, $config)
{
    $colored = function ($text, $color) {
        return "[" . $color . "m" . $text . "";
    };
    $testsCount = count($tests);
    $passedTests = 0;
    $allRecordsCount = 0;
    $allPassedRecords = 0;
    foreach ($tests as $test) {
        $allRecordsCount += $recordsCount = count($test->getRecords());
        $passedRecords = 0;
        foreach ($test->getRecords() as $record) {
            if ($record->getStatus()) {
                $passedRecords++;
                $allPassedRecords++;
            } else {
                if ($record->getSkipped() > 0) {
                    $allRecordsCount += $record->getSkipped();
                    $recordsCount += $record->getSkipped();
                }
            }
        }
        if ($recordsCount === $passedRecords && $test->getException() == null) {
            $passedTests++;
        }
    }
    if ($testsCount == $passedTests) {
        if (isset($config[\Pest\Pest::CONFIG_ONLY_FAILED])) {
            return;
        }
        echo $colored($pest->getName(), 42);
    } else {
        echo $colored($pest->getName(), 41);
    }
    echo PHP_EOL;
    printf("   Assertion status: [passed: %d, failed: %d], success rate: %01.2f%%\n", $allPassedRecords, $allRecordsCount - $allPassedRecords, $allPassedRecords / $allRecordsCount * 100);
    printf("   Test status: [passed: %d, failed: %d], success rate: %01.2f%%\n", $passedTests, $testsCount - $passedTests, $passedTests / $testsCount * 100);
    echo PHP_EOL;
}
Example #3
0
function LinuxWriter(Pest $pest, $tests, $config)
{
    $colored = function ($text, $color) {
        return "[" . $color . "m" . $text . "";
    };
    $dump = function ($mixed) {
        switch (gettype($mixed)) {
            case 'string':
                return "string[" . strlen($mixed) . "](" . var_export($mixed, true) . ")";
            default:
                return gettype($mixed) . "(" . var_export($mixed, true) . ")";
        }
    };
    echo str_pad("", 80, '#') . PHP_EOL;
    echo PHP_EOL;
    echo "   " . $pest->getName() . PHP_EOL;
    echo PHP_EOL;
    echo str_pad("", 80, '#') . PHP_EOL;
    $testsCount = count($tests);
    $passedTests = 0;
    $allRecordsCount = 0;
    $allPassedRecords = 0;
    foreach ($tests as $test) {
        $allRecordsCount += $recordsCount = count($test->getRecords());
        $passedRecords = 0;
        foreach ($test->getRecords() as $record) {
            if ($record->getStatus()) {
                $passedRecords++;
                $allPassedRecords++;
            } else {
                if ($record->getSkipped() > 0) {
                    $allRecordsCount += $record->getSkipped();
                    $recordsCount += $record->getSkipped();
                }
            }
        }
        if ($recordsCount === $passedRecords && ($exception = $test->getException()) == null) {
            $status = "[" . $colored("passed", 42) . "] ";
            $passedTests++;
            if (isset($config[\Pest\Pest::CONFIG_ONLY_FAILED])) {
                continue;
            }
        } else {
            $status = "[" . $colored("failed", 41) . "] ";
        }
        echo "   " . $status . $test->getName() . PHP_EOL . PHP_EOL;
        if (($exception = $test->getException()) != null) {
            $exception instanceof \Exception;
            echo "    Uncought exception:" . PHP_EOL . PHP_EOL;
            echo "        Type:    " . get_class($exception) . PHP_EOL;
            echo "        Message: " . $exception->getMessage() . PHP_EOL;
            echo "        Code:    " . $exception->getCode() . PHP_EOL;
            echo "        File:    " . $exception->getFile() . PHP_EOL;
            echo "        Line:    " . $exception->getLine() . PHP_EOL;
            echo "        Stacktrace:    " . PHP_EOL;
            echo "            " . str_replace("\n", "\n            ", $exception->getTraceAsString()) . PHP_EOL;
            continue;
        }
        foreach ($test->getRecords() as $record) {
            if ($record->getStatus()) {
                if (isset($config[\Pest\Pest::CONFIG_ONLY_FAILED])) {
                    continue;
                }
                $status = "      [" . $colored("passed", 42) . "] ";
            } else {
                $status = "      [" . $colored("failed", 41) . "] ";
            }
            echo $status . $record->getStackInfo()->getFunction() . (empty($record->getMessage()) ? "" : ": " . $record->getMessage()) . PHP_EOL . PHP_EOL;
            echo "         File: " . $record->getStackInfo()->getFile() . PHP_EOL;
            echo "         Line: " . $record->getStackInfo()->getLine() . PHP_EOL;
            echo "         " . $record->getStackInfo()->getCode() . PHP_EOL . PHP_EOL;
            if (!$record->getStatus()) {
                for ($i = 0; $i < count($record->getValues()); $i++) {
                    $value = $record->getValues()[$i];
                    echo "            #{$i} " . $dump($value) . PHP_EOL;
                }
            }
            echo PHP_EOL;
            if ($record->getSkipped() > 0) {
                echo "         " . $colored("SKIPPED", 43) . " " . $record->getSkipped() . " assertions because of this assertion" . PHP_EOL . PHP_EOL;
            }
        }
        if (!empty($test->getOutput())) {
            echo "   Test output:" . PHP_EOL;
            foreach (explode(PHP_EOL, $test->getOutput()) as $line) {
                echo "         " . $line . PHP_EOL;
            }
        }
        printf("   Assertion status: [passed: %d, failed: %d], success rate: %01.2f%%\n", $passedRecords, $recordsCount - $passedRecords, $passedRecords / $recordsCount * 100);
        echo "   " . str_pad("", 77, '-') . PHP_EOL;
    }
    echo PHP_EOL;
    echo str_pad("", 80, '#') . PHP_EOL;
    printf("\n   Assertion status: [passed: %d, failed: %d], success rate: %01.2f%%\n", $allPassedRecords, $allRecordsCount - $allPassedRecords, $allPassedRecords / $allRecordsCount * 100);
    printf("\n   Test status: [passed: %d, failed: %d], success rate: %01.2f%%\n", $passedTests, $testsCount - $passedTests, $passedTests / $testsCount * 100);
    echo PHP_EOL;
}