|
|
@@ -9,6 +9,7 @@ import (
|
|
|
"encoding/json"
|
|
|
"flag"
|
|
|
"fmt"
|
|
|
+ "io"
|
|
|
"net/netip"
|
|
|
"reflect"
|
|
|
"strings"
|
|
|
@@ -1480,3 +1481,33 @@ func TestParseNLArgs(t *testing.T) {
|
|
|
})
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+func TestHelpAlias(t *testing.T) {
|
|
|
+ var stdout, stderr bytes.Buffer
|
|
|
+ tstest.Replace[io.Writer](t, &Stdout, &stdout)
|
|
|
+ tstest.Replace[io.Writer](t, &Stderr, &stderr)
|
|
|
+
|
|
|
+ gotExit0 := false
|
|
|
+ defer func() {
|
|
|
+ if !gotExit0 {
|
|
|
+ t.Error("expected os.Exit(0) to be called")
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if !strings.Contains(stderr.String(), "SUBCOMMANDS") {
|
|
|
+ t.Errorf("expected help output to contain SUBCOMMANDS; got stderr=%q; stdout=%q", stderr.String(), stdout.String())
|
|
|
+ }
|
|
|
+ }()
|
|
|
+ defer func() {
|
|
|
+ if e := recover(); e != nil {
|
|
|
+ if strings.Contains(fmt.Sprint(e), "unexpected call to os.Exit(0)") {
|
|
|
+ gotExit0 = true
|
|
|
+ } else {
|
|
|
+ t.Errorf("unexpected panic: %v", e)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }()
|
|
|
+ err := Run([]string{"help"})
|
|
|
+ if err != nil {
|
|
|
+ t.Fatalf("Run: %v", err)
|
|
|
+ }
|
|
|
+}
|