parse_test.go 1.38 KB
Newer Older
1 2 3 4 5
package cli

import (
  //"fmt"
  "testing"
Matt Bell's avatar
Matt Bell committed
6 7

  "github.com/jbenet/go-ipfs/commands"
8 9 10
)

func TestOptionParsing(t *testing.T) {
11 12 13 14 15
  cmd := &commands.Command{
    Options: []commands.Option{
      commands.Option{ []string{"b"}, commands.String },
    },
  }
16 17
  cmd.Register("test", &commands.Command{})

18
  opts, input, err := parseOptions([]string{ "--beep", "-boop=lol", "test2", "-c", "beep", "--foo=5" })
19 20 21 22 23 24 25
  /*for k, v := range opts {
    fmt.Printf("%s: %s\n", k, v)
  }
  fmt.Printf("%s\n", input)*/
  if err != nil {
    t.Error("Should have passed")
  }
26
  if len(opts) != 4 || opts["beep"] != "" || opts["boop"] != "lol" || opts["c"] != "" || opts["foo"] != "5" {
27 28
    t.Error("Returned options were defferent than expected: %v", opts)
  }
29
  if len(input) != 2 || input[0] != "test2" || input[1] != "beep" {
30 31
    t.Error("Returned input was different than expected: %v", input)
  }
Matt Bell's avatar
Matt Bell committed
32

33 34 35 36 37
  _, _, err = parseOptions([]string{ "-beep=1", "-boop=2", "-beep=3" })
  if err == nil {
    t.Error("Should have failed (duplicate option name)")
  }

38
  path, args, err := parsePath([]string{ "test", "beep", "boop" }, cmd)
Matt Bell's avatar
Matt Bell committed
39 40 41 42 43 44 45 46 47
  if err != nil {
    t.Error("Should have passed")
  }
  if len(path) != 1 || path[0] != "test" {
    t.Error("Returned path was defferent than expected: %v", path)
  }
  if len(args) != 2 || args[0] != "beep" || args[1] != "boop" {
    t.Error("Returned args were different than expected: %v", args)
  }
48
}