package logtree

import (
	"context"
	"fmt"
	"os"
	"testing"
)

// PipeAllToStderr starts a goroutine that will forward all logtree entries
// into stderr, in the canonical logtree payload representation.
//
// It's designed to be used in tests, and will automatically stop when the
// test/benchmark it's running in exits.
func PipeAllToStderr(t testing.TB, lt *LogTree) {
	t.Helper()

	reader, err := lt.Read("", WithChildren(), WithStream())
	if err != nil {
		t.Fatalf("Failed to set up logtree reader: %v", err)
	}

	// Internal context used to cancel the goroutine. This could also be a
	// implemented via a channel.
	ctx, ctxC := context.WithCancel(context.Background())
	t.Cleanup(ctxC)

	go func() {
		for {
			select {
			case <-ctx.Done():
				return
			case p := <-reader.Stream:
				fmt.Fprintf(os.Stderr, "%s\n", p.String())
			}
		}
	}()
}
