Mercurial > hg > rc1
comparison vendor/pear/console_commandline/tests/tests.inc.php @ 0:1e000243b222
vanilla 1.3.3 distro, I hope
author | Charlie Root |
---|---|
date | Thu, 04 Jan 2018 15:50:29 -0500 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:1e000243b222 |
---|---|
1 <?php | |
2 | |
3 /* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */ | |
4 | |
5 /** | |
6 * This file is part of the PEAR Console_CommandLine package. | |
7 * | |
8 * PHP version 5 | |
9 * | |
10 * LICENSE: This source file is subject to the MIT license that is available | |
11 * through the world-wide-web at the following URI: | |
12 * http://opensource.org/licenses/mit-license.php | |
13 * | |
14 * @category Console | |
15 * @package Console_CommandLine | |
16 * @author David JEAN LOUIS <izimobil@gmail.com> | |
17 * @copyright 2007 David JEAN LOUIS | |
18 * @license http://opensource.org/licenses/mit-license.php MIT License | |
19 * @version CVS: $Id$ | |
20 * @link http://pear.php.net/package/Console_CommandLine | |
21 * @since File available since release 0.1.0 | |
22 */ | |
23 | |
24 if (php_sapi_name() != 'cli') { | |
25 // tests with php-cgi need this | |
26 ini_set('include_path', ini_get('include_path') . PATH_SEPARATOR | |
27 . dirname(__FILE__) . '/../'); | |
28 } | |
29 | |
30 /** | |
31 * Required classes | |
32 */ | |
33 require_once 'Console/CommandLine.php'; | |
34 require_once 'Console/CommandLine/Renderer.php'; | |
35 require_once 'Console/CommandLine/Outputter.php'; | |
36 require_once 'Console/CommandLine/MessageProvider.php'; | |
37 | |
38 // rot13Callback() {{{ | |
39 | |
40 /** | |
41 * A dummy callback for tests purposes. | |
42 * | |
43 * @param mixed $value value provided by the user | |
44 * @param object $option the option instance | |
45 * @param object $result the result instance | |
46 * @param object $parser the parser instance | |
47 * @param array $params optional params array | |
48 * | |
49 * @return string | |
50 */ | |
51 function rot13Callback($value, $option, $result, $parser, $params=array()) | |
52 { | |
53 $ret = ''; | |
54 if (isset($params['prefix'])) { | |
55 $ret .= $params['prefix'] . '__'; | |
56 } | |
57 $ret .= str_rot13($value); | |
58 if (isset($params['suffix'])) { | |
59 $ret .= '__' . $params['suffix']; | |
60 } | |
61 return $ret; | |
62 } | |
63 | |
64 // }}} | |
65 // buildParser1() {{{ | |
66 | |
67 /** | |
68 * Build a parser instance and return it. | |
69 * | |
70 * @return object Console_CommandLine instance | |
71 */ | |
72 function buildParser1() | |
73 { | |
74 $parser = new Console_CommandLine(); | |
75 $parser->name = 'some_program'; | |
76 $parser->version = '0.1.0'; | |
77 $parser->description = 'Description of our parser goes here...'; | |
78 | |
79 // add options | |
80 $parser->addOption('true', array( | |
81 'short_name' => '-t', | |
82 'long_name' => '--true', | |
83 'action' => 'StoreTrue', | |
84 'description' => 'test the StoreTrue action' | |
85 )); | |
86 $parser->addOption('false', array( | |
87 'short_name' => '-f', | |
88 'long_name' => '--false', | |
89 'action' => 'StoreFalse', | |
90 'description' => 'test the StoreFalse action' | |
91 )); | |
92 $parser->addOption('int', array( | |
93 'long_name' => '--int', | |
94 'action' => 'StoreInt', | |
95 'description' => 'test the StoreInt action', | |
96 'help_name' => 'INT', | |
97 'default' => 1 | |
98 )); | |
99 $parser->addOption('float', array( | |
100 'long_name' => '--float', | |
101 'action' => 'StoreFloat', | |
102 'description' => 'test the StoreFloat action', | |
103 'help_name' => 'FLOAT', | |
104 'default' => 1.0 | |
105 )); | |
106 $parser->addOption('string', array( | |
107 'short_name' => '-s', | |
108 'long_name' => '--string', | |
109 'action' => 'StoreString', | |
110 'description' => 'test the StoreString action', | |
111 'help_name' => 'STRING', | |
112 'choices' => array('foo', 'bar', 'baz') | |
113 )); | |
114 $parser->addOption('counter', array( | |
115 'short_name' => '-c', | |
116 'long_name' => '--counter', | |
117 'action' => 'Counter', | |
118 'description' => 'test the Counter action' | |
119 )); | |
120 $parser->addOption('callback', array( | |
121 'long_name' => '--callback', | |
122 'action' => 'Callback', | |
123 'description' => 'test the Callback action', | |
124 'callback' => 'rot13Callback', | |
125 'action_params' => array('prefix' => 'foo', 'suffix' => 'bar') | |
126 )); | |
127 $parser->addOption('array', array( | |
128 'short_name' => '-a', | |
129 'long_name' => '--array', | |
130 'default' => array('spam', 'egg'), | |
131 'action' => 'StoreArray', | |
132 'help_name' => 'ARRAY', | |
133 'description' => 'test the StoreArray action' | |
134 )); | |
135 $parser->addOption('password', array( | |
136 'short_name' => '-p', | |
137 'long_name' => '--password', | |
138 'action' => 'Password', | |
139 'description' => 'test the Password action' | |
140 )); | |
141 $parser->addArgument('simple', array( | |
142 'description' => 'test a simple argument' | |
143 )); | |
144 $parser->addArgument('multiple', array( | |
145 'description' => 'test a multiple argument', | |
146 'multiple' => true, | |
147 'optional' => true | |
148 )); | |
149 return $parser; | |
150 } | |
151 | |
152 // }}} | |
153 // buildParser2() {{{ | |
154 | |
155 /** | |
156 * Build a parser instance and return it. | |
157 * | |
158 * @return object Console_CommandLine instance | |
159 */ | |
160 function buildParser2() | |
161 { | |
162 $parser = new Console_CommandLine(); | |
163 $parser->name = 'some_program'; | |
164 $parser->version = '0.1.0'; | |
165 $parser->description = 'Description of our parser goes here...'; | |
166 | |
167 // add general options | |
168 $parser->addOption('verbose', array( | |
169 'short_name' => '-v', | |
170 'long_name' => '--verbose', | |
171 'action' => 'StoreTrue', | |
172 'description' => 'verbose mode' | |
173 )); | |
174 $parser->addOption('logfile', array( | |
175 'short_name' => '-l', | |
176 'long_name' => '--logfile', | |
177 'action' => 'StoreString', | |
178 'description' => 'path to logfile' | |
179 )); | |
180 | |
181 // install subcommand | |
182 $cmd1 = $parser->addCommand('install', array( | |
183 'description' => 'install given package', | |
184 'aliases' => array('inst', 'instbis'), | |
185 )); | |
186 $cmd1->addOption('force', array( | |
187 'short_name' => '-f', | |
188 'long_name' => '--force', | |
189 'action' => 'StoreTrue', | |
190 'description' => 'force installation' | |
191 )); | |
192 $cmd1->addArgument('package', array( | |
193 'description' => 'package to install' | |
194 )); | |
195 | |
196 // uninstall subcommand | |
197 $cmd2 = $parser->addCommand('uninstall', array( | |
198 'description' => 'uninstall given package' | |
199 )); | |
200 $cmd2->addArgument('package', array( | |
201 'description' => 'package to uninstall' | |
202 )); | |
203 return $parser; | |
204 } | |
205 | |
206 // }}} | |
207 // buildParser3() {{{ | |
208 | |
209 /** | |
210 * Build a parser instance and return it. | |
211 * | |
212 * @return object Console_CommandLine instance | |
213 */ | |
214 function buildParser3() | |
215 { | |
216 $parser = new Console_CommandLine(); | |
217 $parser->name = 'some_program'; | |
218 $parser->version = '0.1.0'; | |
219 $parser->description = 'Description of our parser goes here...'; | |
220 // we force options default values | |
221 $parser->force_options_defaults = true; | |
222 | |
223 // add options | |
224 $parser->addOption('true', array( | |
225 'short_name' => '-t', | |
226 'long_name' => '--true', | |
227 'action' => 'StoreTrue', | |
228 'description' => 'test the StoreTrue action', | |
229 )); | |
230 $parser->addOption('false', array( | |
231 'short_name' => '-f', | |
232 'long_name' => '--false', | |
233 'action' => 'StoreFalse', | |
234 'description' => 'test the StoreFalse action', | |
235 )); | |
236 $parser->addOption('int', array( | |
237 'long_name' => '--int', | |
238 'action' => 'StoreInt', | |
239 'description' => 'test the StoreInt action', | |
240 'help_name' => 'INT', | |
241 )); | |
242 $parser->addOption('float', array( | |
243 'long_name' => '--float', | |
244 'action' => 'StoreFloat', | |
245 'description' => 'test the StoreFloat action', | |
246 'help_name' => 'FLOAT', | |
247 )); | |
248 $parser->addOption('string', array( | |
249 'short_name' => '-s', | |
250 'long_name' => '--string', | |
251 'action' => 'StoreString', | |
252 'description' => 'test the StoreString action', | |
253 'help_name' => 'STRING', | |
254 'choices' => array('foo', 'bar', 'baz') | |
255 )); | |
256 $parser->addOption('counter', array( | |
257 'short_name' => '-c', | |
258 'long_name' => '--counter', | |
259 'action' => 'Counter', | |
260 'description' => 'test the Counter action' | |
261 )); | |
262 $parser->addOption('callback', array( | |
263 'long_name' => '--callback', | |
264 'action' => 'Callback', | |
265 'description' => 'test the Callback action', | |
266 'callback' => 'rot13Callback', | |
267 'action_params' => array('prefix' => 'foo', 'suffix' => 'bar') | |
268 )); | |
269 $parser->addOption('array', array( | |
270 'short_name' => '-a', | |
271 'long_name' => '--array', | |
272 'action' => 'StoreArray', | |
273 'help_name' => 'ARRAY', | |
274 'description' => 'test the StoreArray action' | |
275 )); | |
276 $parser->addOption('password', array( | |
277 'short_name' => '-p', | |
278 'long_name' => '--password', | |
279 'action' => 'Password', | |
280 'description' => 'test the Password action' | |
281 )); | |
282 return $parser; | |
283 } | |
284 | |
285 // }}} | |
286 // {{{ buildParser4() | |
287 | |
288 /** | |
289 * Build a parser instance and return it. | |
290 * | |
291 * For testing custom messages. | |
292 * | |
293 * @return object Console_CommandLine instance | |
294 */ | |
295 function buildParser4() | |
296 { | |
297 $parser = new Console_CommandLine(array( | |
298 'messages' => array( | |
299 'INVALID_SUBCOMMAND' => 'Only "upgrade" is supported.', | |
300 ), | |
301 )); | |
302 $parser->name = 'some_program'; | |
303 $parser->version = '0.1.0'; | |
304 $parser->description = 'Description of our parser goes here...'; | |
305 | |
306 // some subcommand | |
307 $cmd1 = $parser->addCommand('upgrade', array( | |
308 'description' => 'upgrade given package', | |
309 'aliases' => array('up'), | |
310 'messages' => array( | |
311 'ARGUMENT_REQUIRED' => 'Package name is required.', | |
312 'OPTION_VALUE_REQUIRED' => 'Option requires value.', | |
313 'OPTION_VALUE_UNEXPECTED' => 'Option should not have a value.', | |
314 'OPTION_UNKNOWN' => 'Mysterious option encountered.', | |
315 ), | |
316 )); | |
317 // add option | |
318 $cmd1->addOption('state', array( | |
319 'short_name' => '-s', | |
320 'long_name' => '--state', | |
321 'action' => 'StoreString', | |
322 'choices' => array('stable', 'beta'), | |
323 'description' => 'accepted package states', | |
324 'messages' => array( | |
325 'OPTION_VALUE_NOT_VALID' => 'Valid states are "stable" and "beta".', | |
326 ), | |
327 )); | |
328 // add another option | |
329 $cmd1->addOption('dry_run', array( | |
330 'short_name' => '-d', | |
331 'long_name' => '--dry-run', | |
332 'action' => 'StoreTrue', | |
333 'description' => 'dry run', | |
334 )); | |
335 // add argument | |
336 $cmd1->addArgument('package', array( | |
337 'description' => 'package to upgrade' | |
338 )); | |
339 | |
340 return $parser; | |
341 } | |
342 | |
343 // }}} | |
344 // CustomRenderer() {{{ | |
345 | |
346 /** | |
347 * Some custom renderer for tests purposes. | |
348 * | |
349 * @category Console | |
350 * @package Console_CommandLine | |
351 * @author David JEAN LOUIS <izimobil@gmail.com> | |
352 * @copyright 2007 David JEAN LOUIS | |
353 * @license http://opensource.org/licenses/mit-license.php MIT License | |
354 * @version Release: @package_version@ | |
355 * @link http://pear.php.net/package/Console_CommandLine | |
356 * @since File available since release 0.1.0 | |
357 */ | |
358 class CustomRenderer implements Console_CommandLine_Renderer | |
359 { | |
360 // usage() {{{ | |
361 | |
362 /** | |
363 * Return the full usage message | |
364 * | |
365 * @return string the usage message | |
366 * @access public | |
367 */ | |
368 public function usage() | |
369 { | |
370 return __METHOD__ . '()'; | |
371 } | |
372 // }}} | |
373 // error() {{{ | |
374 | |
375 /** | |
376 * Return a formatted error message | |
377 * | |
378 * @param string $error the error message to format | |
379 * | |
380 * @return string the error string | |
381 * @access public | |
382 */ | |
383 public function error($error) | |
384 { | |
385 return __METHOD__ . "($error)"; | |
386 } | |
387 | |
388 // }}} | |
389 // version() {{{ | |
390 | |
391 /** | |
392 * Return the program version string | |
393 * | |
394 * @return string the version string | |
395 * @access public | |
396 */ | |
397 public function version() | |
398 { | |
399 return __METHOD__ . '()'; | |
400 } | |
401 | |
402 // }}} | |
403 } | |
404 | |
405 // }}} | |
406 // CustomOutputter() {{{ | |
407 | |
408 /** | |
409 * Some custom outputter for tests purposes. | |
410 * | |
411 * @category Console | |
412 * @package Console_CommandLine | |
413 * @author David JEAN LOUIS <izimobil@gmail.com> | |
414 * @copyright 2007 David JEAN LOUIS | |
415 * @license http://opensource.org/licenses/mit-license.php MIT License | |
416 * @version Release: @package_version@ | |
417 * @link http://pear.php.net/package/Console_CommandLine | |
418 * @since File available since release 0.1.0 | |
419 */ | |
420 class CustomOutputter implements Console_CommandLine_Outputter | |
421 { | |
422 // stdout() {{{ | |
423 | |
424 /** | |
425 * Called for stdout messages. | |
426 * | |
427 * @param string $msg the message to output | |
428 * | |
429 * @return void | |
430 * @access public | |
431 */ | |
432 public function stdout($msg) | |
433 { | |
434 echo "STDOUT >> $msg\n"; | |
435 } | |
436 | |
437 // }}} | |
438 // stderr() {{{ | |
439 | |
440 /** | |
441 * Called for stderr messages. | |
442 * | |
443 * @param string $msg the message to output | |
444 * | |
445 * @return void | |
446 * @access public | |
447 */ | |
448 public function stderr($msg) | |
449 { | |
450 echo "STDERR >> $msg\n"; | |
451 } | |
452 | |
453 // }}} | |
454 } | |
455 | |
456 // }}} | |
457 // CustomMessageProvider() {{{ | |
458 | |
459 /** | |
460 * Some custom message provider for tests purposes. | |
461 * | |
462 * @category Console | |
463 * @package Console_CommandLine | |
464 * @author David JEAN LOUIS <izimobil@gmail.com> | |
465 * @copyright 2007 David JEAN LOUIS | |
466 * @license http://opensource.org/licenses/mit-license.php MIT License | |
467 * @version Release: @package_version@ | |
468 * @link http://pear.php.net/package/Console_CommandLine | |
469 * @since File available since release 0.1.0 | |
470 */ | |
471 class CustomMessageProvider implements Console_CommandLine_MessageProvider | |
472 { | |
473 // get() {{{ | |
474 | |
475 /** | |
476 * Retrieve the given string identifier corresponding message. | |
477 * | |
478 * @param string $code the string identifier of the message | |
479 * @param array $vars an array of template variables | |
480 * | |
481 * @return string | |
482 * @access public | |
483 */ | |
484 public function get($code, $vars = array()) | |
485 { | |
486 return $code; | |
487 } | |
488 | |
489 // }}} | |
490 } | |
491 | |
492 // }}} | |
493 | |
494 ?> |