github.com/Jeffail/benthos/v3@v3.65.0/public/bloblang/parse_error_test.go (about)

     1  package bloblang
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/stretchr/testify/assert"
     7  	"github.com/stretchr/testify/require"
     8  )
     9  
    10  func TestParseErrors(t *testing.T) {
    11  	tests := []struct {
    12  		name        string
    13  		mapping     string
    14  		expLine     int
    15  		expCol      int
    16  		errContains string
    17  	}{
    18  		{
    19  			name: "Bad assignment error",
    20  			mapping: `
    21  root = 
    22  # there wasn't a value!
    23  `,
    24  			expLine:     2,
    25  			expCol:      8,
    26  			errContains: "expected query",
    27  		},
    28  		{
    29  			name: "Bad function args error",
    30  			mapping: `
    31  root.foo = this.foo
    32  root.bar = this.bar.uppercase().replace("something)`,
    33  			expLine:     3,
    34  			expCol:      52,
    35  			errContains: "expected end quote",
    36  		},
    37  	}
    38  
    39  	for _, test := range tests {
    40  		test := test
    41  		t.Run(test.name, func(t *testing.T) {
    42  			_, err := Parse(test.mapping)
    43  			require.Error(t, err)
    44  
    45  			pErr, ok := err.(*ParseError)
    46  			require.True(t, ok)
    47  
    48  			assert.Equal(t, test.expLine, pErr.Line)
    49  			assert.Equal(t, test.expCol, pErr.Column)
    50  			assert.Contains(t, pErr.ErrorMultiline(), test.errContains, pErr.ErrorMultiline())
    51  		})
    52  	}
    53  }