github.com/jfrog/jfrog-cli-core/v2@v2.51.0/common/build/argsutils_test.go (about) 1 package build 2 3 import ( 4 testsutils "github.com/jfrog/jfrog-client-go/utils/tests" 5 "reflect" 6 "testing" 7 8 "github.com/jfrog/jfrog-cli-core/v2/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"}, NewBuildConfiguration("test1", "1", "module1", "")}, 18 {[]string{"--module=module2", "--build-name", "test2", "--foo", "bar", "--build-number=2"}, []string{"--foo", "bar"}, NewBuildConfiguration("test2", "2", "module2", "")}, 19 {[]string{"foo", "-X", "123", "--build-name", "test3", "--bar", "--build-number=3", "--foox"}, []string{"foo", "-X", "123", "--bar", "--foox"}, NewBuildConfiguration("test3", "3", "", "")}, 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"}, NewBuildConfiguration("test1", "1", "module1", "")}, 45 {[]string{"foo", "-X", "123", "--bar", "--build-name=test3", "--build-number=3", "--foox"}, []string{"foo", "-X", "123", "--bar", "--foox"}, NewBuildConfiguration("test3", "3", "", "")}, 46 {[]string{"foo", "-X", "123", "--bar", "--build-name=test1", "--build-number=1", "--foox"}, []string{"foo", "-X", "123", "--bar", "--foox"}, NewBuildConfiguration("test1", "1", "", "")}, 47 {[]string{"foo", "-X", "123", "--bar", "--foox"}, []string{"foo", "-X", "123", "--bar", "--foox"}, NewBuildConfiguration(buildNameEnv, buildNumberEnv, "", "")}, 48 } 49 setEnvCallback := testsutils.SetEnvWithCallbackAndAssert(t, coreutils.BuildName, buildNameEnv) 50 defer setEnvCallback() 51 setEnvCallback = testsutils.SetEnvWithCallbackAndAssert(t, coreutils.BuildNumber, buildNumberEnv) 52 defer setEnvCallback() 53 for _, test := range tests { 54 actualArgs, actualBuildConfig, err := ExtractBuildDetailsFromArgs(test.command) 55 if err != nil { 56 t.Error(err) 57 } 58 if !reflect.DeepEqual(actualArgs, test.expectedArgs) { 59 t.Errorf("Expected value: %v, got: %v.", test.expectedArgs, actualArgs) 60 } 61 if !reflect.DeepEqual(actualBuildConfig, test.expectedBuildConfig) { 62 t.Errorf("Expected value: %v, got: %v.", test.expectedBuildConfig, actualBuildConfig) 63 } 64 } 65 }