Skip to content

Commit fb1789f

Browse files
mvoriseksebastianbergmann
authored andcommitted
Fix Util\Exporter::export() to dump "null"
1 parent 6d121ca commit fb1789f

File tree

4 files changed

+40
-25
lines changed

4 files changed

+40
-25
lines changed

src/Util/Exporter.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,16 +20,16 @@ final class Exporter
2020
{
2121
public static function export(mixed $value, bool $exportObjects = false): string
2222
{
23-
if (self::isScalarOrArrayOfScalars($value) || $exportObjects) {
23+
if (self::isScalarOrNullOrArrayOfScalars($value) || $exportObjects) {
2424
return (new \SebastianBergmann\Exporter\Exporter)->export($value);
2525
}
2626

2727
return '{enable export of objects to see this value}';
2828
}
2929

30-
private static function isScalarOrArrayOfScalars(mixed &$value, Context $context = null): bool
30+
private static function isScalarOrNullOrArrayOfScalars(mixed &$value, Context $context = null): bool
3131
{
32-
if (is_scalar($value)) {
32+
if (is_scalar($value) || $value === null) {
3333
return true;
3434
}
3535

@@ -49,7 +49,7 @@ private static function isScalarOrArrayOfScalars(mixed &$value, Context $context
4949
$context->add($value);
5050

5151
foreach ($array as &$_value) {
52-
if (!self::isScalarOrArrayOfScalars($_value, $context)) {
52+
if (!self::isScalarOrNullOrArrayOfScalars($_value, $context)) {
5353
return false;
5454
}
5555
}

tests/end-to-end/_files/log-events-text/Test.php

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,13 @@
1414

1515
final class Test extends TestCase
1616
{
17-
public function testOne(): void
17+
public function testExportObject(): void
1818
{
1919
$this->assertSame(new stdClass, new stdClass);
2020
}
21+
22+
public function testExportNull(): void
23+
{
24+
$this->assertNull(null);
25+
}
2126
}

tests/end-to-end/cli/log-events-text.phpt

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,21 +21,26 @@ unlink($traceFile);
2121
--EXPECTF--
2222
PHPUnit Started (PHPUnit %s using %s)
2323
Test Runner Configured
24-
Test Suite Loaded (1 test)
24+
Test Suite Loaded (2 tests)
2525
Event Facade Sealed
2626
Test Runner Started
2727
Test Suite Sorted
28-
Test Runner Execution Started (1 test)
29-
Test Suite Started (CLI Arguments, 1 test)
30-
Test Suite Started (PHPUnit\TestFixture\LogEventsText\Test, 1 test)
31-
Test Preparation Started (PHPUnit\TestFixture\LogEventsText\Test::testOne)
32-
Test Prepared (PHPUnit\TestFixture\LogEventsText\Test::testOne)
28+
Test Runner Execution Started (2 tests)
29+
Test Suite Started (CLI Arguments, 2 tests)
30+
Test Suite Started (PHPUnit\TestFixture\LogEventsText\Test, 2 tests)
31+
Test Preparation Started (PHPUnit\TestFixture\LogEventsText\Test::testExportObject)
32+
Test Prepared (PHPUnit\TestFixture\LogEventsText\Test::testExportObject)
3333
Assertion Failed (Constraint: is identical to an object of class "stdClass", Value: {enable export of objects to see this value})
34-
Test Failed (PHPUnit\TestFixture\LogEventsText\Test::testOne)
34+
Test Failed (PHPUnit\TestFixture\LogEventsText\Test::testExportObject)
3535
Failed asserting that two variables reference the same object.
36-
Test Finished (PHPUnit\TestFixture\LogEventsText\Test::testOne)
37-
Test Suite Finished (PHPUnit\TestFixture\LogEventsText\Test, 1 test)
38-
Test Suite Finished (CLI Arguments, 1 test)
36+
Test Finished (PHPUnit\TestFixture\LogEventsText\Test::testExportObject)
37+
Test Preparation Started (PHPUnit\TestFixture\LogEventsText\Test::testExportNull)
38+
Test Prepared (PHPUnit\TestFixture\LogEventsText\Test::testExportNull)
39+
Assertion Succeeded (Constraint: is null, Value: null)
40+
Test Passed (PHPUnit\TestFixture\LogEventsText\Test::testExportNull)
41+
Test Finished (PHPUnit\TestFixture\LogEventsText\Test::testExportNull)
42+
Test Suite Finished (PHPUnit\TestFixture\LogEventsText\Test, 2 tests)
43+
Test Suite Finished (CLI Arguments, 2 tests)
3944
Test Runner Execution Finished
4045
Test Runner Finished
4146
PHPUnit Finished (Shell Exit Code: 1)

tests/end-to-end/cli/log-events-verbose-text.phpt

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,21 +21,26 @@ unlink($traceFile);
2121
--EXPECTF--
2222
[%s:%s:%s.%s / %s:%s:%s.%s] [%s bytes] PHPUnit Started (%s)
2323
[%s:%s:%s.%s / %s:%s:%s.%s] [%s bytes] Test Runner Configured
24-
[%s:%s:%s.%s / %s:%s:%s.%s] [%s bytes] Test Suite Loaded (1 test)
24+
[%s:%s:%s.%s / %s:%s:%s.%s] [%s bytes] Test Suite Loaded (2 tests)
2525
[%s:%s:%s.%s / %s:%s:%s.%s] [%s bytes] Event Facade Sealed
2626
[%s:%s:%s.%s / %s:%s:%s.%s] [%s bytes] Test Runner Started
2727
[%s:%s:%s.%s / %s:%s:%s.%s] [%s bytes] Test Suite Sorted
28-
[%s:%s:%s.%s / %s:%s:%s.%s] [%s bytes] Test Runner Execution Started (1 test)
29-
[%s:%s:%s.%s / %s:%s:%s.%s] [%s bytes] Test Suite Started (CLI Arguments, 1 test)
30-
[%s:%s:%s.%s / %s:%s:%s.%s] [%s bytes] Test Suite Started (PHPUnit\TestFixture\LogEventsText\Test, 1 test)
31-
[%s:%s:%s.%s / %s:%s:%s.%s] [%s bytes] Test Preparation Started (PHPUnit\TestFixture\LogEventsText\Test::testOne)
32-
[%s:%s:%s.%s / %s:%s:%s.%s] [%s bytes] Test Prepared (PHPUnit\TestFixture\LogEventsText\Test::testOne)
28+
[%s:%s:%s.%s / %s:%s:%s.%s] [%s bytes] Test Runner Execution Started (2 tests)
29+
[%s:%s:%s.%s / %s:%s:%s.%s] [%s bytes] Test Suite Started (CLI Arguments, 2 tests)
30+
[%s:%s:%s.%s / %s:%s:%s.%s] [%s bytes] Test Suite Started (PHPUnit\TestFixture\LogEventsText\Test, 2 tests)
31+
[%s:%s:%s.%s / %s:%s:%s.%s] [%s bytes] Test Preparation Started (PHPUnit\TestFixture\LogEventsText\Test::testExportObject)
32+
[%s:%s:%s.%s / %s:%s:%s.%s] [%s bytes] Test Prepared (PHPUnit\TestFixture\LogEventsText\Test::testExportObject)
3333
[%s:%s:%s.%s / %s:%s:%s.%s] [%s bytes] Assertion Failed (Constraint: is identical to an object of class "stdClass", Value: stdClass Object #%d ())
34-
[%s:%s:%s.%s / %s:%s:%s.%s] [%s bytes] Test Failed (PHPUnit\TestFixture\LogEventsText\Test::testOne)
34+
[%s:%s:%s.%s / %s:%s:%s.%s] [%s bytes] Test Failed (PHPUnit\TestFixture\LogEventsText\Test::testExportObject)
3535
Failed asserting that two variables reference the same object.
36-
[%s:%s:%s.%s / %s:%s:%s.%s] [%s bytes] Test Finished (PHPUnit\TestFixture\LogEventsText\Test::testOne)
37-
[%s:%s:%s.%s / %s:%s:%s.%s] [%s bytes] Test Suite Finished (PHPUnit\TestFixture\LogEventsText\Test, 1 test)
38-
[%s:%s:%s.%s / %s:%s:%s.%s] [%s bytes] Test Suite Finished (CLI Arguments, 1 test)
36+
[%s:%s:%s.%s / %s:%s:%s.%s] [%s bytes] Test Finished (PHPUnit\TestFixture\LogEventsText\Test::testExportObject)
37+
[%s:%s:%s.%s / %s:%s:%s.%s] [%s bytes] Test Preparation Started (PHPUnit\TestFixture\LogEventsText\Test::testExportNull)
38+
[%s:%s:%s.%s / %s:%s:%s.%s] [%s bytes] Test Prepared (PHPUnit\TestFixture\LogEventsText\Test::testExportNull)
39+
[%s:%s:%s.%s / %s:%s:%s.%s] [%s bytes] Assertion Succeeded (Constraint: is null, Value: null)
40+
[%s:%s:%s.%s / %s:%s:%s.%s] [%s bytes] Test Passed (PHPUnit\TestFixture\LogEventsText\Test::testExportNull)
41+
[%s:%s:%s.%s / %s:%s:%s.%s] [%s bytes] Test Finished (PHPUnit\TestFixture\LogEventsText\Test::testExportNull)
42+
[%s:%s:%s.%s / %s:%s:%s.%s] [%s bytes] Test Suite Finished (PHPUnit\TestFixture\LogEventsText\Test, 2 tests)
43+
[%s:%s:%s.%s / %s:%s:%s.%s] [%s bytes] Test Suite Finished (CLI Arguments, 2 tests)
3944
[%s:%s:%s.%s / %s:%s:%s.%s] [%s bytes] Test Runner Execution Finished
4045
[%s:%s:%s.%s / %s:%s:%s.%s] [%s bytes] Test Runner Finished
4146
[%s:%s:%s.%s / %s:%s:%s.%s] [%s bytes] PHPUnit Finished (Shell Exit Code: 1)

0 commit comments

Comments
 (0)