git/intake/main
internal/cli/progress_test.go
47 lines1 KB last change raw · history
package cli

import (
	"context"
	"io"
	"strings"
	"testing"

	"intake/internal/config"
	"intake/internal/scan"
)

func TestFileAlbumKeepsAnInstalledLogger(t *testing.T) {
	var lines []string
	app := New(config.Defaults(), io.Discard, io.Discard, strings.NewReader(""))
	app.Logf = func(line string) { lines = append(lines, line) }

	if _, err := app.FileAlbum(context.Background(), "/nonexistent/album", nil); err == nil {
		t.Skip("expected a failure for a missing album")
	}

	app.logf("still listening")
	found := false
	for _, l := range lines {
		if strings.Contains(l, "still listening") {
			found = true
		}
	}
	if !found {
		t.Errorf("the installed logger was cleared by FileAlbum; got %v", lines)
	}
}

func TestQuietSuppressesEverything(t *testing.T) {
	var out strings.Builder
	app := New(config.Defaults(), &out, io.Discard, strings.NewReader(""))
	app.Quiet = true
	app.Logf = func(string) { t.Error("a quiet app must not call its logger") }
	app.logf("this must not appear")
	app.logf("nor this")
	if out.Len() != 0 {
		t.Errorf("quiet app wrote to its output: %q", out.String())
	}
}

var _ = scan.Album{}