This repository has been archived on 2025-01-19. You can view files and clone it, but cannot push or open issues or pull requests.
drupalcampbristol/vendor/consolidation/log/tests/testLoggerVerbosityAndStyles.php
2018-11-23 12:29:20 +00:00

165 lines
4.7 KiB
PHP

<?php
namespace Consolidation\Log;
use Psr\Log\LogLevel;
use Symfony\Component\Console\Output\BufferedOutput;
use Symfony\Component\Console\Output\OutputInterface;
use Consolidation\TestUtils\TestDataPermuter;
class LoggerVerbosityAndStyleTests extends \PHPUnit_Framework_TestCase
{
protected $output;
protected $logger;
function setup() {
$this->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);
}
}