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  }