(t *testing.T)
| 68 | } |
| 69 | |
| 70 | func TestIOCore(t *testing.T) { |
| 71 | temp, err := os.CreateTemp(t.TempDir(), "test.log") |
| 72 | require.NoError(t, err) |
| 73 | |
| 74 | // Drop timestamps for simpler assertions (timestamp encoding is tested |
| 75 | // elsewhere). |
| 76 | cfg := testEncoderConfig() |
| 77 | cfg.TimeKey = "" |
| 78 | |
| 79 | core := NewCore( |
| 80 | NewJSONEncoder(cfg), |
| 81 | temp, |
| 82 | InfoLevel, |
| 83 | ).With([]Field{makeInt64Field("k", 1)}) |
| 84 | defer assert.NoError(t, core.Sync(), "Expected Syncing a temp file to succeed.") |
| 85 | |
| 86 | t.Run("LevelOf", func(t *testing.T) { |
| 87 | assert.Equal(t, InfoLevel, LevelOf(core), "Incorrect Core Level") |
| 88 | }) |
| 89 | |
| 90 | if ce := core.Check(Entry{Level: DebugLevel, Message: "debug"}, nil); ce != nil { |
| 91 | ce.Write(makeInt64Field("k", 2)) |
| 92 | } |
| 93 | if ce := core.Check(Entry{Level: InfoLevel, Message: "info"}, nil); ce != nil { |
| 94 | ce.Write(makeInt64Field("k", 3)) |
| 95 | } |
| 96 | if ce := core.Check(Entry{Level: WarnLevel, Message: "warn"}, nil); ce != nil { |
| 97 | ce.Write(makeInt64Field("k", 4)) |
| 98 | } |
| 99 | |
| 100 | logged, err := os.ReadFile(temp.Name()) |
| 101 | require.NoError(t, err, "Failed to read from temp file.") |
| 102 | require.Equal( |
| 103 | t, |
| 104 | `{"level":"info","msg":"info","k":1,"k":3}`+"\n"+ |
| 105 | `{"level":"warn","msg":"warn","k":1,"k":4}`+"\n", |
| 106 | string(logged), |
| 107 | "Unexpected log output.", |
| 108 | ) |
| 109 | } |
| 110 | |
| 111 | func TestIOCoreSyncFail(t *testing.T) { |
| 112 | sink := &ztest.Discarder{} |
nothing calls this directly
no test coverage detected