don't rely on 'args' in trace, not available in 7.4

This commit is contained in:
Remi Collet
2020-02-12 13:46:34 +01:00
parent 50e77ace68
commit e8384e45fa
2 changed files with 22 additions and 16 deletions
+10 -10
View File
@@ -102,16 +102,16 @@ final class InvalidTag implements Tag
};
do {
$trace = array_map(
static function (array $call) use ($flatten) : array {
$call['args'] = $call['args'] ?? [];
array_walk_recursive($call['args'], $flatten);
return $call;
},
$exception->getTrace()
);
$trace = $exception->getTrace();
if (isset($trace[0]['args'])) {
$trace = array_map(
static function (array $call) use ($flatten) : array {
array_walk_recursive($call['args'], $flatten);
return $call;
},
$trace
);
}
$traceProperty->setValue($exception, $trace);
$exception = $exception->getPrevious();
} while ($exception !== null);
+12 -6
View File
@@ -56,8 +56,11 @@ final class InvalidTagTest extends TestCase
self::assertSame('name', $tag->getName());
self::assertSame('@name Body', $tag->render());
self::assertSame($parentException, $tag->getException());
self::assertStringStartsWith('(Closure at', $tag->getException()->getPrevious()->getTrace()[0]['args'][0]);
self::assertStringContainsString(__FILE__, $tag->getException()->getPrevious()->getTrace()[0]['args'][0]);
$trace = $tag->getException()->getPrevious()->getTrace();
if (isset($trace[0]['args'])) { // Not set by default on 7.4
self::assertStringStartsWith('(Closure at', $trace[0]['args'][0]);
self::assertStringContainsString(__FILE__, $trace[0]['args'][0]);
}
self::assertEquals($parentException, unserialize(serialize($parentException)));
}
}
@@ -81,10 +84,13 @@ final class InvalidTagTest extends TestCase
self::assertSame('name', $tag->getName());
self::assertSame('@name Body', $tag->render());
self::assertSame($parentException, $tag->getException());
self::assertStringStartsWith(
'resource(stream)',
$tag->getException()->getPrevious()->getTrace()[0]['args'][0]
);
$trace = $tag->getException()->getPrevious()->getTrace();
if (isset($trace[0]['args'])) { // Not set by default on 7.4
self::assertStringStartsWith(
'resource(stream)',
$trace[0]['args'][0]
);
}
self::assertEquals($parentException, unserialize(serialize($parentException)));
}
}