annotate vendor/nikic/php-parser/test/PhpParser/NodeVisitor/FindingVisitorTest.php @ 13:5fb285c0d0e3
Update Drupal core to 8.4.7 via Composer. Security update; I *think* we've
been lucky to get away with this so far, as we don't support self-registration
which seems to be used by the so-called "drupalgeddon 2" attack that 8.4.5
was vulnerable to.
author |
Chris Cannam |
date |
Mon, 23 Apr 2018 09:33:26 +0100 |
parents |
|
children |
129ea1e6d783 |
rev |
line source |
Chris@13
|
1 <?php declare(strict_types=1);
|
Chris@13
|
2
|
Chris@13
|
3 namespace PhpParser\NodeVisitor;
|
Chris@13
|
4
|
Chris@13
|
5 use PhpParser\Node;
|
Chris@13
|
6 use PhpParser\Node\Expr;
|
Chris@13
|
7 use PhpParser\NodeTraverser;
|
Chris@13
|
8 use PHPUnit\Framework\TestCase;
|
Chris@13
|
9
|
Chris@13
|
10 class FindingVisitorTest extends TestCase
|
Chris@13
|
11 {
|
Chris@13
|
12 public function testFindVariables() {
|
Chris@13
|
13 $traverser = new NodeTraverser();
|
Chris@13
|
14 $visitor = new FindingVisitor(function(Node $node) {
|
Chris@13
|
15 return $node instanceof Node\Expr\Variable;
|
Chris@13
|
16 });
|
Chris@13
|
17 $traverser->addVisitor($visitor);
|
Chris@13
|
18
|
Chris@13
|
19 $assign = new Expr\Assign(new Expr\Variable('a'), new Expr\BinaryOp\Concat(
|
Chris@13
|
20 new Expr\Variable('b'), new Expr\Variable('c')
|
Chris@13
|
21 ));
|
Chris@13
|
22 $stmts = [new Node\Stmt\Expression($assign)];
|
Chris@13
|
23
|
Chris@13
|
24 $traverser->traverse($stmts);
|
Chris@13
|
25 $this->assertSame([
|
Chris@13
|
26 $assign->var,
|
Chris@13
|
27 $assign->expr->left,
|
Chris@13
|
28 $assign->expr->right,
|
Chris@13
|
29 ], $visitor->getFoundNodes());
|
Chris@13
|
30 }
|
Chris@13
|
31
|
Chris@13
|
32 public function testFindAll() {
|
Chris@13
|
33 $traverser = new NodeTraverser();
|
Chris@13
|
34 $visitor = new FindingVisitor(function(Node $node) {
|
Chris@13
|
35 return true; // All nodes
|
Chris@13
|
36 });
|
Chris@13
|
37 $traverser->addVisitor($visitor);
|
Chris@13
|
38
|
Chris@13
|
39 $assign = new Expr\Assign(new Expr\Variable('a'), new Expr\BinaryOp\Concat(
|
Chris@13
|
40 new Expr\Variable('b'), new Expr\Variable('c')
|
Chris@13
|
41 ));
|
Chris@13
|
42 $stmts = [new Node\Stmt\Expression($assign)];
|
Chris@13
|
43
|
Chris@13
|
44 $traverser->traverse($stmts);
|
Chris@13
|
45 $this->assertSame([
|
Chris@13
|
46 $stmts[0],
|
Chris@13
|
47 $assign,
|
Chris@13
|
48 $assign->var,
|
Chris@13
|
49 $assign->expr,
|
Chris@13
|
50 $assign->expr->left,
|
Chris@13
|
51 $assign->expr->right,
|
Chris@13
|
52 ], $visitor->getFoundNodes());
|
Chris@13
|
53 }
|
Chris@13
|
54 }
|