mirror of
https://github.com/golang/go
synced 2024-11-22 00:34:40 -07:00
html: be able to test more than one testdata file.
R=andybalholm CC=golang-dev https://golang.org/cl/5351041
This commit is contained in:
parent
ea9e93862d
commit
bbd173fc3d
@ -23,6 +23,7 @@ func pipeErr(err error) io.Reader {
|
||||
}
|
||||
|
||||
func readDat(filename string, c chan io.Reader) {
|
||||
defer close(c)
|
||||
f, err := os.Open("testdata/webkit/" + filename)
|
||||
if err != nil {
|
||||
c <- pipeErr(err)
|
||||
@ -125,17 +126,27 @@ func dump(n *Node) (string, error) {
|
||||
}
|
||||
|
||||
func TestParser(t *testing.T) {
|
||||
// TODO(nigeltao): Process all the .dat files, not just the first one.
|
||||
filenames := []string{
|
||||
"tests1.dat",
|
||||
testFiles := []struct {
|
||||
filename string
|
||||
// n is the number of test cases to run from that file.
|
||||
// -1 means all test cases.
|
||||
n int
|
||||
}{
|
||||
// TODO(nigeltao): Process all the test cases from all the .dat files.
|
||||
{"tests1.dat", 87},
|
||||
{"tests2.dat", 0},
|
||||
{"tests3.dat", 0},
|
||||
}
|
||||
for _, filename := range filenames {
|
||||
for _, tf := range testFiles {
|
||||
rc := make(chan io.Reader)
|
||||
go readDat(filename, rc)
|
||||
// TODO(nigeltao): Process all test cases, not just a subset.
|
||||
for i := 0; i < 87; i++ {
|
||||
go readDat(tf.filename, rc)
|
||||
for i := 0; i != tf.n; i++ {
|
||||
// Parse the #data section.
|
||||
b, err := ioutil.ReadAll(<-rc)
|
||||
dataReader := <-rc
|
||||
if dataReader == nil {
|
||||
break
|
||||
}
|
||||
b, err := ioutil.ReadAll(dataReader)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@ -158,7 +169,7 @@ func TestParser(t *testing.T) {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if want := string(b); got != want {
|
||||
t.Errorf("%s test #%d %q, got vs want:\n----\n%s----\n%s----", filename, i, text, got, want)
|
||||
t.Errorf("%s test #%d %q, got vs want:\n----\n%s----\n%s----", tf.filename, i, text, got, want)
|
||||
continue
|
||||
}
|
||||
if renderTestBlacklist[text] {
|
||||
@ -178,10 +189,16 @@ func TestParser(t *testing.T) {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if got != got1 {
|
||||
t.Errorf("%s test #%d %q, got vs got1:\n----\n%s----\n%s----", filename, i, text, got, got1)
|
||||
t.Errorf("%s test #%d %q, got vs got1:\n----\n%s----\n%s----", tf.filename, i, text, got, got1)
|
||||
continue
|
||||
}
|
||||
}
|
||||
// Drain any untested cases for the test file.
|
||||
for r := range rc {
|
||||
if _, err := ioutil.ReadAll(r); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user