package view import ( "strings" "testing" "git.novox.be/novox/mesh-sdk/go/delivery" ) // I5 (issue 1851): from R4e the indexer writes the new form alone, and a module's fingerprint is built by the builder's key // of it; the page shows the indexer's fp2 against that key's state, or the reason it has none. const fp2A = "src2:3333333333333333333333333333333333333333333333333333333333333333" func builderKey(t *testing.T, module, fp2 string, b delivery.BuilderBuild) Entry { t.Helper() key, err := delivery.BuilderBuildKey(module, fp2) if err != nil { t.Fatal(err) } data, err := delivery.EncodeBuilderBuild(b) if err != nil { t.Fatal(err) } return Entry{Bucket: delivery.BuilderBuildsBucket, Key: key, Value: data, At: t0} } func TestAFingerprintOfTheNewFormIsShownAgainstItsBuilderKey(t *testing.T) { // I5 m := New() manifest := strings.Repeat("a", 64) d := "sha256:" + strings.Repeat("2", 64) fill(m, modEntry(t, "a", delivery.Module{FP2: fp2A, Manifest: manifest, Repository: "novox/mesh-delivery", Commit: hA}), builderKey(t, "a", fp2A, delivery.BuilderBuild{State: delivery.BuildDone, By: "shanks.mesh-delivery-builder", Manifest: manifest, Artifacts: []delivery.BuiltArtifact{{Name: "program", Kind: "bundle", Digest: d, Reference: "artifact-store://a/program/blobs/" + d}}}), modEntry(t, "f", delivery.Module{FP2: fp2A, Manifest: manifest, Repository: "novox/mesh-delivery", Commit: hA}), builderKey(t, "f", fp2A, delivery.BuilderBuild{State: delivery.BuildFailed, By: "shanks.mesh-delivery-builder", Manifest: manifest, Error: "not stored: program: 507"}), modEntry(t, "n", delivery.Module{FP2: fp2A, Manifest: manifest, Repository: "novox/mesh-delivery", Commit: hA}), modEntry(t, "r", delivery.Module{None2: "toolchain not yet reported", Repository: "novox/mesh-delivery", Commit: hA})) s := m.Snapshot() if r := fpRow(t, s, "a"); r.State != FPBuilt || r.Indexer != fp2A { t.Errorf("a = %+v, want built with the indexer's fp2", r) } if r := fpRow(t, s, "f"); r.State != FPBuildFailed || !strings.Contains(r.Reason, "not stored") { t.Errorf("f = %+v, want build failed with its error", r) } if r := fpRow(t, s, "n"); r.State != FPNoKey || r.Indexer != fp2A { t.Errorf("n = %+v, want no key", r) } if r := fpRow(t, s, "r"); r.State != FPNone || r.Reason != "toolchain not yet reported" { t.Errorf("r = %+v, want none with the new form's reason", r) } }