X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs-website;a=blobdiff_plain;f=vendor%2Fpsy%2Fpsysh%2Ftest%2FCodeCleaner%2FFunctionReturnInWriteContextPassTest.php;fp=vendor%2Fpsy%2Fpsysh%2Ftest%2FCodeCleaner%2FFunctionReturnInWriteContextPassTest.php;h=419369b496334921cc65a3f93b6c41443b07dd3a;hp=0000000000000000000000000000000000000000;hb=af6d1fb995500ae68849458ee10d66abbdcfb252;hpb=680c79a86e3ed402f263faeac92e89fb6d9edcc0 diff --git a/vendor/psy/psysh/test/CodeCleaner/FunctionReturnInWriteContextPassTest.php b/vendor/psy/psysh/test/CodeCleaner/FunctionReturnInWriteContextPassTest.php new file mode 100644 index 000000000..419369b49 --- /dev/null +++ b/vendor/psy/psysh/test/CodeCleaner/FunctionReturnInWriteContextPassTest.php @@ -0,0 +1,75 @@ +setPass(new FunctionReturnInWriteContextPass()); + } + + /** + * @dataProvider invalidStatements + * @expectedException \Psy\Exception\FatalErrorException + * @expectedExceptionMessage Can't use function return value in write context + */ + public function testProcessStatementFails($code) + { + $this->parseAndTraverse($code); + } + + public function invalidStatements() + { + return [ + ['f(&g())'], + ['array(& $object->method())'], + ['$a->method(& $closure())'], + ['array(& A::b())'], + ['f() = 5'], + ['unset(h())'], + ]; + } + + public function testIsset() + { + try { + $this->traverser->traverse($this->parse('isset(strtolower("A"))')); + $this->fail(); + } catch (FatalErrorException $e) { + if (version_compare(PHP_VERSION, '5.5', '>=')) { + $this->assertContains( + 'Cannot use isset() on the result of a function call (you can use "null !== func()" instead)', + $e->getMessage() + ); + } else { + $this->assertContains("Can't use function return value in write context", $e->getMessage()); + } + } + } + + /** + * @expectedException \Psy\Exception\FatalErrorException + * @expectedExceptionMessage Can't use function return value in write context + */ + public function testEmpty() + { + if (version_compare(PHP_VERSION, '5.5', '>=')) { + $this->markTestSkipped(); + } + + $this->traverser->traverse($this->parse('empty(strtolower("A"))')); + } +}