A terminal client for Tangled, the git forge built on AT Protocol.
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130package cli
import ( "bytes" "strings" "testing"
"github.com/alyraffauf/tg/internal/app")
func TestNewRootCreatesIndependentCommandState(t *testing.T) { firstRoot := NewRoot(&app.Service{}) secondRoot := NewRoot(&app.Service{})
firstCreate, _, err := firstRoot.Find([]string{"repo", "create"}) if err != nil { t.Fatalf("find first repo create command: %v", err) } secondCreate, _, err := secondRoot.Find([]string{"repo", "create"}) if err != nil { t.Fatalf("find second repo create command: %v", err) } if firstCreate == secondCreate { t.Fatal("NewRoot reused the repo create command") }
if err := firstCreate.Flags().Set("description", "first root"); err != nil { t.Fatalf("set first root flag: %v", err) } if got := secondCreate.Flags().Lookup("description").Value.String(); got != "" { t.Fatalf("second root inherited description %q", got) }}
func TestExecuteWithRendersErrors(t *testing.T) { var errorOutput bytes.Buffer err := ExecuteWith([]string{"issue", "edit", "abc123"}, nil, &bytes.Buffer{}, &errorOutput) if err == nil { t.Fatal("ExecuteWith() returned nil error") }
const want = "Error: provide --title or --body\n" if got := errorOutput.String(); got != want { t.Errorf("error output = %q, want %q", got, want) }}
func TestExecuteWithRendersPreCommandErrors(t *testing.T) { var errorOutput bytes.Buffer err := ExecuteWith([]string{"--appview"}, nil, &bytes.Buffer{}, &errorOutput) if err == nil { t.Fatal("ExecuteWith() returned nil error") }
if got := errorOutput.String(); !strings.Contains(got, "Error: flag --appview requires a value\n") { t.Errorf("error output = %q", got) }}
func TestRepoCreateSSHPortHelp(t *testing.T) { create, _, err := NewRoot(&app.Service{}).Find([]string{"repo", "create"}) if err != nil { t.Fatalf("find repo create command: %v", err) } flag := create.Flags().Lookup("ssh-port") if flag == nil || flag.Usage != "SSH port for cloning from or pushing to the selected Knot" { t.Fatalf("ssh-port flag = %+v", flag) } if flag.DefValue != "22" { t.Fatalf("ssh-port default = %q, want 22", flag.DefValue) } if err := create.Flags().Set("ssh-port", "2200"); err != nil { t.Fatalf("set ssh-port: %v", err) } if got := flag.Value.String(); got != "2200" { t.Fatalf("ssh-port = %q, want 2200", got) }}
func TestNewRootCreatesIndependentStateCommands(t *testing.T) { firstRoot := NewRoot(&app.Service{}) secondRoot := NewRoot(&app.Service{})
firstClose, _, err := firstRoot.Find([]string{"issue", "close"}) if err != nil { t.Fatalf("find first issue close command: %v", err) } secondClose, _, err := secondRoot.Find([]string{"issue", "close"}) if err != nil { t.Fatalf("find second issue close command: %v", err) } if firstClose == secondClose { t.Fatal("NewRoot reused the issue close command") }
if err := firstClose.Flags().Set("repo", "first/repository"); err != nil { t.Fatalf("set first issue close repo: %v", err) } if got := secondClose.Flags().Lookup("repo").Value.String(); got != "" { t.Fatalf("second root inherited repo %q", got) }}
func TestParseFlagSettings(t *testing.T) { flags, err := parseFlagSettings([]string{ "--appview", "https://flag.example", "--account=flag.example", "--config", "/tmp/tg.toml", "--", "--account", "ignored", }) if err != nil { t.Fatalf("parseFlagSettings() error = %v", err) } if flags.Appview != "https://flag.example" || !flags.AppviewSet { t.Fatalf("unexpected appview settings: %+v", flags) } if flags.Account != "flag.example" || !flags.AccountSet { t.Fatalf("unexpected account settings: %+v", flags) } if flags.ConfigPath != "/tmp/tg.toml" || !flags.ConfigSet { t.Fatalf("unexpected config settings: %+v", flags) }}
func TestParseFlagSettingsRejectsMissingValue(t *testing.T) { if _, err := parseFlagSettings([]string{"--appview"}); err == nil { t.Fatal("parseFlagSettings() accepted a missing value") }}