mirror of
https://github.com/getsops/sops.git
synced 2026-02-06 06:45:18 +01:00
It's been around 9 months since our last vendor update. This is also needed for some new features being worked on for sops workspace. Additionally, this PR regenerates the kms mocks.
38 lines
1.0 KiB
Go
38 lines
1.0 KiB
Go
package assertions
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/smartystreets/assertions/internal/go-diff/diffmatchpatch"
|
|
)
|
|
|
|
func composePrettyDiff(expected, actual string) string {
|
|
diff := diffmatchpatch.New()
|
|
diffs := diff.DiffMain(expected, actual, false)
|
|
if prettyDiffIsLikelyToBeHelpful(diffs) {
|
|
return fmt.Sprintf("\nDiff: '%s'", diff.DiffPrettyText(diffs))
|
|
}
|
|
return ""
|
|
}
|
|
|
|
// prettyDiffIsLikelyToBeHelpful returns true if the diff listing contains
|
|
// more 'equal' segments than 'deleted'/'inserted' segments.
|
|
func prettyDiffIsLikelyToBeHelpful(diffs []diffmatchpatch.Diff) bool {
|
|
equal, deleted, inserted := measureDiffTypeLengths(diffs)
|
|
return equal > deleted && equal > inserted
|
|
}
|
|
|
|
func measureDiffTypeLengths(diffs []diffmatchpatch.Diff) (equal, deleted, inserted int) {
|
|
for _, segment := range diffs {
|
|
switch segment.Type {
|
|
case diffmatchpatch.DiffEqual:
|
|
equal += len(segment.Text)
|
|
case diffmatchpatch.DiffDelete:
|
|
deleted += len(segment.Text)
|
|
case diffmatchpatch.DiffInsert:
|
|
inserted += len(segment.Text)
|
|
}
|
|
}
|
|
return equal, deleted, inserted
|
|
}
|