| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163 |
- package cmdflag_test
- import (
- "flag"
- "os"
- "testing"
- "github.com/pierrec/lz4/internal/cmdflag"
- )
- func TestGlobalFlagOnly(t *testing.T) {
- cmd, args := flag.CommandLine, os.Args
- defer func() { flag.CommandLine, os.Args = cmd, args }()
- flag.CommandLine = flag.NewFlagSet("", flag.ExitOnError)
- var gv1 string
- flag.StringVar(&gv1, "v1", "val1", "usage1")
- os.Args = []string{"program", "-v1=gcli1"}
- if err := cmdflag.Parse(); err != nil {
- t.Fatal(err)
- }
- if got, want := gv1, "gcli1"; got != want {
- t.Fatalf("got %s; want %s", got, want)
- }
- }
- func TestInvalidcmdflag(t *testing.T) {
- cmd, args := flag.CommandLine, os.Args
- defer func() { flag.CommandLine, os.Args = cmd, args }()
- flag.CommandLine = flag.NewFlagSet("", flag.ExitOnError)
- os.Args = []string{"program", "invalidsub"}
- if err := cmdflag.Parse(); err == nil {
- t.Fatal("expected invalid command error")
- }
- }
- func TestOnecmdflag(t *testing.T) {
- h1 := 0
- handle1 := func(fset *flag.FlagSet) cmdflag.Handler {
- return func(args ...string) error {
- h1++
- return nil
- }
- }
- cmdflag.New("sub1", "", "", flag.ExitOnError, handle1)
- args := os.Args
- defer func() { os.Args = args }()
- os.Args = []string{"program", "sub1"}
- if err := cmdflag.Parse(); err != nil {
- t.Fatal(err)
- }
- if got, want := h1, 1; got != want {
- t.Fatalf("got %d; want %d", got, want)
- }
- }
- func TestOnecmdflagOneFlag(t *testing.T) {
- h1 := 0
- handle1 := func(fset *flag.FlagSet) cmdflag.Handler {
- h1++
- var v1 string
- fset.StringVar(&v1, "v1", "val1", "usage1")
- return func(args ...string) error {
- if got, want := v1, "cli1"; got != want {
- t.Fatalf("got %s; want %s", got, want)
- }
- return nil
- }
- }
- cmdflag.New("sub1flag", "", "", flag.ExitOnError, handle1)
- args := os.Args
- defer func() { os.Args = args }()
- os.Args = []string{"program", "sub1flag", "-v1=cli1"}
- if err := cmdflag.Parse(); err != nil {
- t.Fatal(err)
- }
- if got, want := h1, 1; got != want {
- t.Fatalf("got %d; want %d", got, want)
- }
- }
- func TestGlobalFlagOnecmdflag(t *testing.T) {
- h1 := 0
- handle1 := func(fset *flag.FlagSet) cmdflag.Handler {
- h1++
- var v1 string
- fset.StringVar(&v1, "v1", "val1", "usage1")
- return func(args ...string) error {
- return nil
- }
- }
- cmdflag.New("subglobal", "", "", flag.ExitOnError, handle1)
- cmd, args := flag.CommandLine, os.Args
- defer func() { flag.CommandLine, os.Args = cmd, args }()
- flag.CommandLine = flag.NewFlagSet("", flag.ExitOnError)
- var gv1 string
- flag.StringVar(&gv1, "v1", "val1", "usage1")
- os.Args = []string{"program", "-v1=gcli1", "subglobal"}
- if err := cmdflag.Parse(); err != nil {
- t.Fatal(err)
- }
- if got, want := h1, 1; got != want {
- t.Fatalf("got %d; want %d", got, want)
- }
- if got, want := gv1, "gcli1"; got != want {
- t.Fatalf("got %s; want %s", got, want)
- }
- }
- func TestGlobalFlagOnecmdflagOneFlag(t *testing.T) {
- h1 := 0
- handle1 := func(fset *flag.FlagSet) cmdflag.Handler {
- h1++
- var v1 string
- fset.StringVar(&v1, "v1", "val1", "usage1")
- return func(args ...string) error {
- if got, want := v1, "cli1"; got != want {
- t.Fatalf("got %s; want %s", got, want)
- }
- return nil
- }
- }
- cmdflag.New("subglobal1flag", "", "", flag.ExitOnError, handle1)
- cmd, args := flag.CommandLine, os.Args
- defer func() { flag.CommandLine, os.Args = cmd, args }()
- flag.CommandLine = flag.NewFlagSet("", flag.ExitOnError)
- var gv1 string
- flag.StringVar(&gv1, "v1", "val1", "usage1")
- os.Args = []string{"program", "subglobal1flag", "-v1=cli1"}
- if err := cmdflag.Parse(); err != nil {
- t.Fatal(err)
- }
- if got, want := h1, 1; got != want {
- t.Fatalf("got %d; want %d", got, want)
- }
- }
|