github.com/anth0d/nomad@v0.0.0-20221214183521-ae3a0a2cad06/helper/flags/autopilot_flags_test.go (about)

     1  package flags
     2  
     3  import (
     4  	"flag"
     5  	"testing"
     6  	"time"
     7  
     8  	"github.com/hashicorp/nomad/ci"
     9  	"github.com/stretchr/testify/require"
    10  )
    11  
    12  func TestFlagHelper_Pointers_Set(t *testing.T) {
    13  	ci.Parallel(t)
    14  
    15  	var (
    16  		B BoolValue
    17  		b bool = true
    18  
    19  		D DurationValue
    20  		d time.Duration = 2 * time.Minute
    21  
    22  		U UintValue
    23  		u uint = 99
    24  	)
    25  	flagSet := flag.NewFlagSet("test", flag.PanicOnError)
    26  	flagSet.Var(&B, "b", "bool")
    27  	flagSet.Var(&D, "d", "duration")
    28  	flagSet.Var(&U, "u", "uint")
    29  
    30  	args := []string{"-b", "false", "-d", "1m", "-u", "42"}
    31  	err := flagSet.Parse(args)
    32  	require.NoError(t, err)
    33  
    34  	require.Equal(t, "false", B.String())
    35  	B.Merge(&b)
    36  	require.Equal(t, false, b)
    37  
    38  	require.Equal(t, "1m0s", D.String())
    39  	D.Merge(&d)
    40  	require.Equal(t, 1*time.Minute, d)
    41  
    42  	require.Equal(t, "42", U.String())
    43  	U.Merge(&u)
    44  	require.Equal(t, uint(42), u)
    45  }
    46  
    47  func TestFlagHelper_Pointers_Ignored(t *testing.T) {
    48  	ci.Parallel(t)
    49  
    50  	var (
    51  		B BoolValue
    52  		b bool = true
    53  
    54  		D DurationValue
    55  		d time.Duration = 2 * time.Minute
    56  
    57  		U UintValue
    58  		u uint = 99
    59  	)
    60  	flagSet := flag.NewFlagSet("test", flag.PanicOnError)
    61  	flagSet.Var(&B, "b", "bool")
    62  	flagSet.Var(&D, "d", "duration")
    63  	flagSet.Var(&U, "u", "uint")
    64  
    65  	var args []string
    66  	err := flagSet.Parse(args)
    67  	require.NoError(t, err)
    68  
    69  	require.Equal(t, "false", B.String())
    70  	B.Merge(&b)
    71  	require.Equal(t, true, b)
    72  
    73  	require.Equal(t, "0s", D.String())
    74  	D.Merge(&d)
    75  	require.Equal(t, 2*time.Minute, d)
    76  
    77  	require.Equal(t, "0", U.String())
    78  	U.Merge(&u)
    79  	require.Equal(t, uint(99), u)
    80  }