This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
package sq
|
||||
|
||||
import (
|
||||
"context"
|
||||
"git.blackforestbytes.com/BlackForestBytes/goext/tst"
|
||||
"strings"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestFnTrimCommentsLineOnly(t *testing.T) {
|
||||
// The line-only comment is replaced with an empty line.
|
||||
sql := "SELECT *\n-- this is a comment\nFROM users"
|
||||
pp := PP{}
|
||||
err := fnTrimComments(context.Background(), "QUERY", nil, &sql, &pp)
|
||||
tst.AssertNoErr(t, err)
|
||||
tst.AssertTrue(t, !strings.Contains(sql, "comment"))
|
||||
tst.AssertTrue(t, strings.Contains(sql, "SELECT *"))
|
||||
tst.AssertTrue(t, strings.Contains(sql, "FROM users"))
|
||||
}
|
||||
|
||||
func TestFnTrimCommentsTrailing(t *testing.T) {
|
||||
sql := "SELECT * -- inline\nFROM users -- end"
|
||||
pp := PP{}
|
||||
err := fnTrimComments(context.Background(), "QUERY", nil, &sql, &pp)
|
||||
tst.AssertNoErr(t, err)
|
||||
tst.AssertEqual(t, "SELECT *\nFROM users", sql)
|
||||
}
|
||||
|
||||
func TestFnTrimCommentsIndented(t *testing.T) {
|
||||
sql := "SELECT *\n -- indented comment\nFROM users"
|
||||
pp := PP{}
|
||||
err := fnTrimComments(context.Background(), "QUERY", nil, &sql, &pp)
|
||||
tst.AssertNoErr(t, err)
|
||||
tst.AssertTrue(t, !strings.Contains(sql, "indented comment"))
|
||||
tst.AssertTrue(t, strings.Contains(sql, "SELECT *"))
|
||||
tst.AssertTrue(t, strings.Contains(sql, "FROM users"))
|
||||
}
|
||||
|
||||
func TestFnTrimCommentsTrimsTrailingWhitespace(t *testing.T) {
|
||||
sql := "SELECT * \t\nFROM users "
|
||||
pp := PP{}
|
||||
err := fnTrimComments(context.Background(), "QUERY", nil, &sql, &pp)
|
||||
tst.AssertNoErr(t, err)
|
||||
tst.AssertEqual(t, "SELECT *\nFROM users", sql)
|
||||
}
|
||||
|
||||
func TestFnTrimCommentsNoComment(t *testing.T) {
|
||||
sql := "SELECT id\nFROM users\nWHERE id=1"
|
||||
pp := PP{}
|
||||
err := fnTrimComments(context.Background(), "QUERY", nil, &sql, &pp)
|
||||
tst.AssertNoErr(t, err)
|
||||
tst.AssertEqual(t, "SELECT id\nFROM users\nWHERE id=1", sql)
|
||||
}
|
||||
|
||||
func TestFnTrimCommentsEmpty(t *testing.T) {
|
||||
sql := ""
|
||||
pp := PP{}
|
||||
err := fnTrimComments(context.Background(), "QUERY", nil, &sql, &pp)
|
||||
tst.AssertNoErr(t, err)
|
||||
tst.AssertEqual(t, "", sql)
|
||||
}
|
||||
|
||||
func TestCommentTrimmerListener(t *testing.T) {
|
||||
sql := "SELECT *\n-- a comment\nFROM x"
|
||||
pp := PP{}
|
||||
err := CommentTrimmer.PreQuery(context.Background(), nil, &sql, &pp, PreQueryMeta{})
|
||||
tst.AssertNoErr(t, err)
|
||||
tst.AssertTrue(t, !strings.Contains(sql, "a comment"))
|
||||
|
||||
sql2 := "INSERT INTO x VALUES (1) -- xx"
|
||||
err = CommentTrimmer.PreExec(context.Background(), nil, &sql2, &pp, PreExecMeta{})
|
||||
tst.AssertNoErr(t, err)
|
||||
tst.AssertEqual(t, "INSERT INTO x VALUES (1)", sql2)
|
||||
}
|
||||
Reference in New Issue
Block a user