-
Notifications
You must be signed in to change notification settings - Fork 428
Expand file tree
/
Copy pathtest-logging.php
More file actions
113 lines (86 loc) · 2.83 KB
/
test-logging.php
File metadata and controls
113 lines (86 loc) · 2.83 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
<?php
class MockRegularLogger extends EE\Loggers\Regular {
protected function get_runner() {
return (object) array (
'config' => array (
'debug' => true
)
);
}
protected function write( $handle, $str ) {
echo $str;
}
}
class MockQuietLogger extends EE\Loggers\Quiet {
protected function get_runner() {
return (object) array (
'config' => array (
'debug' => true
)
);
}
}
class LoggingTests extends PHPUnit_Framework_TestCase {
function testLogDebug() {
$message = 'This is a test message.';
$regularLogger = new MockRegularLogger( false );
$this->expectOutputRegex( "/Debug: {$message} \(\d+\.*\d*s\)/" );
$regularLogger->debug( $message );
$quietLogger = new MockQuietLogger();
$this->expectOutputRegex( "/Debug: {$message} \(\d+\.*\d*s\)/" );
$quietLogger->debug( $message );
}
function testLogEscaping() {
$logger = new MockRegularLogger( false );
$message = 'foo%20bar';
$this->expectOutputString( "Success: $message\n" );
$logger->success( $message );
}
function testExecutionLogger() {
// Save Runner config.
$runner = EE::get_runner();
$runner_config = new \ReflectionProperty( $runner, 'config' );
$runner_config->setAccessible( true );
$prev_config = $runner_config->getValue( $runner );
// Set debug.
$runner_config->setValue( $runner, array( 'debug' => true ) );
$logger = new EE\Loggers\Execution;
// Standard use.
$logger->info( 'info' );
$logger->info( 'info2' );
$logger->success( 'success' );
$logger->warning( 'warning' );
$logger->error( 'error' );
$logger->success( 'success2' );
$logger->warning( 'warning2' );
$logger->debug( 'debug', 'group' );
$logger->error_multi_line( array( "line11", "line12", "line13" ) );
$logger->error( 'error2' );
$logger->error_multi_line( array( "line21" ) );
$logger->debug( 'debug2', 'group2' );
$this->assertSame( "info\ninfo2\nSuccess: success\nSuccess: success2\n", $logger->stdout );
$this->assertSame( 1, preg_match( '/^'
. 'Warning: warning\nError: error\n'
. 'Warning: warning2\nDebug \(group\): debug \([0-9.]+s\)\n'
. 'Error:\nline11\nline12\nline13\n---------\n\nError: error2\n'
. 'Error:\nline21\n---------\n\nDebug \(group2\): debug2 \([0-9.]+s\)$/', $logger->stderr ) );
$logger->stdout = $logger->stderr = '';
// With output buffering.
$logger->ob_start();
echo "echo";
$logger->info( 'info' );
print "print\n";
$logger->success( 'success' );
echo "echo2\n";
$logger->error( 'error' );
echo "echo3\n";
$logger->success( 'success2' );
echo "echo4";
$logger->ob_end();
$this->assertSame( "echoinfo\nprint\nSuccess: success\necho2\necho3\nSuccess: success2\necho4", $logger->stdout );
$this->assertSame( "Error: error\n", $logger->stderr );
$logger->stdout = $logger->stderr = '';
// Restore.
$runner_config->setValue( $runner, $prev_config );
}
}