Replay explanations through shared history selections
This commit is contained in:
@@ -389,6 +389,11 @@ func TestExplanationReconcilesDefaultsAfterInputReplacement(t *testing.T) {
|
||||
if last.Origin.Layer != info.Origin.Layer {
|
||||
t.Fatal("decoding lost effective origin")
|
||||
}
|
||||
for _, metadataChange := range result.Metadata().History(path) {
|
||||
if metadataChange.Origin.Operation == ChangeDecoding {
|
||||
t.Fatal("typed reconciliation leaked into metadata history")
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
@@ -535,6 +540,25 @@ func TestExplanationReplaysResolutionAdditionsAndOverlappingIntent(t *testing.T)
|
||||
if overlap && count != 1 {
|
||||
t.Fatalf("overlapping records applied %d times", count)
|
||||
}
|
||||
if overlap && path.String() == "/m" {
|
||||
metadataHistory := result.Metadata().History(path)
|
||||
var sharedResolutionOrigin bool
|
||||
for _, metadataChange := range metadataHistory {
|
||||
if metadataChange.Origin.Layer != LayerResolution {
|
||||
continue
|
||||
}
|
||||
for _, explanationChange := range x.History {
|
||||
if explanationChange.Origin.Layer == metadataChange.Origin.Layer &&
|
||||
explanationChange.Origin.Operation == metadataChange.Origin.Operation &&
|
||||
reflect.DeepEqual(explanationChange.Origin.Locations, metadataChange.Origin.Locations) {
|
||||
sharedResolutionOrigin = true
|
||||
}
|
||||
}
|
||||
}
|
||||
if !sharedResolutionOrigin {
|
||||
t.Fatalf("metadata and explanation disagree on overlapping resolution attribution: metadata %#v, explanation %#v", metadataHistory, x.History)
|
||||
}
|
||||
}
|
||||
last := x.History[len(x.History)-1]
|
||||
if last.After != x.Effective {
|
||||
t.Fatalf("incorrect replay for %s: %#v", path, x)
|
||||
|
||||
Reference in New Issue
Block a user