aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/cover
diff options
context:
space:
mode:
authorRob Pike <r@golang.org>2018-06-14 11:09:28 +1000
committerRob Pike <r@golang.org>2018-06-14 21:41:38 +0000
commit5fdacfa89f871888d6f8fde726b8f95f11e674d6 (patch)
tree59b5502e5bd0edc4df3520de5e61e482e879daa2 /src/cmd/cover
parent26727b84d92db09843175a945b93ad46ff7d0a53 (diff)
downloadgo-5fdacfa89f871888d6f8fde726b8f95f11e674d6.tar.gz
go-5fdacfa89f871888d6f8fde726b8f95f11e674d6.zip
cmd/cover: remove use of diff in cover_test.go
It's non-portable, and the test isn't hard to write without diff. It still produces helpful output in case of trouble: --- FAIL: TestCoverHTML (0.75s) cover_test.go:325: line 4 differs: got: case &lt;-ch:<span class="cov0" title="0"></span> want: case &lt;-ch:<span class="cov0" xitle="0"></span> This makes the test operating-system independent. Change-Id: Iff35f00cb76ba89bc1b93db01c6f994e74341f4a Reviewed-on: https://go-review.googlesource.com/118795 Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
Diffstat (limited to 'src/cmd/cover')
-rw-r--r--src/cmd/cover/cover_test.go34
1 files changed, 22 insertions, 12 deletions
diff --git a/src/cmd/cover/cover_test.go b/src/cmd/cover/cover_test.go
index ec80f94e59..23a609996b 100644
--- a/src/cmd/cover/cover_test.go
+++ b/src/cmd/cover/cover_test.go
@@ -18,7 +18,6 @@ import (
"os/exec"
"path/filepath"
"regexp"
- "runtime"
"strings"
"testing"
)
@@ -267,9 +266,6 @@ func TestCoverFunc(t *testing.T) {
// Check that cover produces correct HTML.
// Issue #25767.
func TestCoverHTML(t *testing.T) {
- if _, err := exec.LookPath("diff"); err != nil {
- t.Skipf("skip test on %s: diff command is required", runtime.GOOS)
- }
testenv.MustHaveGoBuild(t)
if !*debug {
defer os.Remove(testcover)
@@ -307,16 +303,30 @@ func TestCoverHTML(t *testing.T) {
in = false
}
}
- if err := ioutil.WriteFile(htmlHTML, out.Bytes(), 0644); err != nil {
- t.Fatal(err)
+ golden, err := ioutil.ReadFile(htmlGolden)
+ if err != nil {
+ t.Fatalf("reading golden file: %v", err)
}
- diff := "diff"
- if runtime.GOOS == "plan9" {
- diff = "/bin/ape/diff"
+ // Ignore white space differences.
+ // Break into lines, then compare by breaking into words.
+ goldenLines := strings.Split(string(golden), "\n")
+ outLines := strings.Split(out.String(), "\n")
+ // Compare at the line level, stopping at first different line so
+ // we don't generate tons of output if there's an inserted or deleted line.
+ for i, goldenLine := range goldenLines {
+ if i > len(outLines) {
+ t.Fatalf("output shorter than golden; stops before line %d: %s\n", i+1, goldenLine)
+ }
+ // Convert all white space to simple spaces, for easy comparison.
+ goldenLine = strings.Join(strings.Fields(goldenLine), " ")
+ outLine := strings.Join(strings.Fields(outLines[i]), " ")
+ if outLine != goldenLine {
+ t.Fatalf("line %d differs: got:\n\t%s\nwant:\n\t%s", i+1, outLine, goldenLine)
+ }
+ }
+ if len(goldenLines) != len(outLines) {
+ t.Fatalf("output longer than golden; first extra output line %d: %q\n", len(goldenLines), outLines[len(goldenLines)])
}
- // diff -uw testdata/html/html.html testdata/html/html.golden
- cmd = exec.Command(diff, "-u", "-w", htmlHTML, htmlGolden)
- run(cmd, t)
}
func run(c *exec.Cmd, t *testing.T) {