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 <-ch:<span class="cov0" title="0"></span> want: case <-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:
parent
26727b84d9
commit
5fdacfa89f
@ -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) {
|
||||
|
Loading…
Reference in New Issue
Block a user