75 lines
2.3 KiB
Go
75 lines
2.3 KiB
Go
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)
|
|
}
|