/** * Create and return a Console adapter instance. * In case we're not in a Console environment, return a dummy stdClass object. * * In order to disable adapter auto-detection and use a specific adapter (and charset), * add the following fields to application configuration, for example: * * 'console' => array( * 'adapter' => 'MyConsoleAdapter', // always use this console adapter * 'charset' => 'MyConsoleCharset', // always use this console charset * ), * 'service_manager' => array( * 'invokables' => array( * 'MyConsoleAdapter' => 'Zend\Console\Adapter\Windows', * 'MyConsoleCharset' => 'Zend\Console\Charset\DESCG', * ) * ) * * @param ServiceLocatorInterface $serviceLocator * @return AdapterInterface|stdClass */ public function createService(ServiceLocatorInterface $serviceLocator) { // First, check if we're actually in a Console environment if (!Console::isConsole()) { // SM factory cannot currently return null, so we return dummy object return new stdClass(); } // Read app config and determine Console adapter to use $config = $serviceLocator->get('Config'); if (!empty($config['console']) && !empty($config['console']['adapter'])) { // use the adapter supplied in application config $adapter = $serviceLocator->get($config['console']['adapter']); } else { // try to detect best console adapter $adapter = Console::detectBestAdapter(); $adapter = new $adapter(); } // check if we have a valid console adapter if (!$adapter instanceof AdapterInterface) { // SM factory cannot currently return null, so we convert it to dummy object return new stdClass(); } // Optionally, change Console charset if (!empty($config['console']) && !empty($config['console']['charset'])) { // use the charset supplied in application config $charset = $serviceLocator->get($config['console']['charset']); $adapter->setCharset($charset); } return $adapter; }
public function testCanTestIsConsole() { $this->assertTrue(Console::isConsole()); $className = Console::detectBestAdapter(); $adpater = new $className(); $this->assertTrue($adpater instanceof Adapter\AdapterInterface); Console::overrideIsConsole(false); $this->assertFalse(Console::isConsole()); $this->assertEquals(null, Console::detectBestAdapter()); }
public function testCollectContributorsInfoFailed() { $adapter = Console::detectBestAdapter(); $consoleAdapter = new $adapter(); $controller = new ConsoleController($consoleAdapter, ['console' => ['contributors' => ['output' => 'foo.pson']]], $this->httpClient); $class = new ReflectionClass('Application\\Controller\\ConsoleController'); $method = $class->getMethod('collectContributorsInfo'); $method->setAccessible(true); $contributors = [0 => ['login' => '*samsonasik*']]; $method->invokeArgs($controller, [$contributors, 3, 100]); }
public function testGetConsoleUsage() { $expected = ['get contributors' => 'get contributors list']; $consoleAdapter = Console::detectBestAdapter(); $this->assertEquals($expected, $this->module->getConsoleUsage(new $consoleAdapter())); }