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  }