unknown_test.go 978 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. package flags
  2. import (
  3. "testing"
  4. )
  5. func TestUnknownFlags(t *testing.T) {
  6. var opts = struct {
  7. Verbose []bool `short:"v" long:"verbose" description:"Verbose output"`
  8. }{}
  9. args := []string{
  10. "-f",
  11. }
  12. p := NewParser(&opts, 0)
  13. args, err := p.ParseArgs(args)
  14. if err == nil {
  15. t.Fatal("Expected error for unknown argument")
  16. }
  17. }
  18. func TestIgnoreUnknownFlags(t *testing.T) {
  19. var opts = struct {
  20. Verbose []bool `short:"v" long:"verbose" description:"Verbose output"`
  21. }{}
  22. args := []string{
  23. "hello",
  24. "world",
  25. "-v",
  26. "--foo=bar",
  27. "--verbose",
  28. "-f",
  29. }
  30. p := NewParser(&opts, IgnoreUnknown)
  31. args, err := p.ParseArgs(args)
  32. if err != nil {
  33. t.Fatal(err)
  34. }
  35. exargs := []string{
  36. "hello",
  37. "world",
  38. "--foo=bar",
  39. "-f",
  40. }
  41. issame := (len(args) == len(exargs))
  42. if issame {
  43. for i := 0; i < len(args); i++ {
  44. if args[i] != exargs[i] {
  45. issame = false
  46. break
  47. }
  48. }
  49. }
  50. if !issame {
  51. t.Fatalf("Expected %v but got %v", exargs, args)
  52. }
  53. }