100 lines · 2.7 KB · Go
RawDownload
package cli import (	"bytes"	"errors"	"io"	"strings"	"testing") func TestCommandAliasesTargetRegisteredCommands(t *testing.T) {	want := map[string]string{		"new":     "create",		"ls":      "list",		"ssh":     "enter",		"shell":   "enter",		"export":  "backup",		"save":    "backup",		"load":    "import",		"restore": "import",		"update":  "upgrade",		"rm":      "delete",		"remove":  "delete",	} 	if len(aliases) != len(want) {		t.Fatalf("alias count = %d, want %d: %v", len(aliases), len(want), aliases)	}	for alias, target := range want {		if got := aliases[alias]; got != target {			t.Errorf("aliases[%q] = %q, want %q", alias, got, target)		}		if commands[target] == nil {			t.Errorf("alias %q targets unregistered command %q", alias, target)		}	}} func TestUsageShowsAliasesFromCommandSpecs(t *testing.T) {	var usage bytes.Buffer	printUsage(&usage) 	for _, line := range []string{		"  new        create",		"  ls         list",		"  ssh        enter",		"  shell      enter",		"  export     backup",		"  save       backup",		"  load       import",		"  restore    import",		"  update     upgrade",		"  rm         delete",		"  remove     delete",	} {		if !strings.Contains(usage.String(), line) {			t.Errorf("usage does not contain alias line %q:\n%s", line, usage.String())		}	}} func TestUsageMentionsCustomServiceLogs(t *testing.T) {	var usage bytes.Buffer	printUsage(&usage)	if !strings.Contains(usage.String(), "custom-service events") {		t.Fatalf("logs help does not mention custom services:\n%s", usage.String())	}} func TestNoArgumentsShowsOverviewAndCommands(t *testing.T) {	var stdout, stderr bytes.Buffer	status := runWithOverview([]string{"tx9"}, nil, func(w io.Writer) error {		_, err := io.WriteString(w, "ASCII BOX DIAGRAM\n")		return err	}, &stdout, &stderr)	if status != 0 {		t.Fatalf("status = %d, want 0; stderr=%s", status, stderr.String())	}	for _, want := range []string{"ASCII BOX DIAGRAM", "Commands:", "logs", "resources"} {		if !strings.Contains(stdout.String(), want) {			t.Errorf("stdout missing %q:\n%s", want, stdout.String())		}	}} func TestNoArgumentsFallsBackToCommandsWhenOverviewFails(t *testing.T) {	var stdout, stderr bytes.Buffer	status := runWithOverview([]string{"tx9"}, nil, func(io.Writer) error {		return errors.New("daemon unavailable")	}, &stdout, &stderr)	if status != 0 {		t.Fatalf("status = %d, want 0", status)	}	if !strings.Contains(stdout.String(), "overview unavailable") || !strings.Contains(stdout.String(), "Commands:") {		t.Fatalf("stdout missing fallback:\n%s", stdout.String())	}	if !strings.Contains(stderr.String(), "daemon unavailable") {		t.Fatalf("stderr missing cause:\n%s", stderr.String())	}}