Mercurial > hg > isophonics-drupal-site
comparison vendor/psy/psysh/test/CodeCleaner/RequirePassTest.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 | c2387f117808 |
comparison
equal
deleted
inserted
replaced
12:7a779792577d | 13:5fb285c0d0e3 |
---|---|
1 <?php | |
2 | |
3 /* | |
4 * This file is part of Psy Shell. | |
5 * | |
6 * (c) 2012-2018 Justin Hileman | |
7 * | |
8 * For the full copyright and license information, please view the LICENSE | |
9 * file that was distributed with this source code. | |
10 */ | |
11 | |
12 namespace Psy\Test\CodeCleaner; | |
13 | |
14 use Psy\CodeCleaner\RequirePass; | |
15 | |
16 class RequirePassTest extends CodeCleanerTestCase | |
17 { | |
18 public function setUp() | |
19 { | |
20 $this->setPass(new RequirePass()); | |
21 } | |
22 | |
23 /** | |
24 * @dataProvider exitStatements | |
25 */ | |
26 public function testExitStatement($from, $to) | |
27 { | |
28 $this->assertProcessesAs($from, $to); | |
29 } | |
30 | |
31 public function exitStatements() | |
32 { | |
33 $resolve = '\\Psy\\CodeCleaner\\RequirePass::resolve'; | |
34 | |
35 return [ | |
36 // The basics | |
37 ['require "a"', "require $resolve(\"a\", 1);"], | |
38 ['require "b.php"', "require $resolve(\"b.php\", 1);"], | |
39 ['require_once "c"', "require_once $resolve(\"c\", 1);"], | |
40 ['require_once "d.php"', "require_once $resolve(\"d.php\", 1);"], | |
41 | |
42 // Ensure that line numbers work correctly | |
43 ["null;\nrequire \"e.php\"", "null;\nrequire $resolve(\"e.php\", 2);"], | |
44 ["null;\nrequire_once \"f.php\"", "null;\nrequire_once $resolve(\"f.php\", 2);"], | |
45 | |
46 // Things with expressions | |
47 ['require $foo', "require $resolve(\$foo, 1);"], | |
48 ['require_once $foo', "require_once $resolve(\$foo, 1);"], | |
49 ['require ($bar = "g.php")', "require $resolve(\$bar = \"g.php\", 1);"], | |
50 ['require_once ($bar = "h.php")', "require_once $resolve(\$bar = \"h.php\", 1);"], | |
51 ['$bar = require ($baz = "i.php")', "\$bar = (require $resolve(\$baz = \"i.php\", 1));"], | |
52 ['$bar = require_once ($baz = "j.php")', "\$bar = (require_once $resolve(\$baz = \"j.php\", 1));"], | |
53 ]; | |
54 } | |
55 | |
56 /** | |
57 * @expectedException \Psy\Exception\FatalErrorException | |
58 * @expectedExceptionMessage Failed opening required 'not a file name' in eval()'d code on line 2 | |
59 */ | |
60 public function testResolve() | |
61 { | |
62 RequirePass::resolve('not a file name', 2); | |
63 } | |
64 | |
65 /** | |
66 * @dataProvider emptyWarnings | |
67 * | |
68 * @expectedException \Psy\Exception\ErrorException | |
69 * @expectedExceptionMessage Filename cannot be empty on line 1 | |
70 */ | |
71 public function testResolveEmptyWarnings($file) | |
72 { | |
73 if (!E_WARNING & error_reporting()) { | |
74 $this->markTestSkipped(); | |
75 } | |
76 | |
77 RequirePass::resolve($file, 1); | |
78 } | |
79 | |
80 public function emptyWarnings() | |
81 { | |
82 return [ | |
83 [null], | |
84 [false], | |
85 [''], | |
86 ]; | |
87 } | |
88 } |