Skip to content

[BUG] v1.2.0 seems to produce incorrect diff #123

Open
@KevinWang15

Description

@KevinWang15

This testcase:

func Test(t *testing.T) {
	src := "a\na: a\na:\n  a:\n    a\n    a: \"a\"\n    a: a\n    a: \"1\"\n    a: 1\n    -"
	dst := "abcde: xxxxx"

	dmp := New()
	wSrc, wDst, warray := dmp.DiffLinesToRunes(src, dst)
	diffs := dmp.DiffMainRunes(wSrc, wDst, false)
	diffs = dmp.DiffCharsToLines(diffs, warray)

	fmt.Printf("SRC:\n%s\n\nDST:\n%s\n\nDiff:\n%v", src, dst, diffs)
}

Will produce

SRC:
a
a: a
a:
  a:
    a
    a: "a"
    a: a
    a: "1"
    a: 1
    -

DST:
abcde: xxxxx

Diff:
[{Equal a
} {Delete a: a
a:
  a:
    a
    a: "a"
    a: a
    a: "1"
    a: 1
} {Equal a
} {Delete }]

In v1.2.0, which is incorrect.

In v1.1.0, it produces the correct diff of

SRC:
a
a: a
a:
  a:
    a
    a: "a"
    a: a
    a: "1"
    a: 1
    -

DST:
abcde: xxxxx

Diff:
[{Delete a
a: a
a:
  a:
    a
    a: "a"
    a: a
    a: "1"
    a: 1
    -} {Insert abcde: xxxxx}]

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions