diff icon indicating copy to clipboard operation
diff copied to clipboard

Patching slice back to empty slice returns patchLog.Applied() to be false

Open jeffy-mathew opened this issue 2 years ago • 0 comments

patchLog.Applied() is false when we run the following code snippet regardless the patch operation works as expected.

package main

import (
	"fmt"

	"github.com/r3labs/diff/v3"
)

type Order struct {
	ID         string     `json:"id"`
	OrderItems OrderItems `json:"orderItems"`
}

type OrderItems struct {
	Items []string `json:"items"`
}

func main() {
	a := Order{
		ID: "1234",
	}

	b := Order{
		ID:         "1234",
		OrderItems: OrderItems{[]string{"1", "2", "4"}},
	}

	d, _ := diff.NewDiffer(diff.TagName("json"))

	changelog, _ := d.Diff(b, a)

	patchLog := d.Patch(changelog, &b)
	fmt.Printf("patchlog applied : %t \nhas errors %t \nerror count %d \n\n", patchLog.Applied(), patchLog.HasErrors(), patchLog.ErrorCount())

	fmt.Printf("values \n a: %#v \n b: %#v", a, b)
}

jeffy-mathew avatar Jul 25 '22 06:07 jeffy-mathew