comparison vendor/psy/psysh/test/CodeCleaner/ValidConstructorPassTest.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
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\ValidConstructorPass;
15
16 class ValidConstructorPassTest extends CodeCleanerTestCase
17 {
18 protected function setUp()
19 {
20 $this->setPass(new ValidConstructorPass());
21 }
22
23 /**
24 * @dataProvider invalidStatements
25 * @expectedException \Psy\Exception\FatalErrorException
26 */
27 public function testProcessInvalidStatement($code)
28 {
29 $this->parseAndTraverse($code);
30 }
31
32 /**
33 * @dataProvider invalidParserStatements
34 * @expectedException \Psy\Exception\ParseErrorException
35 */
36 public function testProcessInvalidStatementCatchedByParser($code)
37 {
38 $this->parseAndTraverse($code);
39 }
40
41 public function invalidStatements()
42 {
43 $data = [
44 ['class A { public static function A() {}}'],
45 ['class A { public static function a() {}}'],
46 ['class A { private static function A() {}}'],
47 ['class A { private static function a() {}}'],
48 ];
49
50 if (version_compare(PHP_VERSION, '7.0', '>=')) {
51 $data[] = ['class A { public function A(): ?array {}}'];
52 $data[] = ['class A { public function a(): ?array {}}'];
53 }
54
55 return $data;
56 }
57
58 public function invalidParserStatements()
59 {
60 return [
61 ['class A { public static function __construct() {}}'],
62 ['class A { private static function __construct() {}}'],
63 ['class A { private static function __construct() {} public function A() {}}'],
64 ['namespace B; class A { private static function __construct() {}}'],
65 ];
66 }
67
68 /**
69 * @dataProvider validStatements
70 */
71 public function testProcessValidStatement($code)
72 {
73 $this->parseAndTraverse($code);
74 $this->assertTrue(true);
75 }
76
77 public function validStatements()
78 {
79 $data = [
80 ['class A { public static function A() {} public function __construct() {}}'],
81 ['class A { private function __construct() {} public static function A() {}}'],
82 ['namespace B; class A { private static function A() {}}'],
83 ];
84
85 if (version_compare(PHP_VERSION, '7.0', '>=')) {
86 $data[] = ['class A { public static function A() {} public function __construct() {}}'];
87 $data[] = ['class A { private function __construct() {} public static function A(): ?array {}}'];
88 $data[] = ['namespace B; class A { private static function A(): ?array {}}'];
89 }
90
91 return $data;
92 }
93 }