LoggerTest.php #1

  • //
  • guest/
  • thomas_gray/
  • jambox/
  • main/
  • swarm/
  • tests/
  • phpunit/
  • P4Test/
  • Log/
  • LoggerTest.php
  • View
  • Commits
  • Open Download .zip Download (3 KB)
<?php
/**
 * Test methods for the P4 Log class.
 *
 * @copyright   2012 Perforce Software. All rights reserved.
 * @license     Please see LICENSE.txt in top-level folder of this distribution.
 * @version     <release>/<patch>
 */

namespace P4Test\Log;

use P4Test\TestCase;
use P4\Log\Logger;

class LoggerTest extends TestCase
{
    /**
     * Test logger manipulation.
     */
    public function testBasicOperation()
    {
        Logger::setLogger(null);
        $this->assertFalse(Logger::hasLogger());

        // expect success writing with no logger set.
        Logger::log(Logger::INFO, 'test');

        // set a bad logger.
        try {
            Logger::setLogger('bob');
            $this->fail("Expected exception setting bad logger.");
        } catch (\InvalidArgumentException $e) {
            $this->assertTrue(true);
        }

        // try setting a legit logger.
        $stream = fopen("php://temp", "a");
        $writer = new \Zend\Log\Writer\Stream($stream);
        $logger = new \Zend\Log\Logger;
        $logger->addWriter($writer);
        Logger::setLogger($logger);
        $this->assertTrue(Logger::hasLogger());
        $this->assertSame(
            $logger,
            Logger::getLogger(),
            'Expect the set logger'
        );

        // try logging.
        $logData = stream_get_contents($stream, -1, 0);
        $this->assertTrue(strlen($logData) == 0, 'Expect log to not contain data');
        Logger::log(Logger::INFO, 'test');
        $logData = stream_get_contents($stream, -1, 0);
        $this->assertTrue(strlen($logData) > 0, 'Expect log to contain data');
        $this->assertRegexp('/test/', $logData, 'Expect log message in log');

        Logger::log(null, 'something else');
        $logData = stream_get_contents($stream, -1, 0);
        $this->assertRegexp('/something else/', $logData, 'Expect second log message in log');

        // try logging an exception
        $e = new \InvalidArgumentException('poof');
        Logger::logException('my log message', $e);
        $logData = stream_get_contents($stream, -1, 0);
        $this->assertRegexp('/my log message/', $logData, 'Expect exception message in log');

        // try logging a bogus exception
        Logger::logException('bad', 'badexception');
        $logData = stream_get_contents($stream, -1, 0);
        $this->assertRegexp('/bad/', $logData, 'Expect second exception message in log');
        $this->assertNotRegexp(
            '/badexception/',
            $logData,
            'Expect second exception bad exception message to not be in log'
        );
    }
}
# Change User Description Committed
#1 18730 Liz Lam clean up code and move things around