12 use PHPUnit\Framework\ExpectationFailedException;
13 use \PHPUnit_Framework_ExpectationFailedException;
26 $testFiles = loadFixtures($filterTests, $ignore);
31 foreach ($testFiles as $testFile) {
33 if (in_array($testFile, self::$FILTER)) {
37 $testData = json_decode(file_get_contents(PHPUNIT_FIXTURES.
"/$testFile"));
38 $mode = $testData->mode;
39 if ($mode !==
"bibliography" && $mode !==
"citation") {
43 $expected = $testData->result;
44 $citeProc =
new CiteProc($testData->csl);
46 $echo = sprintf(
"%03d (%s / %s): ", $i, $testFile, $mode);
49 if (!empty($testData->citation_items)) {
50 $citationItems = $testData->citation_items;
52 $actual = $citeProc->render($testData->input, $mode, $citationItems);
53 $this->assertEquals($expected, $actual,
"Test case \"$testFile\" ($i) has failed.");
55 $success[] = $echo .
"\n$actual";
56 }
catch (ExpectationFailedException $e) {
58 $str = $e->getMessage() .
"\n" . $e->getComparisonFailure()->getDiff() .
"\n\n\n";
59 $failures[] =
"$echo\n$str";
64 $exceptions[] =
"$echo\nCiteProc Exception in $testFile\n".$e->getFile().
"\n".$e->getMessage().
"\n";
65 }
catch (\RuntimeException $e) {
67 $exceptions[] =
"$echo\nRuntime Exception in $testFile\n".$e->getFile().
" on line ".$e->getLine().
"\n".$e->getMessage().
"\n";
68 }
catch (\Exception $e) {
70 $exceptions[] =
"$echo\nException in $testFile\n".$e->getFile().
" on line ".$e->getLine().
"\n".$e->getMessage().
"\n";
73 if (!empty($success)) {
74 print count($success).
" assertions were succeeded:\n\t".implode(
"\n\t", $success);
77 if (!empty($failures)) {
78 print
"\n\n".count($failures).
" assertions failed:\n\t".implode(
"\n\t", $failures);
79 throw new ExpectationFailedException(count($failures).
" assertions failed:\n\t".implode(
"\n\t", $failures));
82 if (!empty($exceptions)) {
83 print
"\n\n".count($exceptions).
" assertions have caused an exception :\n\t".implode(
"\n\t", $exceptions);
86 print
"\n\nSummary: ".count($success).
"/".
count($failures).
"/".
count($exceptions);
87 print
"\n++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n\n";