1
0
mirror of https://github.com/golang/go synced 2024-11-19 02:14:43 -07:00

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>
This commit is contained in:
Rob Pike 2018-06-14 11:09:28 +10:00
parent 26727b84d9
commit 5fdacfa89f

View File

@ -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) {