/**
  * 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;
 }
Ejemplo n.º 2
0
 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());
 }
Ejemplo n.º 3
0
 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]);
 }
Ejemplo n.º 4
0
 public function testGetConsoleUsage()
 {
     $expected = ['get contributors' => 'get contributors list'];
     $consoleAdapter = Console::detectBestAdapter();
     $this->assertEquals($expected, $this->module->getConsoleUsage(new $consoleAdapter()));
 }