Merge pull request #2372 from phanimarupaka/GitDiffForUpdate

Print file difference like git diff
This commit is contained in:
Jeff Regan
2020-04-21 11:16:36 -07:00
committed by GitHub
2 changed files with 32 additions and 4 deletions

View File

@@ -121,17 +121,23 @@ func Diff(sourceDir, destDir string) (sets.String, error) {
return diff, err
}
if !bytes.Equal(b1, b2) {
dmp := diffmatchpatch.New()
diffs := dmp.DiffMain(string(b1), string(b2), false)
fmt.Println(dmp.DiffPrettyText(diffs))
fmt.Println(PrettyFileDiff(string(b1), string(b2)))
diff.Insert(f)
}
}
// return the differing files
return diff, nil
}
// PrettyFileDiff takes the content of two files and returns the pretty diff
func PrettyFileDiff(s1, s2 string) string {
dmp := diffmatchpatch.New()
wSrc, wDst, warray := dmp.DiffLinesToRunes(s1, s2)
diffs := dmp.DiffMainRunes(wSrc, wDst, false)
diffs = dmp.DiffCharsToLines(diffs, warray)
return dmp.DiffPrettyText(diffs)
}
// SyncFile copies file from src file path to a dst file path by replacement
// deletes dst file if src file doesn't exist
func SyncFile(src, dst string) error {

View File

@@ -261,3 +261,25 @@ func TestSyncFileNoSrcFile(t *testing.T) {
assert.Error(t, err)
assert.True(t, strings.Contains(err.Error(), "no such file or directory"))
}
func TestPrettyFileDiff(t *testing.T) {
s1 := `apiVersion: someversion/v1alpha2
kind: ContainerCluster
metadata:
clusterName: "some_cluster"
name: asm-cluster
namespace: "PROJECT_ID" # {"$ref":"#/definitions/io.k8s.cli.setters.gcloud.core.project"}`
s2 := `apiVersion: someversion/v1alpha2
kind: ContainerCluster
metadata:
clusterName: "some_cluster"
name: asm-cluster
namespace: "some_project" # {"$ref":"#/definitions/io.k8s.cli.setters.gcloud.core.project"}`
expectedLine1 := `[31m namespace: "PROJECT_ID" # {"$ref":"#/definitions/io.k8s.cli.setters.gcloud.core.project"}`
expectedLine2 := `[32m namespace: "some_project" # {"$ref":"#/definitions/io.k8s.cli.setters.gcloud.core.project"}`
assert.Contains(t, PrettyFileDiff(s1, s2), expectedLine1)
assert.Contains(t, PrettyFileDiff(s1, s2), expectedLine2)
}