github.com/yankunsam/loki/v2@v2.6.3-0.20220817130409-389df5235c27/pkg/logql/log/pattern/parser_test.go (about) 1 package pattern 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/require" 7 ) 8 9 func Test_Parse(t *testing.T) { 10 for _, tc := range []struct { 11 input string 12 expected expr 13 err error 14 }{ 15 { 16 "<foo> bar f <f>", 17 expr{capture("foo"), literals(" bar f "), capture("f")}, 18 nil, 19 }, 20 { 21 "<foo", 22 expr{literals("<foo")}, 23 nil, 24 }, 25 { 26 "<foo ><bar>", 27 expr{literals("<foo >"), capture("bar")}, 28 nil, 29 }, 30 { 31 "<>", 32 expr{literals("<>")}, 33 nil, 34 }, 35 { 36 "<_>", 37 expr{capture("_")}, 38 nil, 39 }, 40 { 41 "<1_>", 42 expr{literals("<1_>")}, 43 nil, 44 }, 45 { 46 `<ip> - <user> [<_>] "<method> <path> <_>" <status> <size> <url> <user_agent>`, 47 expr{capture("ip"), literals(" - "), capture("user"), literals(" ["), capture("_"), literals(`] "`), capture("method"), literals(" "), capture("path"), literals(" "), capture('_'), literals(`" `), capture("status"), literals(" "), capture("size"), literals(" "), capture("url"), literals(" "), capture("user_agent")}, 48 nil, 49 }, 50 } { 51 tc := tc 52 actual, err := parseExpr(tc.input) 53 if tc.err != nil || err != nil { 54 require.Equal(t, tc.err, err) 55 return 56 } 57 require.Equal(t, tc.expected, actual) 58 } 59 }