-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathroot_test.go
More file actions
133 lines (106 loc) · 2.61 KB
/
root_test.go
File metadata and controls
133 lines (106 loc) · 2.61 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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
package zlog
import (
"bytes"
"strings"
"testing"
)
func TestGlobalLogger(t *testing.T) {
// Save original logger
original := Default()
defer SetDefault(original)
// Create a buffer to capture output
var buf bytes.Buffer
// Direct write to buffer
// Create new logger with custom writer
logger := NewStructured()
logger.SetWriter(&buf)
SetDefault(logger)
// Test global functions
Debug("debug message", String("key", "value"))
Info("info message", Int("count", 42))
Warn("warn message", Bool("flag", true))
Error("error message", Float64("pi", 3.14159))
// Verify output contains expected content
output := buf.String()
if len(output) == 0 {
t.Error("No output captured")
}
// Since we're using binary format, just verify we got data
if buf.Len() < 100 {
t.Error("Output too short")
}
}
func TestGlobalSetLevel(t *testing.T) {
// Save original logger
original := Default()
defer SetDefault(original)
// Create a buffer to capture output
var buf bytes.Buffer
// Direct write to buffer
// Create new logger
logger := NewStructured()
logger.SetWriter(&buf)
SetDefault(logger)
// Set level to Error
SetLevel(LevelError)
// These should not log
buf.Reset()
Debug("debug")
Info("info")
Warn("warn")
if buf.Len() > 0 {
t.Error("Lower level messages were logged")
}
// This should log
buf.Reset()
Error("error")
if buf.Len() == 0 {
t.Error("Error message was not logged")
}
}
func TestGlobalSetWriter(t *testing.T) {
// Save original logger
original := Default()
defer SetDefault(original)
// Create new logger
logger := NewStructured()
SetDefault(logger)
// Create a buffer to capture output
var buf bytes.Buffer
// Direct write to buffer
// Set global writer
SetWriter(&buf)
// Log something
Info("test message")
// Verify output
if buf.Len() == 0 {
t.Error("No output captured after SetWriter")
}
}
func TestDefaultLogger(t *testing.T) {
// Test that default logger is initialized
logger := Default()
if logger == nil {
t.Fatal("Default logger is nil")
}
// Test that we can use it immediately
logger.Info("test")
}
func TestGlobalFatal(t *testing.T) {
if testing.Short() {
t.Skip("Skipping fatal test in short mode")
}
// Run in subprocess to test exit
if strings.Contains(strings.Join(callStack(), " "), "TestGlobalFatal") {
Fatal("fatal error", String("test", "value"))
return
}
// This test is similar to TestFatal in fatal_test.go
// It would need subprocess testing to verify exit behavior
}
// Helper to get call stack
func callStack() []string {
var stack []string
// Simplified - in real implementation would use runtime.Callers
return stack
}