5 * Tests for pm parsers.
15 class pmRequestUnitCase extends UnitUnishTestCase {
18 * Tests for pm_parse_version() with semantic versioning.
20 public function testVersionParserCoreSemVer() {
21 _drush_add_commandfiles(array(DRUSH_BASE_PATH . '/commands/pm'));
23 drush_set_option('default-major', UNISH_DRUPAL_MAJOR_VERSION);
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']);
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']);
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']);
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']);
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']);
78 * Tests for pm_parse_version() with drupal version scheme for core.
80 public function testVersionParserCore() {
81 _drush_add_commandfiles(array(DRUSH_BASE_PATH . '/commands/pm'));
83 drush_set_option('default-major', UNISH_DRUPAL_MAJOR_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']);
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.
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']);
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']);
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']);
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']);
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']);
150 * Tests for pm_parse_version() with project versions.
152 public function testVersionParserContrib() {
153 _drush_add_commandfiles(array(DRUSH_BASE_PATH . '/commands/pm'));
155 drush_set_option('default-major', UNISH_DRUPAL_MAJOR_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']);
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']);
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']);
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']);
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']);
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']);
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']);
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()
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']);
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']);
248 * Tests for pm_parse_request().
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']);
256 $request = 'field-conditional-state';
257 $request = pm_parse_request($request);
258 $this->assertEquals('field-conditional-state', $request['name']);
259 $this->assertEquals('', $request['version']);
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']);