args_test.go 3.2 KB
Newer Older
J
Jingwen Owen Ou 已提交
1 2 3 4
package commands

import (
	"testing"
5

6
	"github.com/github/hub/Godeps/_workspace/src/github.com/bmizerany/assert"
J
Jingwen Owen Ou 已提交
7 8
)

J
Jingwen Owen Ou 已提交
9 10 11
func TestNewArgs(t *testing.T) {
	args := NewArgs([]string{})
	assert.Equal(t, "", args.Command)
J
Jingwen Owen Ou 已提交
12
	assert.Equal(t, 0, args.ParamsSize())
J
Jingwen Owen Ou 已提交
13 14 15

	args = NewArgs([]string{"command"})
	assert.Equal(t, "command", args.Command)
J
Jingwen Owen Ou 已提交
16
	assert.Equal(t, 0, args.ParamsSize())
J
Jingwen Owen Ou 已提交
17 18 19

	args = NewArgs([]string{"command", "args"})
	assert.Equal(t, "command", args.Command)
J
Jingwen Owen Ou 已提交
20
	assert.Equal(t, 1, args.ParamsSize())
21

22
	args = NewArgs([]string{"--version"})
23
	assert.Equal(t, "--version", args.Command)
24 25 26
	assert.Equal(t, 0, args.ParamsSize())

	args = NewArgs([]string{"--help"})
27
	assert.Equal(t, "--help", args.Command)
28
	assert.Equal(t, 0, args.ParamsSize())
J
Jingwen Owen Ou 已提交
29 30
}

31
func TestArgs_Words(t *testing.T) {
32
	args := NewArgs([]string{"merge", "--no-ff", "master", "-m", "message"})
33 34
	a := args.Words()

35
	assert.Equal(t, 2, len(a))
36
	assert.Equal(t, "master", a[0])
37
	assert.Equal(t, "message", a[1])
38 39
}

J
Jingwen Owen Ou 已提交
40
func TestArgs_Insert(t *testing.T) {
J
Jingwen Owen Ou 已提交
41 42 43 44 45 46 47 48 49 50 51
	args := NewArgs([]string{"command", "1", "2", "3", "4"})
	args.InsertParam(0, "foo")

	assert.Equal(t, 5, args.ParamsSize())
	assert.Equal(t, "foo", args.FirstParam())

	args = NewArgs([]string{"command", "1", "2", "3", "4"})
	args.InsertParam(3, "foo")

	assert.Equal(t, 5, args.ParamsSize())
	assert.Equal(t, "foo", args.Params[3])
52 53 54 55 56 57 58 59 60 61 62 63 64

	args = NewArgs([]string{"checkout", "-b"})
	args.InsertParam(1, "foo")

	assert.Equal(t, 2, args.ParamsSize())
	assert.Equal(t, "-b", args.Params[0])
	assert.Equal(t, "foo", args.Params[1])

	args = NewArgs([]string{"checkout"})
	args.InsertParam(1, "foo")

	assert.Equal(t, 1, args.ParamsSize())
	assert.Equal(t, "foo", args.Params[0])
J
Jingwen Owen Ou 已提交
65 66
}

J
Jingwen Owen Ou 已提交
67
func TestArgs_Remove(t *testing.T) {
J
Jingwen Owen Ou 已提交
68
	args := NewArgs([]string{"1", "2", "3", "4"})
J
Jingwen Owen Ou 已提交
69

J
Jingwen Owen Ou 已提交
70
	item := args.RemoveParam(1)
J
Jingwen Owen Ou 已提交
71
	assert.Equal(t, "3", item)
J
Jingwen Owen Ou 已提交
72 73 74
	assert.Equal(t, 2, args.ParamsSize())
	assert.Equal(t, "2", args.FirstParam())
	assert.Equal(t, "4", args.GetParam(1))
J
Jingwen Owen Ou 已提交
75
}
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91

func TestArgs_GlobalFlags(t *testing.T) {
	args := NewArgs([]string{"-c", "key=value", "status", "-s", "-b"})
	assert.Equal(t, "status", args.Command)
	assert.Equal(t, []string{"-c", "key=value"}, args.GlobalFlags)
	assert.Equal(t, []string{"-s", "-b"}, args.Params)
	assert.Equal(t, false, args.Noop)
}

func TestArgs_GlobalFlags_Noop(t *testing.T) {
	args := NewArgs([]string{"-c", "key=value", "--noop", "--literal-pathspecs", "status", "-s", "-b"})
	assert.Equal(t, "status", args.Command)
	assert.Equal(t, []string{"-c", "key=value", "--literal-pathspecs"}, args.GlobalFlags)
	assert.Equal(t, []string{"-s", "-b"}, args.Params)
	assert.Equal(t, true, args.Noop)
}
92

93 94 95 96 97 98 99 100
func TestArgs_GlobalFlags_NoopTwice(t *testing.T) {
	args := NewArgs([]string{"--noop", "--bare", "--noop", "status"})
	assert.Equal(t, "status", args.Command)
	assert.Equal(t, []string{"--bare"}, args.GlobalFlags)
	assert.Equal(t, 0, len(args.Params))
	assert.Equal(t, true, args.Noop)
}

101 102 103 104 105 106 107
func TestArgs_GlobalFlags_Repeated(t *testing.T) {
	args := NewArgs([]string{"-C", "mydir", "-c", "a=b", "--bare", "-c", "c=d", "-c", "e=f", "status"})
	assert.Equal(t, "status", args.Command)
	assert.Equal(t, []string{"-C", "mydir", "-c", "a=b", "--bare", "-c", "c=d", "-c", "e=f"}, args.GlobalFlags)
	assert.Equal(t, 0, len(args.Params))
	assert.Equal(t, false, args.Noop)
}