github.com/tiagovtristao/plz@v13.4.0+incompatible/src/cli/flags_test.go (about) 1 package cli 2 3 import ( 4 "testing" 5 "time" 6 7 "github.com/stretchr/testify/assert" 8 ) 9 10 func TestByteSize(t *testing.T) { 11 opts := struct { 12 Size ByteSize `short:"b"` 13 }{} 14 _, extraArgs, err := ParseFlags("test", &opts, []string{"test", "-b=15M"}, 0, nil) 15 assert.NoError(t, err) 16 assert.Equal(t, 0, len(extraArgs)) 17 assert.EqualValues(t, 15000000, opts.Size) 18 } 19 20 func TestDuration(t *testing.T) { 21 opts := struct { 22 D Duration `short:"d"` 23 }{} 24 _, extraArgs, err := ParseFlags("test", &opts, []string{"test", "-d=3h"}, 0, nil) 25 assert.NoError(t, err) 26 assert.Equal(t, 0, len(extraArgs)) 27 assert.EqualValues(t, 3*time.Hour, opts.D) 28 29 _, extraArgs, err = ParseFlags("test", &opts, []string{"test", "-d=3"}, 0, nil) 30 assert.NoError(t, err) 31 assert.Equal(t, 0, len(extraArgs)) 32 assert.EqualValues(t, 3*time.Second, opts.D) 33 } 34 35 func TestDurationDefault(t *testing.T) { 36 opts := struct { 37 D Duration `short:"d" default:"3h"` 38 }{} 39 _, extraArgs, err := ParseFlags("test", &opts, []string{"test"}, 0, nil) 40 assert.NoError(t, err) 41 assert.Equal(t, 0, len(extraArgs)) 42 assert.EqualValues(t, 3*time.Hour, opts.D) 43 } 44 45 func TestURL(t *testing.T) { 46 opts := struct { 47 U URL `short:"u"` 48 }{} 49 _, extraArgs, err := ParseFlags("test", &opts, []string{"test", "-u=https://localhost:8080"}, 0, nil) 50 assert.NoError(t, err) 51 assert.Equal(t, 0, len(extraArgs)) 52 assert.EqualValues(t, "https://localhost:8080", opts.U) 53 } 54 55 func TestURLDefault(t *testing.T) { 56 opts := struct { 57 U URL `short:"u" default:"https://localhost:8080"` 58 }{} 59 _, extraArgs, err := ParseFlags("test", &opts, []string{"test"}, 0, nil) 60 assert.NoError(t, err) 61 assert.Equal(t, 0, len(extraArgs)) 62 assert.EqualValues(t, "https://localhost:8080", opts.U) 63 } 64 65 func TestVersion(t *testing.T) { 66 v := Version{} 67 assert.NoError(t, v.UnmarshalFlag("3.2.1")) 68 assert.EqualValues(t, 3, v.Major) 69 assert.EqualValues(t, 2, v.Minor) 70 assert.EqualValues(t, 1, v.Patch) 71 assert.False(t, v.IsGTE) 72 assert.NoError(t, v.UnmarshalFlag(">=3.2.1")) 73 assert.EqualValues(t, 3, v.Major) 74 assert.EqualValues(t, 2, v.Minor) 75 assert.EqualValues(t, 1, v.Patch) 76 assert.True(t, v.IsGTE) 77 assert.NoError(t, v.UnmarshalFlag(">= 3.2.1")) 78 assert.EqualValues(t, 3, v.Major) 79 assert.EqualValues(t, 2, v.Minor) 80 assert.EqualValues(t, 1, v.Patch) 81 assert.True(t, v.IsGTE) 82 assert.Error(t, v.UnmarshalFlag("thirty-five ham and cheese sandwiches")) 83 } 84 85 func TestVersionString(t *testing.T) { 86 v := Version{} 87 v.UnmarshalFlag("3.2.1") 88 assert.Equal(t, "3.2.1", v.String()) 89 v.UnmarshalFlag(">=3.2.1") 90 assert.Equal(t, ">=3.2.1", v.String()) 91 } 92 93 func TestArch(t *testing.T) { 94 a := Arch{} 95 assert.NoError(t, a.UnmarshalFlag("linux_amd64")) 96 assert.Equal(t, "linux", a.OS) 97 assert.Equal(t, "amd64", a.Arch) 98 assert.Equal(t, "linux_amd64", a.String()) 99 assert.Error(t, a.UnmarshalFlag("wibble")) 100 assert.Error(t, a.UnmarshalFlag("not/an_arch")) 101 } 102 103 func TestXOS(t *testing.T) { 104 a := NewArch("darwin", "amd64") 105 assert.Equal(t, "osx", a.XOS()) 106 a = NewArch("linux", "amd64") 107 assert.Equal(t, "linux", a.XOS()) 108 } 109 110 func TestXArch(t *testing.T) { 111 a := NewArch("darwin", "amd64") 112 assert.Equal(t, "x86_64", a.XArch()) 113 a = NewArch("linux", "x86") 114 assert.Equal(t, "x86_32", a.XArch()) 115 a = NewArch("linux", "arm") 116 assert.Equal(t, "arm", a.XArch()) 117 } 118 119 func TestGoArch(t *testing.T) { 120 a := NewArch("darwin", "amd64") 121 assert.Equal(t, "amd64", a.GoArch()) 122 a = NewArch("linux", "x86") 123 assert.Equal(t, "386", a.GoArch()) 124 }