Skip to content

Output of comparing two Japanese words is unreadable #314

@k3forx

Description

@k3forx

Summary

When I want to compare two Japanese words and there is diff, the returned value of Diff method is unreadable.

Detail

Here is an example.

func Echo() string {
	return "プライベート ブランド シャツ"
}

test code

func TestEcho(t *testing.T) {
	expected := "プライベート ブランド ジャケット"
	actual := Echo()
	if diff := cmp.Diff(expected, actual); diff != "" {
		t.Errorf("%s result mismatch (-want, +got):\n%s", t.Name(), diff)
	}
}

cmp.Diff produces

--- FAIL: TestEcho (0.00s)
    main_test.go:13: TestEcho result mismatch (-want, +got):
          strings.Join({
                "プライベート ブランド \xe3\x82",
        -       "\xb8ャケット",
        +       "\xb7ャツ",
          }, "")
FAIL
FAIL    cmpbug  0.347s
FAIL

the above output is not readable. I expect the following output

❯ go test ./...
--- FAIL: TestEcho (0.00s)
    main_test.go:13: TestEcho result mismatch (-want, +got):
          string(
                 "プライベート ブランド ",
        -       "ジャケット",
        +       "シャツ",
          )
FAIL
FAIL    cmpbug  0.229s
FAIL

version info

  • go: 1.19.2
  • cmp: v0.5.9

Metadata

Metadata

Assignees

No one assigned

    Labels

    reporterImprovements in the difference reporter

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions