output = new BufferedOutput(); //$this->output->setVerbosity(OutputInterface::VERBOSITY_VERY_VERBOSE); $this->logger = new Logger($this->output); } public static function logTestValues() { /** * Use TEST_ALL_LOG_LEVELS to ensure that output is the same * in instances where the output does not vary by log level. */ $TEST_ALL_LOG_LEVELS = [ OutputInterface::VERBOSITY_DEBUG, OutputInterface::VERBOSITY_VERY_VERBOSE, OutputInterface::VERBOSITY_VERBOSE, OutputInterface::VERBOSITY_NORMAL ]; // Tests that return the same value for multiple inputs // may use the expandProviderDataArrays method, and list // repeated scalars as array values. All permutations of // all array items will be calculated, and one test will // be generated for each one. return TestDataPermuter::expandProviderDataArrays([ [ '\Consolidation\Log\UnstyledLogOutputStyler', $TEST_ALL_LOG_LEVELS, LogLevel::ERROR, 'Do not enter - wrong way.', ' [error] Do not enter - wrong way.', ], [ '\Consolidation\Log\UnstyledLogOutputStyler', $TEST_ALL_LOG_LEVELS, LogLevel::WARNING, 'Steep grade.', ' [warning] Steep grade.', ], [ '\Consolidation\Log\UnstyledLogOutputStyler', [ OutputInterface::VERBOSITY_DEBUG, OutputInterface::VERBOSITY_VERY_VERBOSE, OutputInterface::VERBOSITY_VERBOSE, ], LogLevel::NOTICE, 'No loitering.', ' [notice] No loitering.', ], [ '\Consolidation\Log\UnstyledLogOutputStyler', OutputInterface::VERBOSITY_NORMAL, LogLevel::NOTICE, 'No loitering.', '', ], [ '\Consolidation\Log\UnstyledLogOutputStyler', OutputInterface::VERBOSITY_DEBUG, LogLevel::INFO, 'Scenic route.', ' [info] Scenic route.', ], [ '\Consolidation\Log\UnstyledLogOutputStyler', OutputInterface::VERBOSITY_DEBUG, LogLevel::DEBUG, 'Counter incremented.', ' [debug] Counter incremented.', ], [ '\Consolidation\Log\UnstyledLogOutputStyler', [ OutputInterface::VERBOSITY_VERY_VERBOSE, OutputInterface::VERBOSITY_VERBOSE, OutputInterface::VERBOSITY_NORMAL ], LogLevel::DEBUG, 'Counter incremented.', '', ], [ '\Consolidation\Log\UnstyledLogOutputStyler', $TEST_ALL_LOG_LEVELS, ConsoleLogLevel::SUCCESS, 'It worked!', ' [success] It worked!', ], [ '\Consolidation\Log\LogOutputStyler', OutputInterface::VERBOSITY_NORMAL, ConsoleLogLevel::SUCCESS, 'It worked!', ' [success] It worked!', ], [ '\Consolidation\Log\SymfonyLogOutputStyler', OutputInterface::VERBOSITY_DEBUG, LogLevel::WARNING, 'Steep grade.', "\n [WARNING] Steep grade.", ], [ '\Consolidation\Log\SymfonyLogOutputStyler', OutputInterface::VERBOSITY_DEBUG, LogLevel::NOTICE, 'No loitering.', "\n ! [NOTE] No loitering.", ], [ '\Consolidation\Log\SymfonyLogOutputStyler', OutputInterface::VERBOSITY_DEBUG, LogLevel::INFO, 'Scenic route.', "\n ! [NOTE] Scenic route.", ], [ '\Consolidation\Log\SymfonyLogOutputStyler', OutputInterface::VERBOSITY_DEBUG, LogLevel::DEBUG, 'Counter incremented.', "\n ! [NOTE] Counter incremented.", ], [ '\Consolidation\Log\SymfonyLogOutputStyler', OutputInterface::VERBOSITY_NORMAL, ConsoleLogLevel::SUCCESS, 'It worked!', "\n [OK] It worked!", ], ]); } /** * This is our only test method. It accepts all of the * permuted data from the data provider, and runs one * test on each one. * * @dataProvider logTestValues */ function testLogging($styleClass, $verbocity, $level, $message, $expected) { $logStyler = new $styleClass; $this->logger->setLogOutputStyler($logStyler); $this->output->setVerbosity($verbocity); $this->logger->log($level, $message); $outputText = rtrim($this->output->fetch(), "\n\r\t "); $this->assertEquals($expected, $outputText); } }