]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/gofmt: skip gofmt idempotency check on known issue
authorAlberto Donizetti <alb.donizetti@gmail.com>
Tue, 21 Aug 2018 12:02:56 +0000 (14:02 +0200)
committerRobert Griesemer <gri@golang.org>
Tue, 21 Aug 2018 16:01:43 +0000 (16:01 +0000)
gofmt's TestAll runs gofmt on all the go files in the tree and checks,
among other things, that gofmt is idempotent (i.e. that a second
invocation does not change the input again).

There's a known bug of gofmt not being idempotent (Issue #24472), and
unfortunately the fixedbugs/issue22662.go file triggers it. We can't
just gofmt the file, because it tests the effect of various line
directives inside weirdly-placed comments, and gofmt moves those
comments, making the test useless.

Instead, just skip the idempotency check when gofmt-ing the
problematic file.

This fixes go test on the cmd/gofmt package, and a failure seen on the
longtest builder.

Updates #24472

Change-Id: Ib06300977cd8fce6c609e688b222e9b2186f5aa7
Reviewed-on: https://go-review.googlesource.com/130377
Reviewed-by: Daniel Martí <mvdan@mvdan.cc>
Reviewed-by: Robert Griesemer <gri@golang.org>
Run-TryBot: Daniel Martí <mvdan@mvdan.cc>
TryBot-Result: Gobot Gobot <gobot@golang.org>

src/cmd/gofmt/long_test.go

index 237b86021bf356d357077d9f61dacb980f7a39e8..e2a6208f871ea3bfa70add68fad9555bad4e2bbb 100644 (file)
@@ -85,6 +85,12 @@ func testFile(t *testing.T, b1, b2 *bytes.Buffer, filename string) {
 
        // the first and 2nd result should be identical
        if !bytes.Equal(b1.Bytes(), b2.Bytes()) {
+               // A known instance of gofmt not being idempotent
+               // (see Issue #24472)
+               if strings.HasSuffix(filename, "issue22662.go") {
+                       t.Log("known gofmt idempotency bug (Issue #24472)")
+                       return
+               }
                t.Errorf("gofmt %s not idempotent", filename)
        }
 }