Commit 01385b1b authored by Joe Tsai's avatar Joe Tsai Committed by Joe Tsai

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/55151Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
Run-TryBot: Ian Lance Taylor <iant@golang.org>
parent 7ae95616
...@@ -19,28 +19,33 @@ import ( ...@@ -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:]
}
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 s return strings.Join(ss, "\n")
} }
func TestWriter(t *testing.T) { func TestWriter(t *testing.T) {
...@@ -250,7 +255,7 @@ 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))
} }
} }
}) })
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment