Parent directory

parser_test.go

1796 bytes
 1package parser_test
 2
 3import (
 4	"bytes"
 5	"strings"
 6	"testing"
 7
 8	"github.com/stretchr/testify/assert"
 9	"github.com/stretchr/testify/require"
10
11	"github.com/TheEdgeOfRage/logfmt/config"
12	"github.com/TheEdgeOfRage/logfmt/parser"
13)
14
15func TestParseLevels(t *testing.T) {
16	data := strings.NewReader(`time="2025-03-15T10:32:22Z" level=trace msg="foobar"
17time="2025-03-15T10:32:23Z" level=debug msg="bar"
18time="2025-03-15T10:32:24Z" level=info msg="foo"
19time="2025-03-15T10:32:25Z" level=warn msg="oopsie"
20time="2025-03-15T10:32:26Z" level=error msg="oh no"
21time="2025-03-15T10:32:27Z" level=fatal msg="AAAAAA"`)
22	w := &bytes.Buffer{}
23
24	p := parser.NewParser(&config.Config{}, data, w)
25	err := p.Start()
26	require.NoError(t, err)
27
28	assert.Equal(t, `2025-03-15 10:32:22 [TRACE] msg=foobar
292025-03-15 10:32:23 [DEBUG] msg=bar
302025-03-15 10:32:24  [INFO] msg=foo
312025-03-15 10:32:25  [WARN] msg=oopsie
322025-03-15 10:32:26 [ERROR] msg="oh no"
332025-03-15 10:32:27 [FATAL] msg=AAAAAA
34`, w.String())
35}
36
37func TestParseTimestamps(t *testing.T) {
38	data := strings.NewReader(`timestamp="2025-03-15T10:32:23Z" level=info msg=foo
39time="2025-03-15T10:32:24Z" level=info msg=foo
40ts="2025-03-15T10:32:25Z" level=info msg=foo
41datetime="2025-03-15T10:32:26Z" level=info msg=foo`)
42	w := &bytes.Buffer{}
43
44	p := parser.NewParser(&config.Config{}, data, w)
45	err := p.Start()
46	require.NoError(t, err)
47
48	assert.Equal(t, `2025-03-15 10:32:23  [INFO] msg=foo
492025-03-15 10:32:24  [INFO] msg=foo
502025-03-15 10:32:25  [INFO] msg=foo
512025-03-15 10:32:26  [INFO] msg=foo
52`, w.String())
53}
54
55func TestParseInvalidLogs(t *testing.T) {
56	data := strings.NewReader(`
57time="2025-03-15T10:32:23Z" level=info msg="loading"
58time="`)
59	w := &bytes.Buffer{}
60	p := parser.NewParser(&config.Config{}, data, w)
61	err := p.Start()
62	require.Error(t, err)
63}