github.com/apptainer/singularity@v3.1.1+incompatible/cmd/internal/cli/cli_test.go (about)

     1  // Copyright (c) 2018, Sylabs Inc. All rights reserved.
     2  // This software is licensed under a 3-clause BSD license. Please consult the
     3  // LICENSE.md file distributed with the sources of this project regarding your
     4  // rights to use or distribute this software.
     5  
     6  package cli
     7  
     8  import (
     9  	"testing"
    10  
    11  	"github.com/magiconair/properties/assert"
    12  	"github.com/spf13/cobra"
    13  	"github.com/sylabs/singularity/internal/pkg/test"
    14  )
    15  
    16  var cmd cobra.Command
    17  
    18  func TestEnvAppend(t *testing.T) {
    19  	test.DropPrivilege(t)
    20  	defer test.ResetPrivilege(t)
    21  	var appendFlag []string
    22  
    23  	cmd.Flags().StringSliceVarP(&appendFlag, "appendFlag", "", []string{""}, "")
    24  	v := cmd.Flag("appendFlag").Value.String()
    25  	assert.Equal(t, v, "[]", "The flag should be unset.")
    26  
    27  	envAppend(cmd.Flag("appendFlag"), "appendval")
    28  	v = cmd.Flag("appendFlag").Value.String()
    29  	assert.Equal(t, v, "[appendval]", "The flag should be set to the value provided.")
    30  
    31  	envAppend(cmd.Flag("appendFlag"), "appendval")
    32  	v = cmd.Flag("appendFlag").Value.String()
    33  	assert.Equal(t, v, "[appendval,appendval]", "The flag should appended with the value provided.")
    34  }
    35  
    36  func TestEnvBool(t *testing.T) {
    37  	test.DropPrivilege(t)
    38  	defer test.ResetPrivilege(t)
    39  	var boolFlag bool
    40  
    41  	cmd.Flags().BoolVar(&boolFlag, "boolFlag", false, "")
    42  	v := cmd.Flag("boolFlag").Value.String()
    43  	assert.Equal(t, v, "false", "The flag should be unset.")
    44  
    45  	envBool(cmd.Flag("boolFlag"), "any string")
    46  	v = cmd.Flag("boolFlag").Value.String()
    47  	assert.Equal(t, v, "true", "The flag should be set to true.")
    48  }
    49  
    50  func TestEnvStringNSlice(t *testing.T) {
    51  	test.DropPrivilege(t)
    52  	defer test.ResetPrivilege(t)
    53  	var stringFlag string
    54  
    55  	cmd.Flags().StringVarP(&stringFlag, "stringFlag", "", "", "")
    56  	v := cmd.Flag("stringFlag").Value.String()
    57  	assert.Equal(t, v, "", "The flag should be unset.")
    58  
    59  	envStringNSlice(cmd.Flag("stringFlag"), "stringval")
    60  	v = cmd.Flag("stringFlag").Value.String()
    61  	assert.Equal(t, v, "stringval", "The flag should be set to value provided.")
    62  
    63  	envStringNSlice(cmd.Flag("stringFlag"), "newstringval")
    64  	v = cmd.Flag("stringFlag").Value.String()
    65  	assert.Equal(t, v, "stringval", "Once set, the flag should not be overwritten.")
    66  
    67  	var stringSlice []string
    68  
    69  	cmd.Flags().StringSliceVarP(&stringSlice, "stringSlice", "", []string{""}, "")
    70  	v = cmd.Flag("stringSlice").Value.String()
    71  	assert.Equal(t, v, "[]", "The flag should be unset.")
    72  
    73  	envStringNSlice(cmd.Flag("stringSlice"), "sliceval")
    74  	v = cmd.Flag("stringSlice").Value.String()
    75  	assert.Equal(t, v, "[sliceval]", "The flag should be set to value provided.")
    76  
    77  	envStringNSlice(cmd.Flag("stringSlice"), "newsliceval")
    78  	v = cmd.Flag("stringSlice").Value.String()
    79  	assert.Equal(t, v, "[sliceval]", "Once set, the flag should not be appended or overwritten.")
    80  }