X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs-website;a=blobdiff_plain;f=vendor%2Fbehat%2Fbehat%2Fsrc%2FBehat%2FBehat%2FDefinition%2FPrinter%2FConsoleDefinitionInformationPrinter.php;fp=vendor%2Fbehat%2Fbehat%2Fsrc%2FBehat%2FBehat%2FDefinition%2FPrinter%2FConsoleDefinitionInformationPrinter.php;h=d690982ee1ea5963ddb45fe3038b0b93afd69f09;hp=0000000000000000000000000000000000000000;hb=1270d9129ce8f27c9b28b10518e32132c58e0aca;hpb=c27c0f0cdaa3f354b1fe54a56ae7e854be6e3f68 diff --git a/vendor/behat/behat/src/Behat/Behat/Definition/Printer/ConsoleDefinitionInformationPrinter.php b/vendor/behat/behat/src/Behat/Behat/Definition/Printer/ConsoleDefinitionInformationPrinter.php new file mode 100644 index 000000000..d690982ee --- /dev/null +++ b/vendor/behat/behat/src/Behat/Behat/Definition/Printer/ConsoleDefinitionInformationPrinter.php @@ -0,0 +1,147 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Behat\Behat\Definition\Printer; + +use Behat\Behat\Definition\Definition; +use Behat\Testwork\Suite\Suite; + +/** + * Prints definitions with full information about them. + * + * @author Konstantin Kudryashov + */ +final class ConsoleDefinitionInformationPrinter extends ConsoleDefinitionPrinter +{ + /** + * @var null|string + */ + private $searchCriterion; + + /** + * Sets search criterion. + * + * @param string $criterion + */ + public function setSearchCriterion($criterion) + { + $this->searchCriterion = $criterion; + } + + /** + * {@inheritdoc} + */ + public function printDefinitions(Suite $suite, $definitions) + { + $search = $this->searchCriterion; + $output = array(); + + foreach ($definitions as $definition) { + $definition = $this->translateDefinition($suite, $definition); + $pattern = $definition->getPattern(); + + if (null !== $search && false === mb_strpos($pattern, $search, 0, 'utf8')) { + continue; + } + + $lines = array_merge( + $this->extractHeader($suite, $definition), + $this->extractDescription($suite, $definition), + $this->extractFooter($suite, $definition) + ); + + $output[] = implode(PHP_EOL, $lines) . PHP_EOL; + } + + $this->write(rtrim(implode(PHP_EOL, $output))); + } + + /** + * Extracts the formatted header from the definition. + * + * @param Suite $suite + * @param Definition $definition + * + * @return string[] + */ + private function extractHeader(Suite $suite, Definition $definition) + { + $pattern = $definition->getPattern(); + $lines = array(); + $lines[] = strtr( + '{suite} | {type} {regex}', array( + '{suite}' => $suite->getName(), + '{type}' => $this->getDefinitionType($definition), + '{regex}' => $pattern, + ) + ); + + return $lines; + } + + /** + * Extracts the formatted description from the definition. + * + * @param Suite $suite + * @param Definition $definition + * + * @return string[] + */ + private function extractDescription(Suite $suite, Definition $definition) + { + $definition = $this->translateDefinition($suite, $definition); + + $lines = array(); + if ($description = $definition->getDescription()) { + foreach (explode("\n", $description) as $descriptionLine) { + $lines[] = strtr( + '{space}| {description}', array( + '{space}' => str_pad('', mb_strlen($suite->getName(), 'utf8') + 1), + '{description}' => $descriptionLine + ) + ); + } + } + + return $lines; + } + + /** + * Extracts the formatted footer from the definition. + * + * @param Suite $suite + * @param Definition $definition + * + * @return string[] + */ + private function extractFooter(Suite $suite, Definition $definition) + { + $lines = array(); + $lines[] = strtr( + '{space}| at `{path}`', array( + '{space}' => str_pad('', mb_strlen($suite->getName(), 'utf8') + 1), + '{path}' => $definition->getPath() + ) + ); + + if ($this->isVerbose()) { + $lines[] = strtr( + '{space}| on `{filepath}[{start}:{end}]`', array( + '{space}' => str_pad('', mb_strlen($suite->getName(), 'utf8') + 1), + '{filepath}' => $definition->getReflection()->getFileName(), + '{start}' => $definition->getReflection()->getStartLine(), + '{end}' => $definition->getReflection()->getEndLine() + ) + ); + } + + return $lines; + } +}