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  }