Skip to content

Commit

Permalink
Adding tests for PrintUsageError
Browse files Browse the repository at this point in the history
  • Loading branch information
Rican7 committed Aug 10, 2023
1 parent 5f2876c commit c59c92b
Showing 1 changed file with 160 additions and 97 deletions.
257 changes: 160 additions & 97 deletions lieut_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -235,6 +235,142 @@ func TestMultiCommandApp_PrintVersion(t *testing.T) {
}
}

func TestSingleCommandApp_PrintHelp(t *testing.T) {
wantFormat := `Usage: test testing
A test
Options:
-help
Display the help message
-testflag string
A test flag (default "testval")
-version
Display the application version
test vTest (%s/%s)
`
want := fmt.Sprintf(wantFormat, runtime.GOOS, runtime.GOARCH)

var buf bytes.Buffer

flagSet := flag.NewFlagSet(testAppInfo.Name, flag.ExitOnError)
flagSet.String("testflag", "testval", "A test flag")

app := NewSingleCommandApp(testAppInfo, testNoOpExecutor, flagSet, &buf, &buf)

app.PrintHelp()

got := buf.String()

if got != want {
t.Errorf("app.PrintHelp gave %q, want %q", got, want)
}
}

func TestMultiCommandApp_PrintHelp(t *testing.T) {
wantFormat := `Usage: test testing
A test
Commands:
testcommand A test command
Options:
-help
Display the help message
-testflag string
A test flag (default "testval")
-version
Display the application version
test vTest (%s/%s)
`
want := fmt.Sprintf(wantFormat, runtime.GOOS, runtime.GOARCH)

var buf bytes.Buffer

flagSet := flag.NewFlagSet(testAppInfo.Name, flag.ExitOnError)
flagSet.String("testflag", "testval", "A test flag")

app := NewMultiCommandApp(testAppInfo, flagSet, &buf, &buf)

testCommandInfo := CommandInfo{
Name: "testcommand",
Summary: "A test command",
Usage: "args here...",
}

commandFlagSet := flag.NewFlagSet(testCommandInfo.Name, flag.ExitOnError)
commandFlagSet.Int("testcommandflag", 5, "A test command flag")

err := app.SetCommand(testCommandInfo, testNoOpExecutor, commandFlagSet)
if err != nil {
t.Fatalf("SetCommand returned error: %v", err)
}

app.PrintHelp("")

got := buf.String()

if got != want {
t.Errorf("app.PrintHelp gave %q, want %q", got, want)
}
}

func TestMultiCommandApp_PrintHelp_Command(t *testing.T) {
wantFormat := `Usage: test testcommand args here...
A test command
Options:
-help
Display the help message
-testcommandflag int
A test command flag (default 5)
-testflag string
A test flag (default "testval")
-version
Display the application version
test vTest (%s/%s)
`
want := fmt.Sprintf(wantFormat, runtime.GOOS, runtime.GOARCH)

var buf bytes.Buffer

flagSet := flag.NewFlagSet(testAppInfo.Name, flag.ExitOnError)
flagSet.String("testflag", "testval", "A test flag")

app := NewMultiCommandApp(testAppInfo, flagSet, &buf, &buf)

testCommandInfo := CommandInfo{
Name: "testcommand",
Summary: "A test command",
Usage: "args here...",
}

commandFlagSet := flag.NewFlagSet(testCommandInfo.Name, flag.ExitOnError)
commandFlagSet.Int("testcommandflag", 5, "A test command flag")

err := app.SetCommand(testCommandInfo, testNoOpExecutor, commandFlagSet)
if err != nil {
t.Fatalf("SetCommand returned error: %v", err)
}

app.PrintHelp("testcommand")

got := buf.String()

if got != want {
t.Errorf("app.PrintHelp gave %q, want %q", got, want)
}
}

