github.com/kamontat/dot-github@v1.2.0/cli_test.go (about) 1 package main 2 3 import ( 4 "bytes" 5 "os" 6 "regexp" 7 "strings" 8 "testing" 9 ) 10 11 func TestSpecifiedFlags(t *testing.T) { 12 os.Args = []string{"dot-github", "-issue", "-help", "-version", "-pullrequest", "-contributing"} 13 p, err := ParseCmdArgs(os.Stderr) 14 if err != nil { 15 t.Fatalf("must be parsed without error") 16 } 17 if !p.IssueOnly { 18 t.Errorf("-issue must be looked") 19 } 20 if !p.Help { 21 t.Errorf("-help must be looked") 22 } 23 if !p.PROnly { 24 t.Errorf("-pullrequest must be looked") 25 } 26 if !p.ContributingOnly { 27 t.Errorf("-contributing must be looked") 28 } 29 if !p.Version { 30 t.Errorf("-version must be looked") 31 } 32 } 33 34 func TestUnspecifiedFlags(t *testing.T) { 35 os.Args = []string{"dot-github"} 36 p, err := ParseCmdArgs(os.Stderr) 37 if err != nil { 38 t.Fatalf("must be parsed without error") 39 } 40 if p.IssueOnly { 41 t.Errorf("-issue is not invalid default value") 42 } 43 if p.Help { 44 t.Errorf("-help is not invalid default value") 45 } 46 if p.PROnly { 47 t.Errorf("-pullrequest is not invalid default value") 48 } 49 if p.ContributingOnly { 50 t.Errorf("-contributing is not invalid default value") 51 } 52 if p.Version { 53 t.Errorf("-version is not invalid default value") 54 } 55 } 56 57 func TestUndefinedFlags(t *testing.T) { 58 os.Args = []string{"dot-github", "-unknown"} 59 buf := &bytes.Buffer{} 60 _, err := ParseCmdArgs(buf) 61 if err == nil { 62 t.Fatalf("ignores unknown flag") 63 } 64 if !strings.Contains(buf.String(), "Usage:") { 65 t.Fatalf("does not output usage") 66 } 67 } 68 69 func TestShowVersion(t *testing.T) { 70 os.Args = []string{"dot-github"} 71 p, _ := ParseCmdArgs(os.Stderr) 72 buf := &bytes.Buffer{} 73 p.ShowVersion(buf) 74 if m, err := regexp.Match(`\d\.\d\.\d`, buf.Bytes()); !m || err != nil { 75 t.Errorf("invalid version output: " + buf.String()) 76 } 77 } 78 79 func TestShowHelp(t *testing.T) { 80 os.Args = []string{"dot-github"} 81 p, _ := ParseCmdArgs(os.Stderr) 82 buf := &bytes.Buffer{} 83 p.ShowUsage(buf) 84 if !strings.Contains(buf.String(), "Usage:") { 85 t.Fatalf("invalid help output") 86 } 87 }