github.com/jfrog/jfrog-cli-core@v1.12.1/artifactory/utils/argsutils_test.go (about) 1 package utils 2 3 import ( 4 "os" 5 "reflect" 6 "testing" 7 8 "github.com/jfrog/jfrog-cli-core/utils/coreutils" 9 ) 10 11 func TestExtractBuildDetailsFromArgs(t *testing.T) { 12 tests := []struct { 13 command []string 14 expectedArgs []string 15 expectedBuildConfig *BuildConfiguration 16 }{ 17 {[]string{"-test", "--build-name", "test1", "--foo", "--build-number", "1", "--module", "module1"}, []string{"-test", "--foo"}, &BuildConfiguration{BuildName: "test1", BuildNumber: "1", Module: "module1", Project: ""}}, 18 {[]string{"--module=module2", "--build-name", "test2", "--foo", "bar", "--build-number=2"}, []string{"--foo", "bar"}, &BuildConfiguration{BuildName: "test2", BuildNumber: "2", Module: "module2", Project: ""}}, 19 {[]string{"foo", "-X", "123", "--build-name", "test3", "--bar", "--build-number=3", "--foox"}, []string{"foo", "-X", "123", "--bar", "--foox"}, &BuildConfiguration{BuildName: "test3", BuildNumber: "3", Module: "", Project: ""}}, 20 } 21 22 for _, test := range tests { 23 actualArgs, actualBuildConfig, err := ExtractBuildDetailsFromArgs(test.command) 24 if err != nil { 25 t.Error(err) 26 } 27 if !reflect.DeepEqual(actualArgs, test.expectedArgs) { 28 t.Errorf("Expected value: %v, got: %v.", test.expectedArgs, actualArgs) 29 } 30 if !reflect.DeepEqual(actualBuildConfig, test.expectedBuildConfig) { 31 t.Errorf("Expected value: %v, got: %v.", test.expectedBuildConfig, actualBuildConfig) 32 } 33 } 34 } 35 36 func TestExtractBuildDetailsFromEnv(t *testing.T) { 37 const buildNameEnv = "envBuildName" 38 const buildNumberEnv = "777" 39 tests := []struct { 40 command []string 41 expectedArgs []string 42 expectedBuildConfig *BuildConfiguration 43 }{ 44 {[]string{"-test", "--build-name", "test1", "--foo", "--build-number", "1", "--module", "module1"}, []string{"-test", "--foo"}, &BuildConfiguration{BuildName: "test1", BuildNumber: "1", Module: "module1", Project: ""}}, 45 {[]string{"foo", "-X", "123", "--bar", "--build-name=test3", "--build-number=3", "--foox"}, []string{"foo", "-X", "123", "--bar", "--foox"}, &BuildConfiguration{BuildName: "test3", BuildNumber: "3", Module: "", Project: ""}}, 46 {[]string{"foo", "-X", "123", "--bar", "--build-name=test1", "--build-number=1", "--foox"}, []string{"foo", "-X", "123", "--bar", "--foox"}, &BuildConfiguration{BuildName: "test1", BuildNumber: "1", Module: "", Project: ""}}, 47 {[]string{"foo", "-X", "123", "--bar", "--foox"}, []string{"foo", "-X", "123", "--bar", "--foox"}, &BuildConfiguration{BuildName: buildNameEnv, BuildNumber: buildNumberEnv, Module: "", Project: ""}}, 48 } 49 50 os.Setenv(coreutils.BuildName, buildNameEnv) 51 os.Setenv(coreutils.BuildNumber, buildNumberEnv) 52 defer os.Unsetenv(coreutils.BuildName) 53 defer os.Unsetenv(coreutils.BuildNumber) 54 for _, test := range tests { 55 actualArgs, actualBuildConfig, err := ExtractBuildDetailsFromArgs(test.command) 56 if err != nil { 57 t.Error(err) 58 } 59 if !reflect.DeepEqual(actualArgs, test.expectedArgs) { 60 t.Errorf("Expected value: %v, got: %v.", test.expectedArgs, actualArgs) 61 } 62 if !reflect.DeepEqual(actualBuildConfig, test.expectedBuildConfig) { 63 t.Errorf("Expected value: %v, got: %v.", test.expectedBuildConfig, actualBuildConfig) 64 } 65 } 66 }