diff --git a/internal/endtoend/endtoend_test.go b/internal/endtoend/endtoend_test.go index 579e07ada0..551565137f 100644 --- a/internal/endtoend/endtoend_test.go +++ b/internal/endtoend/endtoend_test.go @@ -1,7 +1,6 @@ package main import ( - "bufio" "bytes" "encoding/json" "io/ioutil" @@ -157,37 +156,13 @@ func cmpDirectory(t *testing.T, dir string, actual map[string]string) { func expectedStderr(t *testing.T, dir string) string { t.Helper() - files, err := ioutil.ReadDir(dir) - if err != nil { - t.Fatal(err) - } - stderr := "" - for _, file := range files { - if file.IsDir() { - continue - } - if !strings.HasSuffix(file.Name(), ".sql") { - continue - } - rd, err := os.Open(filepath.Join(dir, file.Name())) + path := filepath.Join(dir, "stderr.txt") + if _, err := os.Stat(path); !os.IsNotExist(err) { + blob, err := ioutil.ReadFile(path) if err != nil { - t.Fatalf("could not open %s: %v", file.Name(), err) - } - scanner := bufio.NewScanner(rd) - capture := false - for scanner.Scan() { - text := scanner.Text() - if text == "-- stderr" { - capture = true - continue - } - if capture == true && strings.HasPrefix(text, "--") { - stderr += strings.TrimPrefix(text, "-- ") + "\n" - } - } - if err := scanner.Err(); err != nil { t.Fatal(err) } + return string(blob) } - return stderr + return "" } diff --git a/internal/endtoend/testdata/invalid_func_args/query.sql b/internal/endtoend/testdata/invalid_func_args/query.sql index f527539967..02ff72d1f3 100644 --- a/internal/endtoend/testdata/invalid_func_args/query.sql +++ b/internal/endtoend/testdata/invalid_func_args/query.sql @@ -1,7 +1,2 @@ SELECT random(1); SELECT position(); - --- stderr --- # package querytest --- query.sql:1:8: function random(unknown) does not exist --- query.sql:2:8: function position() does not exist diff --git a/internal/endtoend/testdata/invalid_func_args/stderr.txt b/internal/endtoend/testdata/invalid_func_args/stderr.txt new file mode 100644 index 0000000000..df8159d449 --- /dev/null +++ b/internal/endtoend/testdata/invalid_func_args/stderr.txt @@ -0,0 +1,3 @@ +# package querytest +query.sql:1:8: function random(unknown) does not exist +query.sql:2:8: function position() does not exist diff --git a/internal/endtoend/testdata/invalid_params/query.sql b/internal/endtoend/testdata/invalid_params/query.sql index fbc772f6f4..e65eb9970d 100644 --- a/internal/endtoend/testdata/invalid_params/query.sql +++ b/internal/endtoend/testdata/invalid_params/query.sql @@ -11,10 +11,3 @@ SELECT foo FROM bar; -- name: Named :many SELECT id FROM bar WHERE id = $1 AND sqlc.arg(named) = true AND id = $5; - --- stderr --- # package querytest --- query.sql:4:1: could not determine data type of parameter $1 --- query.sql:7:1: could not determine data type of parameter $2 --- query.sql:10:8: column "foo" does not exist --- query.sql:13:1: query mixes positional parameters ($1) and named parameters (sqlc.arg or @arg) diff --git a/internal/endtoend/testdata/invalid_params/stderr.txt b/internal/endtoend/testdata/invalid_params/stderr.txt new file mode 100644 index 0000000000..f338b8d756 --- /dev/null +++ b/internal/endtoend/testdata/invalid_params/stderr.txt @@ -0,0 +1,5 @@ +# package querytest +query.sql:4:1: could not determine data type of parameter $1 +query.sql:7:1: could not determine data type of parameter $2 +query.sql:10:8: column "foo" does not exist +query.sql:13:1: query mixes positional parameters ($1) and named parameters (sqlc.arg or @arg) diff --git a/internal/endtoend/testdata/invalid_queries_bar/query.sql b/internal/endtoend/testdata/invalid_queries_bar/query.sql index cad1d915d1..49d9d60f1f 100644 --- a/internal/endtoend/testdata/invalid_queries_bar/query.sql +++ b/internal/endtoend/testdata/invalid_queries_bar/query.sql @@ -1,8 +1,3 @@ CREATE TABLE foo (bar text not null, baz text not null); INSERT INTO foo (bar, baz) VALUES ($1); INSERT INTO foo (bar) VALUES ($1, $2); - --- stderr --- # package querytest --- query.sql:2:1: INSERT has more target columns than expressions --- query.sql:3:1: INSERT has more expressions than target columns diff --git a/internal/endtoend/testdata/invalid_queries_bar/stderr.txt b/internal/endtoend/testdata/invalid_queries_bar/stderr.txt new file mode 100644 index 0000000000..a496038cd1 --- /dev/null +++ b/internal/endtoend/testdata/invalid_queries_bar/stderr.txt @@ -0,0 +1,3 @@ +# package querytest +query.sql:2:1: INSERT has more target columns than expressions +query.sql:3:1: INSERT has more expressions than target columns diff --git a/internal/endtoend/testdata/invalid_queries_foo/query.sql b/internal/endtoend/testdata/invalid_queries_foo/query.sql index 10a9f4be60..ef84ae740c 100644 --- a/internal/endtoend/testdata/invalid_queries_foo/query.sql +++ b/internal/endtoend/testdata/invalid_queries_foo/query.sql @@ -17,12 +17,3 @@ UPDATE foo SET id = $2 WHERE id = $1; -- name: InsertFoo :one INSERT INTO foo (id) VALUES ($1); - --- stderr --- # package querytest --- query.sql:4:1: invalid query comment: -- name: ListFoos --- query.sql:7:1: invalid query comment: -- name: ListFoos :one :many --- query.sql:10:1: invalid query type: :two --- query.sql:13:1: query "DeleteFoo" specifies parameter ":one" without containing a RETURNING clause --- query.sql:16:1: query "UpdateFoo" specifies parameter ":one" without containing a RETURNING clause --- query.sql:19:1: query "InsertFoo" specifies parameter ":one" without containing a RETURNING clause diff --git a/internal/endtoend/testdata/invalid_queries_foo/stderr.txt b/internal/endtoend/testdata/invalid_queries_foo/stderr.txt new file mode 100644 index 0000000000..cbe1df4446 --- /dev/null +++ b/internal/endtoend/testdata/invalid_queries_foo/stderr.txt @@ -0,0 +1,7 @@ +# package querytest +query.sql:4:1: invalid query comment: -- name: ListFoos +query.sql:7:1: invalid query comment: -- name: ListFoos :one :many +query.sql:10:1: invalid query type: :two +query.sql:13:1: query "DeleteFoo" specifies parameter ":one" without containing a RETURNING clause +query.sql:16:1: query "UpdateFoo" specifies parameter ":one" without containing a RETURNING clause +query.sql:19:1: query "InsertFoo" specifies parameter ":one" without containing a RETURNING clause diff --git a/internal/endtoend/testdata/missing_semicolon/query.sql b/internal/endtoend/testdata/missing_semicolon/query.sql index f64efa3e3c..cdd62d5ad7 100644 --- a/internal/endtoend/testdata/missing_semicolon/query.sql +++ b/internal/endtoend/testdata/missing_semicolon/query.sql @@ -5,7 +5,3 @@ SELECT * FROM foo; -- name: SecondQuery :many SELECT * FROM foo WHERE email = $1 - --- stderr --- # package querytest --- query.sql:7:1: missing semicolon at end of file diff --git a/internal/endtoend/testdata/missing_semicolon/stderr.txt b/internal/endtoend/testdata/missing_semicolon/stderr.txt new file mode 100644 index 0000000000..5cd2f160b8 --- /dev/null +++ b/internal/endtoend/testdata/missing_semicolon/stderr.txt @@ -0,0 +1,2 @@ +# package querytest +query.sql:7:1: missing semicolon at end of file diff --git a/internal/endtoend/testdata/mysql_errors/query.sql b/internal/endtoend/testdata/mysql_errors/query.sql index 462761beac..ad8de8d8fa 100644 --- a/internal/endtoend/testdata/mysql_errors/query.sql +++ b/internal/endtoend/testdata/mysql_errors/query.sql @@ -15,12 +15,3 @@ selectt id, first_name from users; /* name: ExtraSelect :one */ select id from users where select id; - --- stderr --- # package querytest --- query.sql:1:1: invalid function call "sqlc.argh", did you mean "sqlc.arg"? --- query.sql:4:1: invalid custom argument value "sqlc.arg(sqlc.arg(target_id))" --- query.sql:7:1: invalid custom argument value "sqlc.arg(?)" --- query.sql:11:39: syntax error at or near "from" --- query.sql:14:9: syntax error at or near "selectt" --- query.sql:17:35: syntax error at or near "select" diff --git a/internal/endtoend/testdata/mysql_errors/stderr.txt b/internal/endtoend/testdata/mysql_errors/stderr.txt new file mode 100644 index 0000000000..3fc5e90e71 --- /dev/null +++ b/internal/endtoend/testdata/mysql_errors/stderr.txt @@ -0,0 +1,7 @@ +# package querytest +query.sql:1:1: invalid function call "sqlc.argh", did you mean "sqlc.arg"? +query.sql:4:1: invalid custom argument value "sqlc.arg(sqlc.arg(target_id))" +query.sql:7:1: invalid custom argument value "sqlc.arg(?)" +query.sql:11:39: syntax error at or near "from" +query.sql:14:9: syntax error at or near "selectt" +query.sql:17:35: syntax error at or near "select"