From: Gunnar Wrobel Date: Tue, 14 Dec 2010 07:58:01 +0000 (+0100) Subject: Add some options to the cli interface. No implementation yet. Fix unit tests. X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=e453ef11df0b3a78bbe3096e5158fac0c99e083b;p=horde.git Add some options to the cli interface. No implementation yet. Fix unit tests. --- diff --git a/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Cli.php b/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Cli.php index e87d640dc..d118a2ce6 100644 --- a/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Cli.php +++ b/framework/Kolab_Storage/lib/Horde/Kolab/Storage/Cli.php @@ -50,7 +50,16 @@ class Horde_Kolab_Storage_Cli $cli = $parameters['output']; } list($options, $arguments) = $parser->parseArgs(); - $cli->message('OK'); + if (count($arguments) == 0) { + $parser->printHelp(); + } else { + switch ($arguments[0]) { + case 'folder': + break; + default: + $parser->printHelp(); + } + } } static private function _prepareParser(array $parameters = array()) @@ -60,9 +69,28 @@ class Horde_Kolab_Storage_Cli } else { $parser_class = $parameters['parser']['class']; } + $options = array( + new Horde_Argv_Option( + '-d', + '--driver', + array( + 'action' => 'store', + 'choices' => array('horde', 'php', 'pear', 'roundcube', 'mock'), + 'help' => Horde_Kolab_Storage_Translation::t('The IMAP driver that should be used') + ) + ), + ); + $usage = Horde_Kolab_Storage_Translation::t( + "[options] MODULE ACTION\nPossible MODULEs and ACTIONs: + + folder - Handle folders. + list [default] - List the folders +" + ); return new $parser_class( array( - 'usage' => '%prog ' . _("[options]") + 'usage' => '%prog ' . $usage, + 'optionList' => $options ) ); } diff --git a/framework/Kolab_Storage/test/Horde/Kolab/Storage/Autoload.php b/framework/Kolab_Storage/test/Horde/Kolab/Storage/Autoload.php index 9374960f1..3ec0be20f 100644 --- a/framework/Kolab_Storage/test/Horde/Kolab/Storage/Autoload.php +++ b/framework/Kolab_Storage/test/Horde/Kolab/Storage/Autoload.php @@ -16,3 +16,6 @@ require_once 'Horde/Test/Autoload.php'; /** Catch strict standards */ error_reporting(E_ALL | E_STRICT); + +/** Load the basic test definition */ +require_once dirname(__FILE__) . '/TestCase.php'; diff --git a/framework/Kolab_Storage/test/Horde/Kolab/Storage/Server/DriverTest.php b/framework/Kolab_Storage/test/Horde/Kolab/Storage/Server/DriverTest.php index 87d228e62..27b4a4db5 100644 --- a/framework/Kolab_Storage/test/Horde/Kolab/Storage/Server/DriverTest.php +++ b/framework/Kolab_Storage/test/Horde/Kolab/Storage/Server/DriverTest.php @@ -42,7 +42,7 @@ class Horde_Kolab_Storage_Server_DriverTest extends PHPUnit_Framework_TestCase public function setUp() { - if ($this->sharedFixture === null) { + if (!isset($this->sharedFixture)) { $this->markTestSkipped('Testing of a running server skipped. No configuration fixture available.'); return; } diff --git a/framework/Kolab_Storage/test/Horde/Kolab/Storage/TestCase.php b/framework/Kolab_Storage/test/Horde/Kolab/Storage/TestCase.php new file mode 100644 index 000000000..9d209361a --- /dev/null +++ b/framework/Kolab_Storage/test/Horde/Kolab/Storage/TestCase.php @@ -0,0 +1,46 @@ + + * @license http://www.fsf.org/copyleft/lgpl.html LGPL + * @link http://pear.horde.org/index.php?package=Kolab_Storage + */ + +/** + * Basic test case. + * + * Copyright 2010 The Horde Project (http://www.horde.org/) + * + * See the enclosed file COPYING for license instorageion (LGPL). If you + * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html. + * + * @category Kolab + * @package Kolab_Storage + * @subpackage UnitTests + * @author Gunnar Wrobel + * @license http://www.fsf.org/copyleft/lgpl.html LGPL + * @link http://pear.horde.org/index.php?package=Kolab_Storage + */ +class Horde_Kolab_Storage_TestCase +extends PHPUnit_Framework_TestCase +{ + protected function runCli() + { + ob_start(); + Horde_Kolab_Storage_Cli::main( + array( + 'output' => new Horde_Test_Stub_Cli(), + 'parser' => array('class' => 'Horde_Test_Stub_Parser') + ) + ); + $output = ob_get_contents(); + ob_end_clean(); + return $output; + } +} diff --git a/framework/Kolab_Storage/test/Horde/Kolab/Storage/Unit/Cli/ModuleTest.php b/framework/Kolab_Storage/test/Horde/Kolab/Storage/Unit/Cli/ModuleTest.php new file mode 100644 index 000000000..478e19e3d --- /dev/null +++ b/framework/Kolab_Storage/test/Horde/Kolab/Storage/Unit/Cli/ModuleTest.php @@ -0,0 +1,48 @@ + + * @license http://www.fsf.org/copyleft/lgpl.html LGPL + * @link http://pear.horde.org/index.php?package=Kolab_Storage + */ + +/** + * Prepare the test setup. + */ +require_once dirname(__FILE__) . '/../../Autoload.php'; + +/** + * Test the modules of the CLI interface. + * + * Copyright 2010 The Horde Project (http://www.horde.org/) + * + * See the enclosed file COPYING for license information (LGPL). If you + * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html. + * + * @category Kolab + * @package Kolab_Storage + * @subpackage UnitTests + * @author Gunnar Wrobel + * @license http://www.fsf.org/copyleft/lgpl.html LGPL + * @link http://pear.horde.org/index.php?package=Kolab_Storage + */ +class Horde_Kolab_Storage_Unit_Cli_ModuleTest +extends Horde_Kolab_Storage_TestCase +{ + public function testFolderModule() + { + $_SERVER['argv'] = array( + 'kolab-storage' + ); + $this->assertRegExp( + '/folder - Handle folders/', + $this->runCli() + ); + } +} diff --git a/framework/Kolab_Storage/test/Horde/Kolab/Storage/Unit/Cli/OptionsTest.php b/framework/Kolab_Storage/test/Horde/Kolab/Storage/Unit/Cli/OptionsTest.php new file mode 100644 index 000000000..7775aa71f --- /dev/null +++ b/framework/Kolab_Storage/test/Horde/Kolab/Storage/Unit/Cli/OptionsTest.php @@ -0,0 +1,59 @@ + + * @license http://www.fsf.org/copyleft/lgpl.html LGPL + * @link http://pear.horde.org/index.php?package=Kolab_Storage + */ + +/** + * Prepare the test setup. + */ +require_once dirname(__FILE__) . '/../../Autoload.php'; + +/** + * Test the options of the CLI interface. + * + * Copyright 2010 The Horde Project (http://www.horde.org/) + * + * See the enclosed file COPYING for license information (LGPL). If you + * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html. + * + * @category Kolab + * @package Kolab_Storage + * @subpackage UnitTests + * @author Gunnar Wrobel + * @license http://www.fsf.org/copyleft/lgpl.html LGPL + * @link http://pear.horde.org/index.php?package=Kolab_Storage + */ +class Horde_Kolab_Storage_Unit_Cli_OptionsTest +extends Horde_Kolab_Storage_TestCase +{ + public function testOptionHelp() + { + $_SERVER['argv'] = array( + 'kolab-storage' + ); + $this->assertRegExp( + '/-h,[ ]*--help[ ]*show this help message and exit/', + $this->runCli() + ); + } + + public function testOptionDriver() + { + $_SERVER['argv'] = array( + 'kolab-storage' + ); + $this->assertRegExp( + '/-d[ ]*DRIVER,[ ]*--driver=DRIVER/', + $this->runCli() + ); + } +} diff --git a/framework/Kolab_Storage/test/Horde/Kolab/Storage/Unit/CliTest.php b/framework/Kolab_Storage/test/Horde/Kolab/Storage/Unit/CliTest.php index eca945dae..938cfadb8 100644 --- a/framework/Kolab_Storage/test/Horde/Kolab/Storage/Unit/CliTest.php +++ b/framework/Kolab_Storage/test/Horde/Kolab/Storage/Unit/CliTest.php @@ -33,21 +33,22 @@ require_once dirname(__FILE__) . '/../Autoload.php'; * @link http://pear.horde.org/index.php?package=Kolab_Storage */ class Horde_Kolab_Storage_Unit_CliTest -extends PHPUnit_Framework_TestCase +extends Horde_Kolab_Storage_TestCase { public function testCli() { $_SERVER['argv'] = array( 'kolab-storage' ); - ob_start(); - Horde_Kolab_Storage_Cli::main( - array( - 'output' => new Horde_Test_Stub_Cli(), - 'parser' => array('class' => 'Horde_Test_Stub_Parser') - ) + $this->runCli(); + } + + public function testFolderList() + { + $_SERVER['argv'] = array( + 'kolab-storage', + 'list' ); - $output = ob_get_contents(); - ob_end_clean(); + $this->assertContains('INBOX', $this->runCli()); } }