Index resolution and origin membership
This commit is contained in:
@@ -87,6 +87,51 @@ func TestInheritedOriginsKeepSourcePathsPresenceAndIndependentReplacement(t *tes
|
||||
}
|
||||
}
|
||||
|
||||
func TestOriginMembershipPreservesLocationAndSourceCoverageRules(t *testing.T) {
|
||||
location := Location{SourceID: "source", Line: 4, Column: 2}
|
||||
otherCoordinates := location
|
||||
otherCoordinates.Line++
|
||||
|
||||
container := Origin{
|
||||
Layer: LayerOverlay,
|
||||
Operation: ChangeNormalization,
|
||||
Locations: []Location{location},
|
||||
}
|
||||
if !originContainedBy(container, container) {
|
||||
t.Fatal("identical location evidence was not contained")
|
||||
}
|
||||
coordinateDifference := container
|
||||
coordinateDifference.Locations = []Location{otherCoordinates}
|
||||
if originContainedBy(coordinateDifference, container) {
|
||||
t.Fatal("location containment ignored differing coordinates")
|
||||
}
|
||||
|
||||
parent := Keys("parent")
|
||||
child := parent.Key("child")
|
||||
change := Change{Path: parent, Origin: container}
|
||||
descendantOrigin := Origin{
|
||||
Layer: container.Layer,
|
||||
Operation: container.Operation,
|
||||
Locations: []Location{otherCoordinates},
|
||||
}
|
||||
if !originRepresentedByChange(child, descendantOrigin, change) {
|
||||
t.Fatal("descendant source coverage rejected matching SourceID with different coordinates")
|
||||
}
|
||||
descendantOrigin.Locations[0].SourceID = "another-source"
|
||||
if originRepresentedByChange(child, descendantOrigin, change) {
|
||||
t.Fatal("descendant source coverage accepted an unrecorded SourceID")
|
||||
}
|
||||
|
||||
withContributor := container
|
||||
withContributor.contributors = []inheritanceContributor{{source: parent, location: location}}
|
||||
if originContainedBy(withContributor, container) {
|
||||
t.Fatal("exact location containment ignored the contributor-empty mismatch")
|
||||
}
|
||||
if !originRepresentedByChange(child, withContributor, change) {
|
||||
t.Fatal("descendant source coverage was conflated with contributor containment")
|
||||
}
|
||||
}
|
||||
|
||||
func TestProjectedInheritanceStepsMatchScanAndRetainOwnership(t *testing.T) {
|
||||
sourcePath := Keys("source", "a/b", "01")
|
||||
firstLocations := []Location{{SourceID: "first;:source", Line: -1, Column: 2}}
|
||||
|
||||
Reference in New Issue
Block a user