Skip to content

endtoend: Read expected stderr failures from disk #527

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
May 27, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 5 additions & 30 deletions internal/endtoend/endtoend_test.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package main

import (
"bufio"
"bytes"
"encoding/json"
"io/ioutil"
Expand Down Expand Up @@ -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 ""
}
5 changes: 0 additions & 5 deletions internal/endtoend/testdata/invalid_func_args/query.sql
Original file line number Diff line number Diff line change
@@ -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
3 changes: 3 additions & 0 deletions internal/endtoend/testdata/invalid_func_args/stderr.txt
Original file line number Diff line number Diff line change
@@ -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
7 changes: 0 additions & 7 deletions internal/endtoend/testdata/invalid_params/query.sql
Original file line number Diff line number Diff line change
Expand Up @@ -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)
5 changes: 5 additions & 0 deletions internal/endtoend/testdata/invalid_params/stderr.txt
Original file line number Diff line number Diff line change
@@ -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)
5 changes: 0 additions & 5 deletions internal/endtoend/testdata/invalid_queries_bar/query.sql
Original file line number Diff line number Diff line change
@@ -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
3 changes: 3 additions & 0 deletions internal/endtoend/testdata/invalid_queries_bar/stderr.txt
Original file line number Diff line number Diff line change
@@ -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
9 changes: 0 additions & 9 deletions internal/endtoend/testdata/invalid_queries_foo/query.sql
Original file line number Diff line number Diff line change
Expand Up @@ -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
7 changes: 7 additions & 0 deletions internal/endtoend/testdata/invalid_queries_foo/stderr.txt
Original file line number Diff line number Diff line change
@@ -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
4 changes: 0 additions & 4 deletions internal/endtoend/testdata/missing_semicolon/query.sql
Original file line number Diff line number Diff line change
Expand Up @@ -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
2 changes: 2 additions & 0 deletions internal/endtoend/testdata/missing_semicolon/stderr.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# package querytest
query.sql:7:1: missing semicolon at end of file
9 changes: 0 additions & 9 deletions internal/endtoend/testdata/mysql_errors/query.sql
Original file line number Diff line number Diff line change
Expand Up @@ -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"
7 changes: 7 additions & 0 deletions internal/endtoend/testdata/mysql_errors/stderr.txt
Original file line number Diff line number Diff line change
@@ -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"