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  }