Add structured destination comparison details

This commit is contained in:
2026-06-18 15:09:18 +00:00
parent c4e8ebff6f
commit 598b665307
7 changed files with 277 additions and 21 deletions

View File

@@ -0,0 +1,41 @@
package publish
import (
"testing"
"time"
"gitea.maximumdirect.net/eric/distributor/internal/config"
"gitea.maximumdirect.net/eric/distributor/internal/state"
"gitea.maximumdirect.net/eric/distributor/internal/storage/fake"
"gitea.maximumdirect.net/eric/distributor/internal/testutil"
)
func TestCompareDestinationFixedPathReportsDestinationNewerDetail(t *testing.T) {
sourceBackend := fake.New()
sourceBundle := testutil.WriteFakeSourceBundle(t, sourceBackend, "bundle", testutil.BundleOptions{})
destinationState := testutil.DestinationState(sourceBundle.Manifest, testutil.DestinationStateOptions{})
destinationState.Source.Manifest.ID = "latest.previous"
destinationState.Source.Manifest.Created = sourceBundle.Manifest.Created.Add(time.Hour)
comparison := compareDestination(Request{
PipelineID: "reports",
DestinationID: "archive",
SourceBundle: sourceBundle,
DestinationBundlePath: "",
PathMapping: config.PathMappingFixed,
State: config.StatePolicy{Mode: config.StateModeSingleOwner},
}, state.DestinationStatus{State: &destinationState, HasContents: true})
if comparison.Outcome != state.OutcomeDestinationNewer {
t.Fatalf("comparison outcome = %s, want %s", comparison.Outcome, state.OutcomeDestinationNewer)
}
if comparison.Reason != "fixed destination source is newer than selected source" {
t.Fatalf("comparison reason = %q, want fixed-path newer reason", comparison.Reason)
}
if comparison.Detail.Kind != state.ComparisonDetailDestinationNewer {
t.Fatalf("detail kind = %q, want %q", comparison.Detail.Kind, state.ComparisonDetailDestinationNewer)
}
if comparison.Detail.CurrentSourceID != sourceBundle.Manifest.ID || comparison.Detail.DestinationSourceID != "latest.previous" {
t.Fatalf("detail = %#v, want source ids", comparison.Detail)
}
}