github.com/jfrog/jfrog-cli-core/v2@v2.51.0/common/commands/configfile_test.go (about)

     1  package commands
     2  
     3  import (
     4  	"flag"
     5  	testsutils "github.com/jfrog/jfrog-client-go/utils/tests"
     6  	"os"
     7  	"path/filepath"
     8  	"strings"
     9  	"testing"
    10  
    11  	"github.com/jfrog/jfrog-cli-core/v2/common/project"
    12  	"github.com/jfrog/jfrog-cli-core/v2/common/tests"
    13  	"github.com/jfrog/jfrog-cli-core/v2/utils/coreutils"
    14  	"github.com/jfrog/jfrog-client-go/utils/io/fileutils"
    15  	clientlog "github.com/jfrog/jfrog-client-go/utils/log"
    16  	"github.com/spf13/viper"
    17  	"github.com/stretchr/testify/assert"
    18  	"github.com/urfave/cli"
    19  )
    20  
    21  func init() {
    22  	clientlog.SetLogger(clientlog.NewLogger(clientlog.WARN, nil)) // Disable "[Info] *** build config successfully created." messages
    23  }
    24  
    25  func TestGoConfigFile(t *testing.T) {
    26  	// Set JFROG_CLI_HOME_DIR environment variable
    27  	tempDirPath := createTempEnv(t)
    28  	defer func() {
    29  		assert.NoError(t, fileutils.RemoveTempDir(tempDirPath), "Couldn't remove temp dir")
    30  	}()
    31  
    32  	// Create build config
    33  	context := createContext(t, resolutionServerId+"=relServer", resolutionRepo+"=repo", deploymentServerId+"=depServer", deploymentRepo+"=repo-local")
    34  	err := CreateBuildConfig(context, project.Go)
    35  	assert.NoError(t, err)
    36  
    37  	// Check configuration
    38  	config := checkCommonAndGetConfiguration(t, project.Go.String(), tempDirPath)
    39  	assert.Equal(t, "relServer", config.GetString("resolver.serverId"))
    40  	assert.Equal(t, "repo", config.GetString("resolver.repo"))
    41  	assert.Equal(t, "depServer", config.GetString("deployer.serverId"))
    42  	assert.Equal(t, "repo-local", config.GetString("deployer.repo"))
    43  }
    44  
    45  // In case resolver/deployer server-id flags are not provided - the default configured global server will be chosen.
    46  func TestGoConfigFileWithDefaultServerId(t *testing.T) {
    47  	// Set JFROG_CLI_HOME_DIR environment variable
    48  	cleanUp, err := tests.ConfigTestServer(t)
    49  	assert.NoError(t, err)
    50  	defer cleanUp()
    51  
    52  	// Create build config
    53  	context := createContext(t, resolutionRepo+"=repo", deploymentRepo+"=repo-local")
    54  	err = CreateBuildConfig(context, project.Go)
    55  	assert.NoError(t, err)
    56  
    57  	// Check configuration
    58  	config := checkCommonAndGetConfiguration(t, project.Go.String(), os.Getenv(coreutils.HomeDir))
    59  	assert.Equal(t, "test", config.GetString("resolver.serverId"))
    60  	assert.Equal(t, "repo", config.GetString("resolver.repo"))
    61  	assert.Equal(t, "test", config.GetString("deployer.serverId"))
    62  	assert.Equal(t, "repo-local", config.GetString("deployer.repo"))
    63  }
    64  
    65  func TestPipConfigFile(t *testing.T) {
    66  	// Set JFROG_CLI_HOME_DIR environment variable
    67  	tempDirPath := createTempEnv(t)
    68  	defer testsutils.RemoveAllAndAssert(t, tempDirPath)
    69  
    70  	// Create build config
    71  	context := createContext(t, resolutionServerId+"=relServer", resolutionRepo+"=repo", deploymentServerId+"=depServer", deploymentRepo+"=repo-local")
    72  	err := CreateBuildConfig(context, project.Pip)
    73  	assert.NoError(t, err)
    74  
    75  	// Check configuration
    76  	config := checkCommonAndGetConfiguration(t, project.Pip.String(), tempDirPath)
    77  	assert.Equal(t, "relServer", config.GetString("resolver.serverId"))
    78  	assert.Equal(t, "repo", config.GetString("resolver.repo"))
    79  	assert.Equal(t, "depServer", config.GetString("deployer.serverId"))
    80  	assert.Equal(t, "repo-local", config.GetString("deployer.repo"))
    81  }
    82  
    83  // In case resolver/deployer server-id flags are not provided - the default configured global server will be chosen.
    84  func TestPipConfigFileWithDefaultServerId(t *testing.T) {
    85  	// Set JFROG_CLI_HOME_DIR environment variable
    86  	cleanUp, err := tests.ConfigTestServer(t)
    87  	assert.NoError(t, err)
    88  	defer cleanUp()
    89  
    90  	// Create build config
    91  	context := createContext(t, resolutionRepo+"=repo", deploymentRepo+"=repo-local")
    92  	err = CreateBuildConfig(context, project.Pip)
    93  	assert.NoError(t, err)
    94  
    95  	// Check configuration
    96  	config := checkCommonAndGetConfiguration(t, project.Pip.String(), os.Getenv(coreutils.HomeDir))
    97  	assert.Equal(t, "test", config.GetString("resolver.serverId"))
    98  	assert.Equal(t, "repo", config.GetString("resolver.repo"))
    99  	assert.Equal(t, "test", config.GetString("deployer.serverId"))
   100  	assert.Equal(t, "repo-local", config.GetString("deployer.repo"))
   101  }
   102  
   103  func TestPipenvConfigFile(t *testing.T) {
   104  	// Set JFROG_CLI_HOME_DIR environment variable
   105  	tempDirPath := createTempEnv(t)
   106  	defer func() {
   107  		assert.NoError(t, fileutils.RemoveTempDir(tempDirPath))
   108  	}()
   109  
   110  	// Create build config
   111  	context := createContext(t, resolutionServerId+"=relServer", resolutionRepo+"=repo", deploymentServerId+"=depServer", deploymentRepo+"=repo-local")
   112  	err := CreateBuildConfig(context, project.Pipenv)
   113  	assert.NoError(t, err)
   114  
   115  	// Check configuration
   116  	config := checkCommonAndGetConfiguration(t, project.Pipenv.String(), tempDirPath)
   117  	assert.Equal(t, "relServer", config.GetString("resolver.serverId"))
   118  	assert.Equal(t, "repo", config.GetString("resolver.repo"))
   119  	assert.Equal(t, "depServer", config.GetString("deployer.serverId"))
   120  	assert.Equal(t, "repo-local", config.GetString("deployer.repo"))
   121  }
   122  
   123  // In case resolver/deployer server-id flags are not provided - the default configured global server will be chosen.
   124  func TestPipenvConfigFileWithDefaultServerId(t *testing.T) {
   125  	// Set JFROG_CLI_HOME_DIR environment variable
   126  	cleanUp, err := tests.ConfigTestServer(t)
   127  	assert.NoError(t, err)
   128  	defer cleanUp()
   129  
   130  	// Create build config
   131  	context := createContext(t, resolutionRepo+"=repo", deploymentRepo+"=repo-local")
   132  	err = CreateBuildConfig(context, project.Pipenv)
   133  	assert.NoError(t, err)
   134  
   135  	// Check configuration
   136  	config := checkCommonAndGetConfiguration(t, project.Pipenv.String(), os.Getenv(coreutils.HomeDir))
   137  	assert.Equal(t, "test", config.GetString("resolver.serverId"))
   138  	assert.Equal(t, "repo", config.GetString("resolver.repo"))
   139  	assert.Equal(t, "test", config.GetString("deployer.serverId"))
   140  	assert.Equal(t, "repo-local", config.GetString("deployer.repo"))
   141  }
   142  
   143  func TestNpmConfigFile(t *testing.T) {
   144  	// Set JFROG_CLI_HOME_DIR environment variable
   145  	tempDirPath := createTempEnv(t)
   146  	defer testsutils.RemoveAllAndAssert(t, tempDirPath)
   147  
   148  	// Create build config
   149  	context := createContext(t, resolutionServerId+"=relServer", resolutionRepo+"=repo", deploymentServerId+"=depServer", deploymentRepo+"=repo-local")
   150  	err := CreateBuildConfig(context, project.Npm)
   151  	assert.NoError(t, err)
   152  
   153  	// Check configuration
   154  	config := checkCommonAndGetConfiguration(t, project.Npm.String(), tempDirPath)
   155  	assert.Equal(t, "relServer", config.GetString("resolver.serverId"))
   156  	assert.Equal(t, "repo", config.GetString("resolver.repo"))
   157  	assert.Equal(t, "depServer", config.GetString("deployer.serverId"))
   158  	assert.Equal(t, "repo-local", config.GetString("deployer.repo"))
   159  }
   160  
   161  // In case resolver/deployer server-id flags are not provided - the default configured global server will be chosen.
   162  func TestNpmConfigFileWithDefaultServerId(t *testing.T) {
   163  	// Set JFROG_CLI_HOME_DIR environment variable
   164  	cleanUp, err := tests.ConfigTestServer(t)
   165  	assert.NoError(t, err)
   166  	defer cleanUp()
   167  
   168  	// Create build config
   169  	context := createContext(t, resolutionRepo+"=repo", deploymentRepo+"=repo-local")
   170  	err = CreateBuildConfig(context, project.Npm)
   171  	assert.NoError(t, err)
   172  
   173  	// Check configuration
   174  	config := checkCommonAndGetConfiguration(t, project.Npm.String(), os.Getenv(coreutils.HomeDir))
   175  	assert.Equal(t, "test", config.GetString("resolver.serverId"))
   176  	assert.Equal(t, "repo", config.GetString("resolver.repo"))
   177  	assert.Equal(t, "test", config.GetString("deployer.serverId"))
   178  	assert.Equal(t, "repo-local", config.GetString("deployer.repo"))
   179  }
   180  
   181  func TestNugetConfigFile(t *testing.T) {
   182  	// Set JFROG_CLI_HOME_DIR environment variable
   183  	tempDirPath := createTempEnv(t)
   184  	defer testsutils.RemoveAllAndAssert(t, tempDirPath)
   185  
   186  	// Create build config
   187  	context := createContext(t, resolutionServerId+"=relServer", resolutionRepo+"=repo")
   188  	err := CreateBuildConfig(context, project.Nuget)
   189  	assert.NoError(t, err)
   190  
   191  	// Check configuration
   192  	config := checkCommonAndGetConfiguration(t, project.Nuget.String(), tempDirPath)
   193  	assert.Equal(t, "relServer", config.GetString("resolver.serverId"))
   194  	assert.Equal(t, "repo", config.GetString("resolver.repo"))
   195  	assert.Equal(t, true, config.GetBool("resolver.nugetV2"))
   196  }
   197  
   198  // In case resolver/deployer server-id flags are not provided - the default configured global server will be chosen.
   199  func TestNugetConfigFileWithDefaultServerId(t *testing.T) {
   200  	// Set JFROG_CLI_HOME_DIR environment variable
   201  	cleanUp, err := tests.ConfigTestServer(t)
   202  	assert.NoError(t, err)
   203  	defer cleanUp()
   204  
   205  	// Create build config
   206  	context := createContext(t, resolutionRepo+"=repo")
   207  	err = CreateBuildConfig(context, project.Nuget)
   208  	assert.NoError(t, err)
   209  
   210  	// Check configuration
   211  	config := checkCommonAndGetConfiguration(t, project.Nuget.String(), os.Getenv(coreutils.HomeDir))
   212  	assert.Equal(t, "test", config.GetString("resolver.serverId"))
   213  	assert.Equal(t, "repo", config.GetString("resolver.repo"))
   214  	assert.Equal(t, true, config.GetBool("resolver.nugetV2"))
   215  }
   216  
   217  func TestMavenConfigFile(t *testing.T) {
   218  	// Set JFROG_CLI_HOME_DIR environment variable
   219  	tempDirPath := createTempEnv(t)
   220  	defer testsutils.RemoveAllAndAssert(t, tempDirPath)
   221  
   222  	// Create build config
   223  	context := createContext(t, resolutionServerId+"=relServer", resolutionReleasesRepo+"=release-repo", resolutionSnapshotsRepo+"=snapshot-repo",
   224  		deploymentServerId+"=depServer", deploymentReleasesRepo+"=release-repo-local", deploymentSnapshotsRepo+"=snapshot-repo-local",
   225  		includePatterns+"=*pattern*;second", excludePatterns+"=excluding;*pattern")
   226  	err := CreateBuildConfig(context, project.Maven)
   227  	assert.NoError(t, err)
   228  
   229  	// Check configuration
   230  	config := checkCommonAndGetConfiguration(t, project.Maven.String(), tempDirPath)
   231  	assert.Equal(t, "relServer", config.GetString("resolver.serverId"))
   232  	assert.Equal(t, "snapshot-repo", config.GetString("resolver.snapshotRepo"))
   233  	assert.Equal(t, "release-repo", config.GetString("resolver.releaseRepo"))
   234  	assert.Equal(t, "depServer", config.GetString("deployer.serverId"))
   235  	assert.Equal(t, "snapshot-repo-local", config.GetString("deployer.snapshotRepo"))
   236  	assert.Equal(t, "release-repo-local", config.GetString("deployer.releaseRepo"))
   237  	assert.Equal(t, "*pattern*;second", config.GetString("deployer.includePatterns"))
   238  	assert.Equal(t, "excluding;*pattern", config.GetString("deployer.excludePatterns"))
   239  }
   240  
   241  // In case resolver/deployer server-id flags are not provided - the default configured global server will be chosen.
   242  func TestMavenConfigFileWithDefaultServerId(t *testing.T) {
   243  	// Set JFROG_CLI_HOME_DIR environment variable
   244  	cleanUp, err := tests.ConfigTestServer(t)
   245  	assert.NoError(t, err)
   246  	defer cleanUp()
   247  
   248  	// Create build config
   249  	context := createContext(t, resolutionReleasesRepo+"=release-repo", resolutionSnapshotsRepo+"=snapshot-repo",
   250  		deploymentReleasesRepo+"=release-repo-local", deploymentSnapshotsRepo+"=snapshot-repo-local")
   251  	err = CreateBuildConfig(context, project.Maven)
   252  	assert.NoError(t, err)
   253  
   254  	// Check configuration
   255  	config := checkCommonAndGetConfiguration(t, project.Maven.String(), os.Getenv(coreutils.HomeDir))
   256  	assert.Equal(t, "test", config.GetString("resolver.serverId"))
   257  	assert.Equal(t, "snapshot-repo", config.GetString("resolver.snapshotRepo"))
   258  	assert.Equal(t, "release-repo", config.GetString("resolver.releaseRepo"))
   259  	assert.Equal(t, "test", config.GetString("deployer.serverId"))
   260  	assert.Equal(t, "snapshot-repo-local", config.GetString("deployer.snapshotRepo"))
   261  	assert.Equal(t, "release-repo-local", config.GetString("deployer.releaseRepo"))
   262  }
   263  
   264  func TestGradleConfigFile(t *testing.T) {
   265  	// Set JFROG_CLI_HOME_DIR environment variable
   266  	tempDirPath := createTempEnv(t)
   267  	defer testsutils.RemoveAllAndAssert(t, tempDirPath)
   268  
   269  	// Create build config
   270  	context := createContext(t, resolutionServerId+"=relServer", resolutionRepo+"=repo", deploymentServerId+"=depServer", deploymentRepo+"=repo-local",
   271  		ivyDescPattern+"=[ivy]/[pattern]", ivyArtifactsPattern+"=[artifact]/[pattern]")
   272  	err := CreateBuildConfig(context, project.Gradle)
   273  	assert.NoError(t, err)
   274  
   275  	// Check configuration
   276  	config := checkCommonAndGetConfiguration(t, project.Gradle.String(), tempDirPath)
   277  	assert.Equal(t, "relServer", config.GetString("resolver.serverId"))
   278  	assert.Equal(t, "repo", config.GetString("resolver.repo"))
   279  	assert.Equal(t, "depServer", config.GetString("deployer.serverId"))
   280  	assert.Equal(t, "repo-local", config.GetString("deployer.repo"))
   281  	assert.Equal(t, true, config.GetBool("deployer.deployMavenDescriptors"))
   282  	assert.Equal(t, true, config.GetBool("deployer.deployIvyDescriptors"))
   283  	assert.Equal(t, "[ivy]/[pattern]", config.GetString("deployer.ivyPattern"))
   284  	assert.Equal(t, "[artifact]/[pattern]", config.GetString("deployer.artifactPattern"))
   285  	assert.Equal(t, true, config.GetBool("usePlugin"))
   286  	assert.Equal(t, true, config.GetBool("useWrapper"))
   287  }
   288  
   289  // In case resolver/deployer server-id flags are not provided - the default configured global server will be chosen.
   290  func TestGradleConfigFileWithDefaultServerId(t *testing.T) {
   291  	// Set JFROG_CLI_HOME_DIR environment variable
   292  	cleanUp, err := tests.ConfigTestServer(t)
   293  	assert.NoError(t, err)
   294  	defer cleanUp()
   295  
   296  	// Create build config
   297  	context := createContext(t, resolutionRepo+"=repo", deploymentRepo+"=repo-local",
   298  		ivyDescPattern+"=[ivy]/[pattern]", ivyArtifactsPattern+"=[artifact]/[pattern]")
   299  	err = CreateBuildConfig(context, project.Gradle)
   300  	assert.NoError(t, err)
   301  
   302  	// Check configuration
   303  	config := checkCommonAndGetConfiguration(t, project.Gradle.String(), os.Getenv(coreutils.HomeDir))
   304  	assert.Equal(t, "test", config.GetString("resolver.serverId"))
   305  	assert.Equal(t, "repo", config.GetString("resolver.repo"))
   306  	assert.Equal(t, "test", config.GetString("deployer.serverId"))
   307  	assert.Equal(t, "repo-local", config.GetString("deployer.repo"))
   308  	assert.Equal(t, true, config.GetBool("deployer.deployMavenDescriptors"))
   309  	assert.Equal(t, true, config.GetBool("deployer.deployIvyDescriptors"))
   310  	assert.Equal(t, "[ivy]/[pattern]", config.GetString("deployer.ivyPattern"))
   311  	assert.Equal(t, "[artifact]/[pattern]", config.GetString("deployer.artifactPattern"))
   312  	assert.Equal(t, true, config.GetBool("usePlugin"))
   313  	assert.Equal(t, true, config.GetBool("useWrapper"))
   314  }
   315  
   316  func TestGradleConfigFileDefaultPatterns(t *testing.T) {
   317  	// Set JFROG_CLI_HOME_DIR environment variable
   318  	tempDirPath := createTempEnv(t)
   319  	defer testsutils.RemoveAllAndAssert(t, tempDirPath)
   320  
   321  	// Create build config
   322  	context := createContext(t, resolutionServerId+"=relServer", resolutionRepo+"=repo", deploymentServerId+"=depServer", deploymentRepo+"=repo-local")
   323  	err := CreateBuildConfig(context, project.Gradle)
   324  	assert.NoError(t, err)
   325  
   326  	// Check configuration
   327  	config := checkCommonAndGetConfiguration(t, project.Gradle.String(), tempDirPath)
   328  	assert.Equal(t, "relServer", config.GetString("resolver.serverId"))
   329  	assert.Equal(t, "repo", config.GetString("resolver.repo"))
   330  	assert.Equal(t, "depServer", config.GetString("deployer.serverId"))
   331  	assert.Equal(t, "repo-local", config.GetString("deployer.repo"))
   332  	assert.Equal(t, true, config.GetBool("deployer.deployMavenDescriptors"))
   333  	assert.Equal(t, true, config.GetBool("deployer.deployIvyDescriptors"))
   334  	assert.Equal(t, "[organization]/[module]/ivy-[revision].xml", config.GetString("deployer.ivyPattern"))
   335  	assert.Equal(t, "[organization]/[module]/[revision]/[artifact]-[revision](-[classifier]).[ext]", config.GetString("deployer.artifactPattern"))
   336  	assert.Equal(t, true, config.GetBool("usePlugin"))
   337  	assert.Equal(t, true, config.GetBool("useWrapper"))
   338  }
   339  
   340  func TestValidateConfigResolver(t *testing.T) {
   341  	// Create and check empty config
   342  	tempDirPath := createTempEnv(t)
   343  	defer testsutils.RemoveAllAndAssert(t, tempDirPath)
   344  	configFile := NewConfigFile(project.Go, createContext(t))
   345  	err := configFile.validateConfig()
   346  	assert.NoError(t, err)
   347  
   348  	// Check scenarios of serverId and repo
   349  	configFile.Resolver.ServerId = "serverId"
   350  	err = configFile.validateConfig()
   351  	assert.EqualError(t, err, resolutionErrorPrefix+setRepositoryError)
   352  	configFile.Resolver.Repo = "repo"
   353  	err = configFile.validateConfig()
   354  	assert.NoError(t, err)
   355  
   356  	// Set Server Id with environment variable
   357  	configFile.Resolver.ServerId = ""
   358  	configFile.Resolver.Repo = "repo"
   359  	setEnvCallBack := testsutils.SetEnvWithCallbackAndAssert(t, coreutils.ServerID, "serverId")
   360  	err = configFile.validateConfig()
   361  	assert.NoError(t, err)
   362  	setEnvCallBack()
   363  
   364  	configFile.Resolver.ServerId = ""
   365  	err = configFile.validateConfig()
   366  	assert.EqualError(t, err, resolutionErrorPrefix+setServerIdError)
   367  
   368  	// Check scenarios of serverId and release/snapshot repositories
   369  	configFile.Resolver.ServerId = "serverId"
   370  	configFile.Resolver.SnapshotRepo = "snapshotRepo"
   371  	err = configFile.validateConfig()
   372  	assert.EqualError(t, err, resolutionErrorPrefix+setSnapshotAndReleaseError)
   373  	configFile.Resolver.ReleaseRepo = "releaseRepo"
   374  	err = configFile.validateConfig()
   375  	assert.NoError(t, err)
   376  	configFile.Resolver.ServerId = ""
   377  	err = configFile.validateConfig()
   378  	assert.EqualError(t, err, resolutionErrorPrefix+setServerIdError)
   379  }
   380  
   381  func TestValidateConfigDeployer(t *testing.T) {
   382  	// Create and check empty config
   383  	tempDirPath := createTempEnv(t)
   384  	defer testsutils.RemoveAllAndAssert(t, tempDirPath)
   385  	configFile := NewConfigFile(project.Go, createContext(t))
   386  	err := configFile.validateConfig()
   387  	assert.NoError(t, err)
   388  
   389  	// Check scenarios of serverId and repo
   390  	configFile.Deployer.ServerId = "serverId"
   391  	err = configFile.validateConfig()
   392  	assert.EqualError(t, err, deploymentErrorPrefix+setRepositoryError)
   393  	configFile.Deployer.Repo = "repo"
   394  	err = configFile.validateConfig()
   395  	assert.NoError(t, err)
   396  
   397  	// Set Server Id with environment variable
   398  	configFile.Deployer.ServerId = ""
   399  	configFile.Deployer.Repo = "repo"
   400  	setEnvCallBack := testsutils.SetEnvWithCallbackAndAssert(t, coreutils.ServerID, "serverId")
   401  	err = configFile.validateConfig()
   402  	assert.NoError(t, err)
   403  	setEnvCallBack()
   404  
   405  	configFile.Deployer.ServerId = ""
   406  	err = configFile.validateConfig()
   407  	assert.EqualError(t, err, deploymentErrorPrefix+setServerIdError)
   408  
   409  	// Check scenarios of serverId and release/snapshot repositories
   410  	configFile.Deployer.ServerId = "serverId"
   411  	configFile.Deployer.ReleaseRepo = "releaseRepo"
   412  	err = configFile.validateConfig()
   413  	assert.EqualError(t, err, deploymentErrorPrefix+setSnapshotAndReleaseError)
   414  	configFile.Deployer.SnapshotRepo = "snapshotRepo"
   415  	err = configFile.validateConfig()
   416  	assert.NoError(t, err)
   417  	configFile.Deployer.ServerId = ""
   418  	err = configFile.validateConfig()
   419  	assert.EqualError(t, err, deploymentErrorPrefix+setServerIdError)
   420  }
   421  
   422  // Set JFROG_CLI_HOME_DIR environment variable to be a new temp directory
   423  func createTempEnv(t *testing.T) string {
   424  	tmpDir, err := fileutils.CreateTempDir()
   425  	assert.NoError(t, err)
   426  	testsutils.SetEnvAndAssert(t, coreutils.HomeDir, tmpDir)
   427  	return tmpDir
   428  }
   429  
   430  // Create new Codegangsta context with all required flags.
   431  func createContext(t *testing.T, stringFlags ...string) *cli.Context {
   432  	flagSet := flag.NewFlagSet("TestFlagSet", flag.ContinueOnError)
   433  	flags := setBoolFlags(flagSet, global, usesPlugin, useWrapper, deployMavenDesc, deployIvyDesc, nugetV2)
   434  	flags = append(flags, setStringFlags(flagSet, stringFlags...)...)
   435  	assert.NoError(t, flagSet.Parse(flags))
   436  	return cli.NewContext(nil, flagSet, nil)
   437  }
   438  
   439  // Set boolean flags and initialize them to true. Return a slice of them.
   440  func setBoolFlags(flagSet *flag.FlagSet, flags ...string) []string {
   441  	cmdFlags := []string{}
   442  	for _, boolFlag := range flags {
   443  		flagSet.Bool(boolFlag, true, "")
   444  		cmdFlags = append(cmdFlags, "--"+boolFlag)
   445  	}
   446  	return cmdFlags
   447  }
   448  
   449  // Set string flags. Return a slice of their values.
   450  func setStringFlags(flagSet *flag.FlagSet, flags ...string) []string {
   451  	cmdFlags := []string{}
   452  	for _, stringFlag := range flags {
   453  		flagSet.String(strings.Split(stringFlag, "=")[0], "", "")
   454  		cmdFlags = append(cmdFlags, "--"+stringFlag)
   455  	}
   456  	return cmdFlags
   457  }
   458  
   459  // Read yaml configuration from disk, check version and type.
   460  func checkCommonAndGetConfiguration(t *testing.T, projectType string, tempDirPath string) *viper.Viper {
   461  	config, err := project.ReadConfigFile(filepath.Join(tempDirPath, "projects", projectType+".yaml"), project.YAML)
   462  	assert.NoError(t, err)
   463  	assert.Equal(t, BuildConfVersion, config.GetInt("version"))
   464  	assert.Equal(t, projectType, config.GetString("type"))
   465  	return config
   466  }