X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs-website;a=blobdiff_plain;f=vendor%2Fdrupal%2Fconsole%2Fsrc%2FCommand%2FDebug%2FTestCommand.php;fp=vendor%2Fdrupal%2Fconsole%2Fsrc%2FCommand%2FDebug%2FTestCommand.php;h=266276311122842656b2da1036459c8dabdc78c6;hp=0000000000000000000000000000000000000000;hb=9917807b03b64faf00f6a1f29dcb6eafc454efa5;hpb=aea91e65e895364e460983b890e295aa5d5540a5 diff --git a/vendor/drupal/console/src/Command/Debug/TestCommand.php b/vendor/drupal/console/src/Command/Debug/TestCommand.php new file mode 100644 index 000000000..266276311 --- /dev/null +++ b/vendor/drupal/console/src/Command/Debug/TestCommand.php @@ -0,0 +1,194 @@ +test_discovery = $test_discovery; + parent::__construct(); + } + + + protected function configure() + { + $this + ->setName('debug:test') + ->setDescription($this->trans('commands.debug.test.description')) + ->addArgument( + 'group', + InputArgument::OPTIONAL, + $this->trans('commands.debug.test.options.group'), + null + ) + ->addOption( + 'test-class', + null, + InputOption::VALUE_OPTIONAL, + $this->trans('commands.debug.test.arguments.test-class') + ) + ->setAliases(['td']); + } + + /** + * {@inheritdoc} + */ + protected function execute(InputInterface $input, OutputInterface $output) + { + //Registers namespaces for disabled modules. + $this->test_discovery->registerTestNamespaces(); + + $testClass = $input->getOption('test-class'); + $group = $input->getArgument('group'); + + if ($testClass) { + $this->testDetail($testClass); + } else { + $this->testList($group); + } + } + + private function testDetail($test_class) + { + $testingGroups = $this->test_discovery->getTestClasses(null); + + $testDetails = null; + foreach ($testingGroups as $testing_group => $tests) { + foreach ($tests as $key => $test) { + if ($test['name'] == $test_class) { + $testDetails = $test; + break; + } + } + if ($testDetails !== null) { + break; + } + } + + $class = null; + if ($testDetails) { + $class = new \ReflectionClass($test['name']); + if (is_subclass_of($testDetails['name'], 'PHPUnit_Framework_TestCase')) { + $testDetails['type'] = 'phpunit'; + } else { + $testDetails = $this->test_discovery + ->getTestInfo($testDetails['name']); + $testDetails['type'] = 'simpletest'; + } + + $this->getIo()->comment($testDetails['name']); + + $testInfo = []; + foreach ($testDetails as $key => $value) { + $testInfo [] = [$key, $value]; + } + + $this->getIo()->table([], $testInfo); + + if ($class) { + $methods = $class->getMethods(\ReflectionMethod::IS_PUBLIC); + $this->getIo()->info($this->trans('commands.debug.test.messages.methods')); + foreach ($methods as $method) { + if ($method->class == $testDetails['name'] && strpos($method->name, 'test') === 0) { + $this->getIo()->simple($method->name); + } + } + } + } else { + $this->getIo()->error($this->trans('commands.debug.test.messages.not-found')); + } + } + + protected function testList($group) + { + $testingGroups = $this->test_discovery + ->getTestClasses(null); + + if (empty($group)) { + $tableHeader = [$this->trans('commands.debug.test.messages.group')]; + } else { + $tableHeader = [ + $this->trans('commands.debug.test.messages.class'), + $this->trans('commands.debug.test.messages.type') + ]; + + $this->getIo()->writeln( + sprintf( + '%s: %s', + $this->trans('commands.debug.test.messages.group'), + $group + ) + ); + } + + $tableRows = []; + foreach ($testingGroups as $testing_group => $tests) { + if (empty($group)) { + $tableRows[] =[$testing_group]; + continue; + } + + if (!empty($group) && $group != $testing_group) { + continue; + } + + foreach ($tests as $test) { + if (is_subclass_of($test['name'], 'PHPUnit_Framework_TestCase')) { + $test['type'] = 'phpunit'; + } else { + $test['type'] = 'simpletest'; + } + $tableRows[] =[ + $test['name'], + $test['type'] + ]; + } + } + $this->getIo()->table($tableHeader, $tableRows, 'compact'); + + if ($group) { + $this->getIo()->success( + sprintf( + $this->trans('commands.debug.test.messages.success-group'), + $group + ) + ); + } else { + $this->getIo()->success( + $this->trans('commands.debug.test.messages.success-groups') + ); + } + } +}