Something went wrong. Try again.
Monorepo for Tangled tangled.org
Something went wrong. Try again.
Go
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283package logview
import ( "context" "fmt" "io" "strings" "testing"
"tangled.org/core/spindle/db" "tangled.org/core/spindle/models")
type recordingReader struct { contents map[string]string opens []string}
func (r *recordingReader) Open(_ context.Context, ref string) (io.ReadCloser, error) { r.opens = append(r.opens, ref) content, ok := r.contents[ref] if !ok { return nil, fmt.Errorf("missing artifact %q", ref) } return io.NopCloser(strings.NewReader(content)), nil}
func TestFollowDoesNotUseAnotherPipelineArtifact(t *testing.T) { d, err := db.Make(context.Background(), t.TempDir()+"/spindle.db") if err != nil { t.Fatal(err) } t.Cleanup(func() { d.Close() })
target := models.WorkflowId{PipelineId: models.PipelineId("target"), Name: "build.yml"} other := models.WorkflowId{PipelineId: models.PipelineId("other"), Name: target.Name} if err := d.SaveArtifactRef("other-lease", "did:plc:other", other, "other.log", "hash"); err != nil { t.Fatal(err) }
reader := &recordingReader{contents: map[string]string{"other.log": "wrong log\n"}} if _, _, err := Follow(context.Background(), d, reader, t.TempDir(), target, true); err == nil { t.Fatal("Follow succeeded without an artifact for the target pipeline") } if len(reader.opens) != 0 { t.Fatalf("opened unrelated artifacts: %v", reader.opens) }}
func TestFollowReadsExactPipelineArtifact(t *testing.T) { d, err := db.Make(context.Background(), t.TempDir()+"/spindle.db") if err != nil { t.Fatal(err) } t.Cleanup(func() { d.Close() })
target := models.WorkflowId{PipelineId: models.PipelineId("target"), Name: "build.yml"} other := models.WorkflowId{PipelineId: models.PipelineId("other"), Name: target.Name} if err := d.SaveArtifactRef("other-lease", "did:plc:other", other, "other.log", "hash"); err != nil { t.Fatal(err) } if err := d.SaveArtifactRef("target-lease", "did:plc:target", target, "target.log", "hash"); err != nil { t.Fatal(err) }
reader := &recordingReader{contents: map[string]string{ "other.log": "wrong log\n", "target.log": "target log\n", }} lines, stop, err := Follow(context.Background(), d, reader, t.TempDir(), target, true) if err != nil { t.Fatal(err) } defer stop() line := <-lines if line == nil || line.Text != "target log" { t.Fatalf("line = %#v, want target log", line) } if len(reader.opens) != 1 || reader.opens[0] != "target.log" { t.Fatalf("opened artifacts = %v, want target.log", reader.opens) }}