Version 1
[yaffs-website] / vendor / drush / drush / tests / pmRequestUnitTest.php
1 <?php
2
3 /**
4  * @file
5  * Tests for pm parsers.
6  */
7
8 namespace Unish;
9
10 /**
11  * pm testing
12  *
13  * @group pm
14  */
15 class pmRequestUnitCase extends UnitUnishTestCase {
16
17   /**
18    * Tests for pm_parse_version() with semantic versioning.
19    */
20   public function testVersionParserCoreSemVer() {
21     _drush_add_commandfiles(array(DRUSH_BASE_PATH . '/commands/pm'));
22
23     drush_set_option('default-major', UNISH_DRUPAL_MAJOR_VERSION);
24
25     $version = '8.0.0-beta2';
26     $version_parts = pm_parse_version($version, TRUE);
27     $this->assertEquals('8.0.0-beta2', $version_parts['version']);
28     $this->assertEquals('8.x', $version_parts['drupal_version']);
29     $this->assertEquals('8', $version_parts['version_major']);
30     $this->assertEquals('0', $version_parts['version_minor']);
31     $this->assertEquals('0', $version_parts['version_patch']);
32     $this->assertEquals('beta2', $version_parts['version_extra']);
33     $this->assertEquals('8.0.0-beta2', $version_parts['project_version']);
34
35     $version = '8.0.x-dev';
36     $version_parts = pm_parse_version($version, TRUE);
37     $this->assertEquals('8.0.x-dev', $version_parts['version']);
38     $this->assertEquals('8.x', $version_parts['drupal_version']);
39     $this->assertEquals('8', $version_parts['version_major']);
40     $this->assertEquals('0', $version_parts['version_minor']);
41     $this->assertEquals('', $version_parts['version_patch']);
42     $this->assertEquals('dev', $version_parts['version_extra']);
43     $this->assertEquals('8.0.x-dev', $version_parts['project_version']);
44
45     $version = '8.0.0-beta3+252-dev';
46     $version_parts = pm_parse_version($version, TRUE);
47     $this->assertEquals('8.0.0-beta3+252-dev', $version_parts['version']);
48     $this->assertEquals('8.x', $version_parts['drupal_version']);
49     $this->assertEquals('8', $version_parts['version_major']);
50     $this->assertEquals('0', $version_parts['version_minor']);
51     $this->assertEquals('0', $version_parts['version_patch']);
52     $this->assertEquals('beta3', $version_parts['version_extra']);
53     $this->assertEquals('252', $version_parts['version_offset']);
54     $this->assertEquals('8.0.0-beta3+252-dev', $version_parts['project_version']);
55
56     $version = '8.1.x';
57     $version_parts = pm_parse_version($version, TRUE);
58     $this->assertEquals('8.1.x-dev', $version_parts['version']);
59     $this->assertEquals('8.x', $version_parts['drupal_version']);
60     $this->assertEquals('8', $version_parts['version_major']);
61     $this->assertEquals('1', $version_parts['version_minor']);
62     $this->assertEquals('', $version_parts['version_patch']);
63     $this->assertEquals('dev', $version_parts['version_extra']);
64     $this->assertEquals('8.1.x-dev', $version_parts['project_version']);
65
66     $version = '8.0.1';
67     $version_parts = pm_parse_version($version, TRUE);
68     $this->assertEquals('8.0.1', $version_parts['version']);
69     $this->assertEquals('8.x', $version_parts['drupal_version']);
70     $this->assertEquals('8', $version_parts['version_major']);
71     $this->assertEquals('0', $version_parts['version_minor']);
72     $this->assertEquals('1', $version_parts['version_patch']);
73     $this->assertEquals('', $version_parts['version_extra']);
74     $this->assertEquals('8.0.1', $version_parts['project_version']);
75   }
76
77   /**
78    * Tests for pm_parse_version() with drupal version scheme for core.
79    */
80   public function testVersionParserCore() {
81     _drush_add_commandfiles(array(DRUSH_BASE_PATH . '/commands/pm'));
82
83     drush_set_option('default-major', UNISH_DRUPAL_MAJOR_VERSION);
84
85     $version = '';
86     $version_parts = pm_parse_version($version, TRUE);
87     $this->assertEquals('', $version_parts['version']);
88     $this->assertEquals(UNISH_DRUPAL_MAJOR_VERSION . '.x', $version_parts['drupal_version']);
89     $this->assertEquals(UNISH_DRUPAL_MAJOR_VERSION, $version_parts['version_major']);
90     $this->assertEquals('', $version_parts['version_minor']);
91     $this->assertEquals('', $version_parts['version_patch']);
92     $this->assertEquals('', $version_parts['version_extra']);
93     $this->assertEquals('', $version_parts['project_version']);
94
95     // We use version 5 in these tests to avoid false positives from
96     // pm_parse_version(), in case it was picking drush's default-major.
97
98     $version = '5';
99     $version_parts = pm_parse_version($version, TRUE);
100     $this->assertEquals('', $version_parts['version']);
101     $this->assertEquals('5.x', $version_parts['drupal_version']);
102     $this->assertEquals('', $version_parts['project_version']);
103     $this->assertEquals('5', $version_parts['version_major']);
104     $this->assertEquals('', $version_parts['version_minor']);
105     $this->assertEquals('', $version_parts['version_patch']);
106     $this->assertEquals('', $version_parts['version_extra']);
107
108     $version = '5.x';
109     $version_parts = pm_parse_version($version, TRUE);
110     $this->assertEquals('5.x-dev', $version_parts['version']);
111     $this->assertEquals('5.x', $version_parts['drupal_version']);
112     $this->assertEquals('5', $version_parts['version_major']);
113     $this->assertEquals('', $version_parts['version_minor']);
114     $this->assertEquals('', $version_parts['version_patch']);
115     $this->assertEquals('dev', $version_parts['version_extra']);
116     $this->assertEquals('5.x-dev', $version_parts['project_version']);
117
118     $version = '5.x-dev';
119     $version_parts = pm_parse_version($version, TRUE);
120     $this->assertEquals('5.x-dev', $version_parts['version']);
121     $this->assertEquals('5.x', $version_parts['drupal_version']);
122     $this->assertEquals('5', $version_parts['version_major']);
123     $this->assertEquals('', $version_parts['version_minor']);
124     $this->assertEquals('', $version_parts['version_patch']);
125     $this->assertEquals('dev', $version_parts['version_extra']);
126     $this->assertEquals('5.x-dev', $version_parts['project_version']);
127
128     $version = '5.0';
129     $version_parts = pm_parse_version($version, TRUE);
130     $this->assertEquals('5.0', $version_parts['version']);
131     $this->assertEquals('5.x', $version_parts['drupal_version']);
132     $this->assertEquals('5', $version_parts['version_major']);
133     $this->assertEquals('', $version_parts['version_minor']);
134     $this->assertEquals('0', $version_parts['version_patch']);
135     $this->assertEquals('', $version_parts['version_extra']);
136     $this->assertEquals('5.0', $version_parts['project_version']);
137
138     $version = '5.0-beta1';
139     $version_parts = pm_parse_version($version, TRUE);
140     $this->assertEquals('5.0-beta1', $version_parts['version']);
141     $this->assertEquals('5.x', $version_parts['drupal_version']);
142     $this->assertEquals('5', $version_parts['version_major']);
143     $this->assertEquals('', $version_parts['version_minor']);
144     $this->assertEquals('0', $version_parts['version_patch']);
145     $this->assertEquals('beta1', $version_parts['version_extra']);
146     $this->assertEquals('5.0-beta1', $version_parts['project_version']);
147   }
148
149   /**
150    * Tests for pm_parse_version() with project versions.
151    */
152   public function testVersionParserContrib() {
153     _drush_add_commandfiles(array(DRUSH_BASE_PATH . '/commands/pm'));
154
155     drush_set_option('default-major', UNISH_DRUPAL_MAJOR_VERSION);
156
157     $version = '';
158     $version_parts = pm_parse_version($version);
159     $this->assertEquals('', $version_parts['version']);
160     $this->assertEquals(UNISH_DRUPAL_MAJOR_VERSION . '.x', $version_parts['drupal_version']);
161     $this->assertEquals('', $version_parts['version_major']);
162     $this->assertEquals('', $version_parts['version_minor']);
163     $this->assertEquals('', $version_parts['version_patch']);
164     $this->assertEquals('', $version_parts['version_extra']);
165     $this->assertEquals('', $version_parts['project_version']);
166
167     $version = '7';
168     $version_parts = pm_parse_version($version);
169     $this->assertEquals('', $version_parts['version']);
170     $this->assertEquals('7.x', $version_parts['drupal_version']);
171     $this->assertEquals('', $version_parts['version_major']);
172     $this->assertEquals('', $version_parts['version_minor']);
173     $this->assertEquals('', $version_parts['version_patch']);
174     $this->assertEquals('', $version_parts['version_extra']);
175     $this->assertEquals('', $version_parts['project_version']);
176
177     $version = '7.x';
178     $version_parts = pm_parse_version($version);
179     $this->assertEquals('', $version_parts['version']);
180     $this->assertEquals('7.x', $version_parts['drupal_version']);
181     $this->assertEquals('', $version_parts['version_major']);
182     $this->assertEquals('', $version_parts['version_minor']);
183     $this->assertEquals('', $version_parts['version_patch']);
184     $this->assertEquals('', $version_parts['version_extra']);
185     $this->assertEquals('', $version_parts['project_version']);
186
187     $version = '7.x-1.0-beta1';
188     $version_parts = pm_parse_version($version);
189     $this->assertEquals('7.x', $version_parts['drupal_version']);
190     $this->assertEquals('1', $version_parts['version_major']);
191     $this->assertEquals('', $version_parts['version_minor']);
192     $this->assertEquals('0', $version_parts['version_patch']);
193     $this->assertEquals('beta1', $version_parts['version_extra']);
194     $this->assertEquals('1.0-beta1', $version_parts['project_version']);
195
196     $version = '7.x-1.0-beta1+30-dev';
197     $version_parts = pm_parse_version($version);
198     $this->assertEquals('7.x', $version_parts['drupal_version']);
199     $this->assertEquals('1', $version_parts['version_major']);
200     $this->assertEquals('', $version_parts['version_minor']);
201     $this->assertEquals('0', $version_parts['version_patch']);
202     $this->assertEquals('beta1', $version_parts['version_extra']);
203     $this->assertEquals('30', $version_parts['version_offset']);
204     $this->assertEquals('1.0-beta1+30-dev', $version_parts['project_version']);
205
206     $version = '7.x-1.0';
207     $version_parts = pm_parse_version($version);
208     $this->assertEquals('7.x', $version_parts['drupal_version']);
209     $this->assertEquals('1', $version_parts['version_major']);
210     $this->assertEquals('', $version_parts['version_minor']);
211     $this->assertEquals('0', $version_parts['version_patch']);
212     $this->assertEquals('', $version_parts['version_extra']);
213     $this->assertEquals('1.0', $version_parts['project_version']);
214
215     $version = '7.x-1.0+30-dev';
216     $version_parts = pm_parse_version($version);
217     $this->assertEquals('7.x', $version_parts['drupal_version']);
218     $this->assertEquals('1', $version_parts['version_major']);
219     $this->assertEquals('', $version_parts['version_minor']);
220     $this->assertEquals('0', $version_parts['version_patch']);
221     $this->assertEquals('', $version_parts['version_extra']);
222     $this->assertEquals('30', $version_parts['version_offset']);
223     $this->assertEquals('1.0+30-dev', $version_parts['project_version']);
224
225     // Since we're not on a bootstrapped site, the version string
226     // for the following cases is interpreted as a core version.
227     // Tests on a bootstrapped site are in \pmRequestCase::testVersionParser()
228     $version = '6.x';
229     $version_parts = pm_parse_version($version);
230     $this->assertEquals('6.x', $version_parts['drupal_version']);
231     $this->assertEquals('', $version_parts['version_major']);
232     $this->assertEquals('', $version_parts['version_minor']);
233     $this->assertEquals('', $version_parts['version_patch']);
234     $this->assertEquals('', $version_parts['version_extra']);
235     $this->assertEquals('', $version_parts['project_version']);
236
237     $version = '6.22';
238     $version_parts = pm_parse_version($version);
239     $this->assertEquals('6.x', $version_parts['drupal_version']);
240     $this->assertEquals('', $version_parts['version_major']);
241     $this->assertEquals('', $version_parts['version_minor']);
242     $this->assertEquals('', $version_parts['version_patch']);
243     $this->assertEquals('', $version_parts['version_extra']);
244     $this->assertEquals('', $version_parts['project_version']);
245   }
246
247   /**
248    * Tests for pm_parse_request().
249    */
250   public function testRequestParser() {
251     $request = 'devel-7.x-1.2';
252     $request = pm_parse_request($request);
253     $this->assertEquals('devel', $request['name']);
254     $this->assertEquals('7.x-1.2', $request['version']);
255
256     $request = 'field-conditional-state';
257     $request = pm_parse_request($request);
258     $this->assertEquals('field-conditional-state', $request['name']);
259     $this->assertEquals('', $request['version']);
260
261     $request = 'field-conditional-state-7.x-1.2';
262     $request = pm_parse_request($request);
263     $this->assertEquals('field-conditional-state', $request['name']);
264     $this->assertEquals('7.x-1.2', $request['version']);
265   }
266 }