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 }