417b7f9768cf9d522df2639f17e0b2318e4bb618
[yaffs-website] / vendor / drush / drush / isolation / tests / SiteSpecParserTest.php
1 <?php
2 namespace Drush\SiteAlias;
3
4 use PHPUnit\Framework\TestCase;
5
6 class SiteSpecParserTest extends TestCase
7 {
8     use \Drush\FixtureFactory;
9
10     /**
11      * @dataProvider parserTestValues
12      */
13     public function testSiteSpecParser(
14         $spec,
15         $expected)
16     {
17         $root = $this->siteDir();
18         $fixtureSite = '/' . basename($root);
19         $parser = new SiteSpecParser();
20
21         // If the test spec begins with '/fixtures', substitute the
22         // actual path to our fixture site.
23         $spec = preg_replace('%^/fixtures%', $root, $spec);
24
25         // Parse it!
26         $result = $parser->parse($spec, $root);
27
28         // If the result contains the path to our fixtures site, replace
29         // it with the simple string '/fixtures'.
30         if (isset($result['root'])) {
31             $result['root'] = preg_replace("%.*$fixtureSite%", '/fixtures', $result['root']);
32         }
33
34         // Compare the altered result with the expected value.
35         $this->assertEquals($expected, $result);
36     }
37
38     /**
39      * @dataProvider validSiteSpecs
40      */
41     public function testValidSiteSpecs($spec)
42     {
43         $this->isSpecValid($spec, true);
44     }
45
46     /**
47      * @dataProvider invalidSiteSpecs
48      */
49     public function testInvalidSiteSpecs($spec)
50     {
51         $this->isSpecValid($spec, false);
52     }
53
54     protected function isSpecValid($spec, $expected)
55     {
56         $parser = new SiteSpecParser();
57
58         $result = $parser->validSiteSpec($spec);
59         $this->assertEquals($expected, $result);
60     }
61
62     public static function validSiteSpecs()
63     {
64         return [
65             [ '/path/to/drupal#uri' ],
66             [ 'user@server/path/to/drupal#uri' ],
67             [ 'user@server/path/to/drupal' ],
68             [ 'user@server#uri' ],
69             [ '#uri' ],
70         ];
71     }
72
73     public static function invalidSiteSpecs()
74     {
75         return [
76             [ 'uri' ],
77             [ '@/#' ],
78             [ 'user@#uri' ],
79             [ '@server/path/to/drupal#uri' ],
80             [ 'user@server/path/to/drupal#' ],
81             [ 'user@server/path/to/drupal#uri!' ],
82             [ 'user@server/path/to/drupal##uri' ],
83             [ 'user#server/path/to/drupal#uri' ],
84        ];
85     }
86
87     public static function parserTestValues()
88     {
89         return [
90             [
91                 'user@server/path#somemultisite',
92                 [
93                     'user' => 'user',
94                     'host' => 'server',
95                     'root' => '/path',
96                     'uri' => 'somemultisite',
97                 ],
98             ],
99
100             [
101                 'user@server/path',
102                 [
103                     'user' => 'user',
104                     'host' => 'server',
105                     'root' => '/path',
106                     'uri' => 'default',
107                 ],
108             ],
109
110             [
111                 '/fixtures#mymultisite',
112                 [
113                     'root' => '/fixtures',
114                     'uri' => 'mymultisite',
115                 ],
116             ],
117
118             [
119                 '#mymultisite',
120                 [
121                     'root' => '/fixtures',
122                     'uri' => 'mymultisite',
123                 ],
124             ],
125
126             [
127                 '/fixtures#somemultisite',
128                 [
129                 ],
130             ],
131
132             [
133                 '/path#somemultisite',
134                 [
135                 ],
136             ],
137
138             [
139                 '/path#mymultisite',
140                 [
141                 ],
142             ],
143
144             [
145                 '#somemultisite',
146                 [
147                 ],
148             ],
149         ];
150     }
151 }