func TestSingleCommandApp_PrintUsage(t *testing.T) {
for testName, testData := range map[string]struct {
usage string
Expand Down Expand Up @@ -355,139 +491,66 @@ func TestMultiCommandApp_PrintUsage(t *testing.T) {
}
}

func TestSingleCommandApp_PrintHelp(t *testing.T) {
wantFormat := `Usage: test testing
A test
Options:
-help
Display the help message
-testflag string
A test flag (default "testval")
-version
Display the application version
test vTest (%s/%s)
`
want := fmt.Sprintf(wantFormat, runtime.GOOS, runtime.GOARCH)

func TestSingleCommandApp_PrintUsageError(t *testing.T) {
var buf bytes.Buffer

flagSet := flag.NewFlagSet(testAppInfo.Name, flag.ExitOnError)
flagSet.String("testflag", "testval", "A test flag")

app := NewSingleCommandApp(testAppInfo, testNoOpExecutor, flagSet, &buf, &buf)

app.PrintHelp()
usageErr := errors.New("test usage error")
want := `test: test usage error
Run 'test --help' for usage.
`

app.PrintUsageError(usageErr)

got := buf.String()

if got != want {
t.Errorf("app.PrintHelp gave %q, want %q", got, want)
t.Errorf("app.PrintVersion gave %q, want %q", got, want)
}
}

func TestMultiCommandApp_PrintHelp(t *testing.T) {
wantFormat := `Usage: test testing
A test
Commands:
testcommand A test command
Options:
-help
Display the help message
-testflag string
A test flag (default "testval")
-version
Display the application version
test vTest (%s/%s)
`
want := fmt.Sprintf(wantFormat, runtime.GOOS, runtime.GOARCH)

func TestMultiCommandApp_PrintUsageError(t *testing.T) {
var buf bytes.Buffer

flagSet := flag.NewFlagSet(testAppInfo.Name, flag.ExitOnError)
flagSet.String("testflag", "testval", "A test flag")

app := NewMultiCommandApp(testAppInfo, flagSet, &buf, &buf)

testCommandInfo := CommandInfo{
Name: "testcommand",
Summary: "A test command",
Usage: "args here...",
}

commandFlagSet := flag.NewFlagSet(testCommandInfo.Name, flag.ExitOnError)
commandFlagSet.Int("testcommandflag", 5, "A test command flag")

err := app.SetCommand(testCommandInfo, testNoOpExecutor, commandFlagSet)
if err != nil {
t.Fatalf("SetCommand returned error: %v", err)
}
usageErr := errors.New("test usage error")
want := `test: test usage error
Run 'test --help' for usage.
`

app.PrintHelp("")
app.PrintUsageError("", usageErr)

got := buf.String()

if got != want {
t.Errorf("app.PrintHelp gave %q, want %q", got, want)
t.Errorf("app.PrintVersion gave %q, want %q", got, want)
}
}

func TestMultiCommandApp_PrintHelp_Command(t *testing.T) {
wantFormat := `Usage: test testcommand args here...
A test command
Options:
-help
Display the help message
-testcommandflag int
A test command flag (default 5)
-testflag string
A test flag (default "testval")
-version
Display the application version
test vTest (%s/%s)
`
want := fmt.Sprintf(wantFormat, runtime.GOOS, runtime.GOARCH)

func TestMultiCommandApp_PrintUsageError_Command(t *testing.T) {
var buf bytes.Buffer

flagSet := flag.NewFlagSet(testAppInfo.Name, flag.ExitOnError)
flagSet.String("testflag", "testval", "A test flag")

app := NewMultiCommandApp(testAppInfo, flagSet, &buf, &buf)

testCommandInfo := CommandInfo{
Name: "testcommand",
Summary: "A test command",
Usage: "args here...",
}

commandFlagSet := flag.NewFlagSet(testCommandInfo.Name, flag.ExitOnError)
commandFlagSet.Int("testcommandflag", 5, "A test command flag")
testCommandInfo := CommandInfo{Name: "testcommand"}
app.SetCommand(testCommandInfo, nil, nil)

err := app.SetCommand(testCommandInfo, testNoOpExecutor, commandFlagSet)
if err != nil {
t.Fatalf("SetCommand returned error: %v", err)
}
usageErr := errors.New("test usage error")
want := `test testcommand: test usage error
Run 'test testcommand --help' for usage.
`

app.PrintHelp("testcommand")
app.PrintUsageError(testCommandInfo.Name, usageErr)

got := buf.String()

if got != want {
t.Errorf("app.PrintHelp gave %q, want %q", got, want)
t.Errorf("app.PrintVersion gave %q, want %q", got, want)
}
}

Expand Down

0 comments on commit c59c92b

Please sign in to comment.