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  }