Materialize references for all eligible targets
This commit is contained in:
@@ -965,6 +965,24 @@ func TestRunReturnsFailedManifestWhenOutputEncoderFails(t *testing.T) {
|
||||
|
||||
func TestRunManifestIncludesPipelineAndLaneDetails(t *testing.T) {
|
||||
resolved := resolvedPipelineWithValidators("configured")
|
||||
resolved.ChunkReferences.ReferenceSet = contracts.ReferenceSet{
|
||||
Slots: map[string]contracts.ResolvedReferenceSlot{
|
||||
"scene_guide": {
|
||||
Slot: contracts.ReferenceSlot{Name: "scene_guide"},
|
||||
Items: []contracts.ReferenceItem{
|
||||
{
|
||||
SlotName: "scene_guide",
|
||||
MediaType: "text/plain; charset=utf-8",
|
||||
Content: []byte("chunk reference content"),
|
||||
Digest: "sha256:chunk-reference",
|
||||
Origin: contracts.ReferenceOrigin{Type: "file", URI: "file:///tmp/scene-guide.txt"},
|
||||
SizeBytes: int64(len("chunk reference content")),
|
||||
BindingSource: contracts.ReferenceBindingSourceCLI,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
resolved.ArtifactLanes[0].ExtractReferences.ReferenceSet = contracts.ReferenceSet{
|
||||
Slots: map[string]contracts.ResolvedReferenceSlot{
|
||||
"roster": {
|
||||
@@ -983,6 +1001,24 @@ func TestRunManifestIncludesPipelineAndLaneDetails(t *testing.T) {
|
||||
},
|
||||
},
|
||||
}
|
||||
resolved.ArtifactLanes[0].NormalizeReferences.ReferenceSet = contracts.ReferenceSet{
|
||||
Slots: map[string]contracts.ResolvedReferenceSlot{
|
||||
"normalization_notes": {
|
||||
Slot: contracts.ReferenceSlot{Name: "normalization_notes"},
|
||||
Items: []contracts.ReferenceItem{
|
||||
{
|
||||
SlotName: "normalization_notes",
|
||||
MediaType: "text/plain; charset=utf-8",
|
||||
Content: []byte("normalize reference content"),
|
||||
Digest: "sha256:normalize-reference",
|
||||
Origin: contracts.ReferenceOrigin{Type: "file", URI: "file:///tmp/normalize.txt"},
|
||||
SizeBytes: int64(len("normalize reference content")),
|
||||
BindingSource: contracts.ReferenceBindingSourceConfig,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
output, err := New(newRunnerRegistries(t, nil)).Run(context.Background(), RunInput{Pipeline: resolved})
|
||||
if err != nil {
|
||||
@@ -999,15 +1035,26 @@ func TestRunManifestIncludesPipelineAndLaneDetails(t *testing.T) {
|
||||
if !reflect.DeepEqual(manifest.SourceDigests, []string{"sha256:source"}) {
|
||||
t.Fatalf("SourceDigests = %#v, want source digest", manifest.SourceDigests)
|
||||
}
|
||||
if len(manifest.References) != 1 {
|
||||
t.Fatalf("References = %#v, want one reference provenance entry", manifest.References)
|
||||
if len(manifest.References) != 3 {
|
||||
t.Fatalf("References = %#v, want three reference provenance entries", manifest.References)
|
||||
}
|
||||
reference := manifest.References[0]
|
||||
if reference.Stage != string(StageExtract) || reference.LaneID != "alpha" || reference.SlotName != "roster" || reference.Digest != "sha256:reference" {
|
||||
t.Fatalf("reference provenance = %#v, want lane slot digest", reference)
|
||||
chunkReference := manifest.References[0]
|
||||
if chunkReference.Stage != string(StageChunk) || chunkReference.LaneID != "" || chunkReference.SlotName != "scene_guide" || chunkReference.Digest != "sha256:chunk-reference" {
|
||||
t.Fatalf("chunk reference provenance = %#v, want chunk slot digest", chunkReference)
|
||||
}
|
||||
if reference.OriginType != "file" || reference.OriginURI != "file:///tmp/roster.txt" || reference.MediaType != "text/plain; charset=utf-8" || reference.SizeBytes != int64(len("reference content")) || reference.BindingSource != contracts.ReferenceBindingSourceConfig {
|
||||
t.Fatalf("reference provenance = %#v, want origin/media/size/source", reference)
|
||||
if chunkReference.OriginType != "file" || chunkReference.OriginURI != "file:///tmp/scene-guide.txt" || chunkReference.MediaType != "text/plain; charset=utf-8" || chunkReference.SizeBytes != int64(len("chunk reference content")) || chunkReference.BindingSource != contracts.ReferenceBindingSourceCLI {
|
||||
t.Fatalf("chunk reference provenance = %#v, want origin/media/size/source", chunkReference)
|
||||
}
|
||||
extractReference := manifest.References[1]
|
||||
if extractReference.Stage != string(StageExtract) || extractReference.LaneID != "alpha" || extractReference.SlotName != "roster" || extractReference.Digest != "sha256:reference" {
|
||||
t.Fatalf("extract reference provenance = %#v, want lane slot digest", extractReference)
|
||||
}
|
||||
if extractReference.OriginType != "file" || extractReference.OriginURI != "file:///tmp/roster.txt" || extractReference.MediaType != "text/plain; charset=utf-8" || extractReference.SizeBytes != int64(len("reference content")) || extractReference.BindingSource != contracts.ReferenceBindingSourceConfig {
|
||||
t.Fatalf("extract reference provenance = %#v, want origin/media/size/source", extractReference)
|
||||
}
|
||||
normalizeReference := manifest.References[2]
|
||||
if normalizeReference.Stage != string(StageNormalize) || normalizeReference.LaneID != "alpha" || normalizeReference.SlotName != "normalization_notes" || normalizeReference.Digest != "sha256:normalize-reference" {
|
||||
t.Fatalf("normalize reference provenance = %#v, want lane slot digest", normalizeReference)
|
||||
}
|
||||
if manifest.ValidationStatus != "approved" {
|
||||
t.Fatalf("ValidationStatus = %q, want approved", manifest.ValidationStatus)
|
||||
|
||||
Reference in New Issue
Block a user