Skip to content

Commit 6055240

Browse files
authored
Merge pull request #372 from mcarmonaa/fix/uast-function-not-fail
internal/function: don't fail if the uast function can't parse a blob
2 parents 43641fb + f36b113 commit 6055240

File tree

2 files changed

+16
-20
lines changed

2 files changed

+16
-20
lines changed

internal/function/uast.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"fmt"
55
"strings"
66

7+
"github.com/sirupsen/logrus"
78
"github.com/src-d/gitbase"
89
"gopkg.in/bblfsh/client-go.v2/tools"
910
"gopkg.in/bblfsh/sdk.v1/protocol"
@@ -197,11 +198,12 @@ func (f UAST) Eval(ctx *sql.Context, row sql.Row) (interface{}, error) {
197198

198199
resp, err := client.Parse(ctx, lang, bytes)
199200
if err != nil {
200-
return nil, ErrParseBlob.New(err)
201+
logrus.Warn(ErrParseBlob.New(err))
202+
return nil, nil
201203
}
202204

203205
if resp.Status != protocol.Ok {
204-
return nil, ErrParseBlob.New(strings.Join(resp.Errors, "\n"))
206+
logrus.Warn(ErrParseBlob.New(strings.Join(resp.Errors, "\n")))
205207
}
206208

207209
var nodes []*uast.Node

internal/function/uast_test.go

Lines changed: 12 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -52,32 +52,26 @@ func TestUAST(t *testing.T) {
5252
fn *UAST
5353
row sql.Row
5454
expected interface{}
55-
err *errors.Kind
5655
}{
57-
{"blob is nil", fn3, sql.NewRow(nil, nil, nil), nil, nil},
58-
{"lang is nil", fn3, sql.NewRow([]byte{}, nil, nil), nil, nil},
59-
{"xpath is nil", fn3, sql.NewRow([]byte{}, "Ruby", nil), nil, nil},
60-
{"only blob, can't infer language", fn1, sql.NewRow([]byte(testCode)), nil, ErrParseBlob},
61-
{"blob with unsupported lang", fn2, sql.NewRow([]byte(testCode), "YAML"), nil, nil},
62-
{"blob with lang", fn2, sql.NewRow([]byte(testCode), "Python"), uast, nil},
63-
{"blob with lang and xpath", fn3, sql.NewRow([]byte(testCode), "Python", testXPath), filteredNodes, nil},
56+
{"blob is nil", fn3, sql.NewRow(nil, nil, nil), nil},
57+
{"lang is nil", fn3, sql.NewRow([]byte{}, nil, nil), nil},
58+
{"xpath is nil", fn3, sql.NewRow([]byte{}, "Ruby", nil), nil},
59+
{"only blob, can't infer language", fn1, sql.NewRow([]byte(testCode)), nil},
60+
{"blob with unsupported lang", fn2, sql.NewRow([]byte(testCode), "YAML"), nil},
61+
{"blob with lang", fn2, sql.NewRow([]byte(testCode), "Python"), uast},
62+
{"blob with lang and xpath", fn3, sql.NewRow([]byte(testCode), "Python", testXPath), filteredNodes},
6463
}
6564

6665
for _, tt := range testCases {
6766
t.Run(tt.name, func(t *testing.T) {
6867
require := require.New(t)
6968
result, err := tt.fn.Eval(ctx, tt.row)
70-
if tt.err != nil {
71-
require.Error(err)
72-
require.True(tt.err.Is(err))
73-
} else {
74-
require.NoError(err)
69+
require.NoError(err)
7570

76-
if _, ok := tt.expected.([]interface{}); ok {
77-
assertUASTBlobs(t, tt.expected, result)
78-
} else {
79-
require.Equal(tt.expected, result)
80-
}
71+
if _, ok := tt.expected.([]interface{}); ok {
72+
assertUASTBlobs(t, tt.expected, result)
73+
} else {
74+
require.Equal(tt.expected, result)
8175
}
8276
})
8377
}

0 commit comments

Comments
 (0)