1
0
mirror of https://github.com/golang/go synced 2024-11-19 15:54:46 -07:00

archive/tar: adjust bytediff to print full context

Since test files don't exceed 10KiB, print the full context of the diff,
including bytes that are equal.
Also, fix the labels for got and want; they were backwards before.

Change-Id: Ibac022e5f988d26812c3f75b643cae8b95603fc9
Reviewed-on: https://go-review.googlesource.com/55151
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Run-TryBot: Ian Lance Taylor <iant@golang.org>
This commit is contained in:
Joe Tsai 2017-08-11 11:47:16 -07:00 committed by Joe Tsai
parent 7ae9561610
commit 01385b1bb6

View File

@ -19,28 +19,33 @@ import (
"time" "time"
) )
// Render a pseudo-diff between two blocks of bytes. func bytediff(a, b []byte) string {
func bytediff(a []byte, b []byte) (s string) { const (
var ax = strings.Split(hex.Dump(a), "\n") uniqueA = "- "
var bx = strings.Split(hex.Dump(b), "\n") uniqueB = "+ "
for i := 0; i < len(ax) || i < len(bx); i++ { identity = " "
var sa, sb = "", "" )
if i < len(ax) { var ss []string
sa = ax[i] sa := strings.Split(strings.TrimSpace(hex.Dump(a)), "\n")
} sb := strings.Split(strings.TrimSpace(hex.Dump(b)), "\n")
if i < len(bx) { for len(sa) > 0 && len(sb) > 0 {
sb = bx[i] if sa[0] == sb[0] {
} ss = append(ss, identity+sa[0])
if sa != sb { } else {
if len(sa) > 0 { ss = append(ss, uniqueA+sa[0])
s += "+" + sa + "\n" ss = append(ss, uniqueB+sb[0])
}
if len(sb) > 0 {
s += "-" + sb + "\n"
}
} }
sa, sb = sa[1:], sb[1:]
} }
return s for len(sa) > 0 {
ss = append(ss, uniqueA+sa[0])
sa = sa[1:]
}
for len(sb) > 0 {
ss = append(ss, uniqueB+sb[0])
sb = sb[1:]
}
return strings.Join(ss, "\n")
} }
func TestWriter(t *testing.T) { func TestWriter(t *testing.T) {
@ -250,7 +255,7 @@ func TestWriter(t *testing.T) {
} }
got := buf.Bytes() got := buf.Bytes()
if !bytes.Equal(want, got) { if !bytes.Equal(want, got) {
t.Fatalf("incorrect result: (-=want, +=got)\n%v", bytediff(want, got)) t.Fatalf("incorrect result: (-got +want)\n%v", bytediff(got, want))
} }
} }
}) })