| 190 | } |
| 191 | |
| 192 | func assertLogsJSON(t testing.TB, path string, levelExpected ...string) { |
| 193 | t.Helper() |
| 194 | |
| 195 | data, err := os.ReadFile(path) |
| 196 | require.NoError(t, err) |
| 197 | |
| 198 | if len(levelExpected)%2 != 0 { |
| 199 | t.Errorf("levelExpected must be a list of level-message pairs") |
| 200 | return |
| 201 | } |
| 202 | |
| 203 | logs := strings.Split(strings.TrimSpace(string(data)), "\n") |
| 204 | if !assert.Len(t, logs, len(levelExpected)/2) { |
| 205 | t.Log(string(data)) |
| 206 | t.FailNow() |
| 207 | } |
| 208 | for i, log := range logs { |
| 209 | var entry struct { |
| 210 | Level string `json:"level"` |
| 211 | Message string `json:"msg"` |
| 212 | } |
| 213 | err := json.NewDecoder(strings.NewReader(log)).Decode(&entry) |
| 214 | require.NoError(t, err) |
| 215 | require.Equal(t, levelExpected[2*i], entry.Level) |
| 216 | require.Equal(t, levelExpected[2*i+1], entry.Message) |
| 217 | } |
| 218 | } |