]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile: simplified test case (cleanup)
authorRobert Griesemer <gri@golang.org>
Tue, 16 Oct 2018 22:53:38 +0000 (15:53 -0700)
committerEmmanuel Odeke <emm.odeke@gmail.com>
Tue, 16 Oct 2018 23:11:02 +0000 (23:11 +0000)
Follow-up on https://golang.org/cl/124595; no semantic changes.

Updates #26411.

Change-Id: Ic1c4622dbf79529ff61530f9c25ec742c2abe5ca
Reviewed-on: https://go-review.googlesource.com/c/142720
Run-TryBot: Robert Griesemer <gri@golang.org>
Reviewed-by: Emmanuel Odeke <emm.odeke@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>

test/fixedbugs/issue26411.go

index 789c176daebd3407922d931d3309984c5a281f00..5f40bf25229a1a1ef400dc6e71408fffdbaaa0a3 100644 (file)
@@ -29,9 +29,9 @@ func main() {
        }
        defer os.RemoveAll(tmpdir)
 
-       samples := []struct {
-               code       string
-               wantOutput []string
+       tests := []struct {
+               code   string
+               errors []string
        }{
                {
                        code: `
@@ -42,7 +42,7 @@ foo:
 foo:
 }
 `,
-                       wantOutput: []string{
+                       errors: []string{
                                "^.+:5:1: label foo defined and not used\n",
                                ".+:6:1: label foo already defined at .+:5:1\n$",
                        },
@@ -60,7 +60,7 @@ bar            :
 }
 `,
 
-                       wantOutput: []string{
+                       errors: []string{
                                "^.+:6:13: label bar defined and not used\n",
                                ".+:7:4: label bar already defined at .+:6:13\n",
                                ".+:8:1: label bar already defined at .+:6:13\n",
@@ -69,26 +69,24 @@ bar            :
                },
        }
 
-       for i, sample := range samples {
+       for i, test := range tests {
                filename := filepath.Join(tmpdir, fmt.Sprintf("%d.go", i))
-               if err := ioutil.WriteFile(filename, []byte(sample.code), 0644); err != nil {
+               if err := ioutil.WriteFile(filename, []byte(test.code), 0644); err != nil {
                        log.Printf("#%d: failed to create file %s", i, filename)
                        continue
                }
                output, _ := exec.Command("go", "tool", "compile", filename).CombinedOutput()
 
-               // Now match the output
-               for _, regex := range sample.wantOutput {
-                       reg := regexp.MustCompile(regex)
-                       matches := reg.FindAll(output, -1)
-                       for _, match := range matches {
-                               index := bytes.Index(output, match)
-                               output = bytes.Join([][]byte{output[:index], output[index+len(match):]}, []byte(""))
-                       }
+               // remove each matching error from the output
+               for _, err := range test.errors {
+                       rx := regexp.MustCompile(err)
+                       match := rx.Find(output)
+                       output = bytes.Replace(output, match, nil, 1) // remove match (which might be nil) from output
                }
 
+               // at this point all output should have been consumed
                if len(output) != 0 {
-                       log.Printf("#%d: did not match all the output\nResidual output:\n\t%s", i, output)
+                       log.Printf("Test case %d has unmatched errors:\n%s", i, output)
                }
        }
 }