Updated Drupal to 8.6. This goes with the following updates because it's possible...
[yaffs-website] / vendor / psy / psysh / test / CodeCleaner / RequirePassTest.php
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
89     public function testResolveWorks()
90     {
91         $this->assertEquals(__FILE__, RequirePass::resolve(__FILE__, 3));
92     }
93 }