189 lines
6.1 KiB
Go
189 lines
6.1 KiB
Go
package artifacts
|
|
|
|
import "testing"
|
|
|
|
func TestArtifactCatalogRegisterBuiltInsAndLookup(t *testing.T) {
|
|
catalog := NewArtifactCatalog()
|
|
if err := catalog.RegisterBuiltIns(); err != nil {
|
|
t.Fatalf("RegisterBuiltIns() error = %v", err)
|
|
}
|
|
|
|
entry, ok := catalog.Lookup(ArtifactTranscriptFinal)
|
|
if !ok {
|
|
t.Fatalf("Lookup(%q) ok = false, want true", ArtifactTranscriptFinal)
|
|
}
|
|
if !entry.Planned {
|
|
t.Fatalf("entry.Planned = false, want true")
|
|
}
|
|
if entry.Executable {
|
|
t.Fatalf("entry.Executable = true, want false")
|
|
}
|
|
if entry.CanonicalRelPath != "transcripts/final.json" {
|
|
t.Fatalf("entry.CanonicalRelPath = %q, want transcripts/final.json", entry.CanonicalRelPath)
|
|
}
|
|
}
|
|
|
|
func TestArtifactCatalogRegisterConfiguredArtifactsDefaultsToEnabled(t *testing.T) {
|
|
catalog := NewArtifactCatalog()
|
|
if err := catalog.RegisterConfiguredArtifacts(map[string]ConfiguredArtifactDefinition{
|
|
"player_handout": {Enabled: false, OutputPath: "artifacts/player_handout.md"},
|
|
"session_recap": {Enabled: true, OutputPath: "artifacts/session_recap.md"},
|
|
}, nil); err != nil {
|
|
t.Fatalf("RegisterConfiguredArtifacts() error = %v", err)
|
|
}
|
|
|
|
recapID, ok := catalog.SourceIDForConfiguredKey("session_recap")
|
|
if !ok {
|
|
t.Fatal("SourceIDForConfiguredKey(session_recap) ok = false, want true")
|
|
}
|
|
recap, ok := catalog.Lookup(recapID)
|
|
if !ok {
|
|
t.Fatalf("Lookup(%q) ok = false, want true", recapID)
|
|
}
|
|
if !recap.Executable {
|
|
t.Fatalf("recap.Executable = false, want true")
|
|
}
|
|
|
|
handoutID, ok := catalog.SourceIDForConfiguredKey("player_handout")
|
|
if !ok {
|
|
t.Fatal("SourceIDForConfiguredKey(player_handout) ok = false, want true")
|
|
}
|
|
handout, ok := catalog.Lookup(handoutID)
|
|
if !ok {
|
|
t.Fatalf("Lookup(%q) ok = false, want true", handoutID)
|
|
}
|
|
if handout.Executable {
|
|
t.Fatalf("handout.Executable = true, want false")
|
|
}
|
|
}
|
|
|
|
func TestArtifactCatalogRegisterConfiguredArtifactsSelectedSetOverridesEnabled(t *testing.T) {
|
|
catalog := NewArtifactCatalog()
|
|
if err := catalog.RegisterConfiguredArtifacts(
|
|
map[string]ConfiguredArtifactDefinition{
|
|
"session_recap": {Enabled: true, OutputPath: "artifacts/session_recap.md"},
|
|
"player_handout": {Enabled: false, OutputPath: "artifacts/player_handout.md"},
|
|
},
|
|
[]string{"player_handout"},
|
|
); err != nil {
|
|
t.Fatalf("RegisterConfiguredArtifacts() error = %v", err)
|
|
}
|
|
|
|
entries := catalog.ListConfigured()
|
|
if len(entries) != 2 {
|
|
t.Fatalf("ListConfigured() len = %d, want 2", len(entries))
|
|
}
|
|
if entries[0].ConfiguredKey != "player_handout" || entries[0].Executable != true {
|
|
t.Fatalf("entries[0] = %+v, want player_handout executable", entries[0])
|
|
}
|
|
if entries[1].ConfiguredKey != "session_recap" || entries[1].Executable != false {
|
|
t.Fatalf("entries[1] = %+v, want session_recap disabled by selection", entries[1])
|
|
}
|
|
}
|
|
|
|
func TestArtifactCatalogRejectsSelectedUnknownArtifact(t *testing.T) {
|
|
catalog := NewArtifactCatalog()
|
|
err := catalog.RegisterConfiguredArtifacts(
|
|
map[string]ConfiguredArtifactDefinition{
|
|
"session_recap": {Enabled: true, OutputPath: "artifacts/session_recap.md"},
|
|
},
|
|
[]string{"unknown"},
|
|
)
|
|
if err == nil {
|
|
t.Fatal("RegisterConfiguredArtifacts() error = nil, want non-nil")
|
|
}
|
|
}
|
|
|
|
func TestArtifactCatalogRejectsConfiguredSourceConflictAcrossRegistrations(t *testing.T) {
|
|
catalog := NewArtifactCatalog()
|
|
if err := catalog.RegisterConfiguredArtifacts(
|
|
map[string]ConfiguredArtifactDefinition{
|
|
"session_recap": {Enabled: true, OutputPath: "artifacts/session_recap.md"},
|
|
},
|
|
nil,
|
|
); err != nil {
|
|
t.Fatalf("RegisterConfiguredArtifacts() first call error = %v", err)
|
|
}
|
|
err := catalog.RegisterConfiguredArtifacts(
|
|
map[string]ConfiguredArtifactDefinition{
|
|
"session_recap": {Enabled: true, OutputPath: "artifacts/session_recap.md"},
|
|
},
|
|
nil,
|
|
)
|
|
if err == nil {
|
|
t.Fatal("RegisterConfiguredArtifacts() error = nil, want non-nil")
|
|
}
|
|
}
|
|
|
|
func TestArtifactCatalogMarkAvailableGenerated(t *testing.T) {
|
|
catalog := NewArtifactCatalog()
|
|
if err := catalog.RegisterConfiguredArtifacts(
|
|
map[string]ConfiguredArtifactDefinition{
|
|
"session_recap": {Enabled: true, OutputPath: "artifacts/session_recap.md"},
|
|
},
|
|
nil,
|
|
); err != nil {
|
|
t.Fatalf("RegisterConfiguredArtifacts() error = %v", err)
|
|
}
|
|
|
|
sourceID, _ := catalog.SourceIDForConfiguredKey("session_recap")
|
|
if err := catalog.MarkAvailableGenerated(sourceID, "/tmp/session_recap.md"); err != nil {
|
|
t.Fatalf("MarkAvailableGenerated() error = %v", err)
|
|
}
|
|
entry, _ := catalog.Lookup(sourceID)
|
|
if !entry.Available {
|
|
t.Fatalf("entry.Available = false, want true")
|
|
}
|
|
if entry.Provenance != ArtifactProvenanceGeneratedCurrentAnalyzeRun {
|
|
t.Fatalf("entry.Provenance = %q, want %q", entry.Provenance, ArtifactProvenanceGeneratedCurrentAnalyzeRun)
|
|
}
|
|
}
|
|
|
|
func TestArtifactCatalogMarkAvailableFromDisk(t *testing.T) {
|
|
catalog := NewArtifactCatalog()
|
|
if err := catalog.RegisterConfiguredArtifacts(
|
|
map[string]ConfiguredArtifactDefinition{
|
|
"session_recap": {Enabled: false, OutputPath: "artifacts/session_recap.md"},
|
|
},
|
|
nil,
|
|
); err != nil {
|
|
t.Fatalf("RegisterConfiguredArtifacts() error = %v", err)
|
|
}
|
|
|
|
sourceID, _ := catalog.SourceIDForConfiguredKey("session_recap")
|
|
if err := catalog.MarkAvailableFromDisk(sourceID, "/tmp/session_recap.md"); err != nil {
|
|
t.Fatalf("MarkAvailableFromDisk() error = %v", err)
|
|
}
|
|
entry, _ := catalog.Lookup(sourceID)
|
|
if !entry.Available {
|
|
t.Fatalf("entry.Available = false, want true")
|
|
}
|
|
if entry.Provenance != ArtifactProvenanceDisabledFromDisk {
|
|
t.Fatalf("entry.Provenance = %q, want %q", entry.Provenance, ArtifactProvenanceDisabledFromDisk)
|
|
}
|
|
}
|
|
|
|
func TestArtifactCatalogLookupPlannedButUnavailable(t *testing.T) {
|
|
catalog := NewArtifactCatalog()
|
|
if err := catalog.RegisterConfiguredArtifacts(
|
|
map[string]ConfiguredArtifactDefinition{
|
|
"session_recap": {Enabled: true, OutputPath: "artifacts/session_recap.md"},
|
|
},
|
|
nil,
|
|
); err != nil {
|
|
t.Fatalf("RegisterConfiguredArtifacts() error = %v", err)
|
|
}
|
|
|
|
sourceID, _ := catalog.SourceIDForConfiguredKey("session_recap")
|
|
entry, ok := catalog.Lookup(sourceID)
|
|
if !ok {
|
|
t.Fatalf("Lookup(%q) ok = false, want true", sourceID)
|
|
}
|
|
if !entry.Planned {
|
|
t.Fatalf("entry.Planned = false, want true")
|
|
}
|
|
if entry.Available {
|
|
t.Fatalf("entry.Available = true, want false")
|
|
}
|
|
}
|