Skip to content

Commit fd53ba1

Browse files
authored
endtoend: Read expected stderr failures from disk (#527)
1 parent 6ca46cd commit fd53ba1

File tree

13 files changed

+32
-69
lines changed

13 files changed

+32
-69
lines changed

internal/endtoend/endtoend_test.go

Lines changed: 5 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package main
22

33
import (
4-
"bufio"
54
"bytes"
65
"encoding/json"
76
"io/ioutil"
@@ -157,37 +156,13 @@ func cmpDirectory(t *testing.T, dir string, actual map[string]string) {
157156

158157
func expectedStderr(t *testing.T, dir string) string {
159158
t.Helper()
160-
files, err := ioutil.ReadDir(dir)
161-
if err != nil {
162-
t.Fatal(err)
163-
}
164-
stderr := ""
165-
for _, file := range files {
166-
if file.IsDir() {
167-
continue
168-
}
169-
if !strings.HasSuffix(file.Name(), ".sql") {
170-
continue
171-
}
172-
rd, err := os.Open(filepath.Join(dir, file.Name()))
159+
path := filepath.Join(dir, "stderr.txt")
160+
if _, err := os.Stat(path); !os.IsNotExist(err) {
161+
blob, err := ioutil.ReadFile(path)
173162
if err != nil {
174-
t.Fatalf("could not open %s: %v", file.Name(), err)
175-
}
176-
scanner := bufio.NewScanner(rd)
177-
capture := false
178-
for scanner.Scan() {
179-
text := scanner.Text()
180-
if text == "-- stderr" {
181-
capture = true
182-
continue
183-
}
184-
if capture == true && strings.HasPrefix(text, "--") {
185-
stderr += strings.TrimPrefix(text, "-- ") + "\n"
186-
}
187-
}
188-
if err := scanner.Err(); err != nil {
189163
t.Fatal(err)
190164
}
165+
return string(blob)
191166
}
192-
return stderr
167+
return ""
193168
}
Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,2 @@
11
SELECT random(1);
22
SELECT position();
3-
4-
-- stderr
5-
-- # package querytest
6-
-- query.sql:1:8: function random(unknown) does not exist
7-
-- query.sql:2:8: function position() does not exist
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# package querytest
2+
query.sql:1:8: function random(unknown) does not exist
3+
query.sql:2:8: function position() does not exist

internal/endtoend/testdata/invalid_params/query.sql

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,3 @@ SELECT foo FROM bar;
1111

1212
-- name: Named :many
1313
SELECT id FROM bar WHERE id = $1 AND sqlc.arg(named) = true AND id = $5;
14-
15-
-- stderr
16-
-- # package querytest
17-
-- query.sql:4:1: could not determine data type of parameter $1
18-
-- query.sql:7:1: could not determine data type of parameter $2
19-
-- query.sql:10:8: column "foo" does not exist
20-
-- query.sql:13:1: query mixes positional parameters ($1) and named parameters (sqlc.arg or @arg)
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# package querytest
2+
query.sql:4:1: could not determine data type of parameter $1
3+
query.sql:7:1: could not determine data type of parameter $2
4+
query.sql:10:8: column "foo" does not exist
5+
query.sql:13:1: query mixes positional parameters ($1) and named parameters (sqlc.arg or @arg)
Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,3 @@
11
CREATE TABLE foo (bar text not null, baz text not null);
22
INSERT INTO foo (bar, baz) VALUES ($1);
33
INSERT INTO foo (bar) VALUES ($1, $2);
4-
5-
-- stderr
6-
-- # package querytest
7-
-- query.sql:2:1: INSERT has more target columns than expressions
8-
-- query.sql:3:1: INSERT has more expressions than target columns
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# package querytest
2+
query.sql:2:1: INSERT has more target columns than expressions
3+
query.sql:3:1: INSERT has more expressions than target columns

internal/endtoend/testdata/invalid_queries_foo/query.sql

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,3 @@ UPDATE foo SET id = $2 WHERE id = $1;
1717

1818
-- name: InsertFoo :one
1919
INSERT INTO foo (id) VALUES ($1);
20-
21-
-- stderr
22-
-- # package querytest
23-
-- query.sql:4:1: invalid query comment: -- name: ListFoos
24-
-- query.sql:7:1: invalid query comment: -- name: ListFoos :one :many
25-
-- query.sql:10:1: invalid query type: :two
26-
-- query.sql:13:1: query "DeleteFoo" specifies parameter ":one" without containing a RETURNING clause
27-
-- query.sql:16:1: query "UpdateFoo" specifies parameter ":one" without containing a RETURNING clause
28-
-- query.sql:19:1: query "InsertFoo" specifies parameter ":one" without containing a RETURNING clause
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# package querytest
2+
query.sql:4:1: invalid query comment: -- name: ListFoos
3+
query.sql:7:1: invalid query comment: -- name: ListFoos :one :many
4+
query.sql:10:1: invalid query type: :two
5+
query.sql:13:1: query "DeleteFoo" specifies parameter ":one" without containing a RETURNING clause
6+
query.sql:16:1: query "UpdateFoo" specifies parameter ":one" without containing a RETURNING clause
7+
query.sql:19:1: query "InsertFoo" specifies parameter ":one" without containing a RETURNING clause

internal/endtoend/testdata/missing_semicolon/query.sql

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,3 @@ SELECT * FROM foo;
55

66
-- name: SecondQuery :many
77
SELECT * FROM foo WHERE email = $1
8-
9-
-- stderr
10-
-- # package querytest
11-
-- query.sql:7:1: missing semicolon at end of file
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# package querytest
2+
query.sql:7:1: missing semicolon at end of file

internal/endtoend/testdata/mysql_errors/query.sql

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,3 @@ selectt id, first_name from users;
1515

1616
/* name: ExtraSelect :one */
1717
select id from users where select id;
18-
19-
-- stderr
20-
-- # package querytest
21-
-- query.sql:1:1: invalid function call "sqlc.argh", did you mean "sqlc.arg"?
22-
-- query.sql:4:1: invalid custom argument value "sqlc.arg(sqlc.arg(target_id))"
23-
-- query.sql:7:1: invalid custom argument value "sqlc.arg(?)"
24-
-- query.sql:11:39: syntax error at or near "from"
25-
-- query.sql:14:9: syntax error at or near "selectt"
26-
-- query.sql:17:35: syntax error at or near "select"
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# package querytest
2+
query.sql:1:1: invalid function call "sqlc.argh", did you mean "sqlc.arg"?
3+
query.sql:4:1: invalid custom argument value "sqlc.arg(sqlc.arg(target_id))"
4+
query.sql:7:1: invalid custom argument value "sqlc.arg(?)"
5+
query.sql:11:39: syntax error at or near "from"
6+
query.sql:14:9: syntax error at or near "selectt"
7+
query.sql:17:35: syntax error at or near "select"

0 commit comments

Comments
 (0)