diff --git a/tests/framework/e2e/etcd_spawn.go b/tests/framework/e2e/etcd_spawn.go index 5f76f1868..ff2e2f4c7 100644 --- a/tests/framework/e2e/etcd_spawn.go +++ b/tests/framework/e2e/etcd_spawn.go @@ -15,6 +15,7 @@ package e2e import ( + "os" "strings" "go.uber.org/zap" @@ -23,7 +24,8 @@ import ( ) var ( - initBinPath func(string) binPath + initBinPath func(string) binPath + additionalArgs func() ([]string, error) ) func SpawnCmd(args []string, envVars map[string]string) (*expect.ExpectProcess, error) { @@ -33,3 +35,22 @@ func SpawnCmd(args []string, envVars map[string]string) (*expect.ExpectProcess, func SpawnNamedCmd(processName string, args []string, envVars map[string]string) (*expect.ExpectProcess, error) { return SpawnCmdWithLogger(zap.NewNop(), args, envVars, processName) } + +func SpawnCmdWithLogger(lg *zap.Logger, args []string, envVars map[string]string, name string) (*expect.ExpectProcess, error) { + wd, err := os.Getwd() + if err != nil { + return nil, err + } + + newArgs, err := additionalArgs() + if err != nil { + return nil, err + } + env := mergeEnvVariables(envVars) + lg.Info("spawning process", + zap.Strings("args", args), + zap.String("working-dir", wd), + zap.String("name", name), + zap.Strings("environment-variables", env)) + return expect.NewExpectWithEnv(args[0], append(args[1:], newArgs...), env, name) +} diff --git a/tests/framework/e2e/etcd_spawn_cov.go b/tests/framework/e2e/etcd_spawn_cov.go index 6aea4f2ae..349391092 100644 --- a/tests/framework/e2e/etcd_spawn_cov.go +++ b/tests/framework/e2e/etcd_spawn_cov.go @@ -23,9 +23,7 @@ import ( "time" "go.etcd.io/etcd/client/pkg/v3/fileutil" - "go.etcd.io/etcd/pkg/v3/expect" "go.etcd.io/etcd/tests/v3/framework/testutils" - "go.uber.org/zap" ) const noOutputLineCount = 2 // cov-enabled binaries emit PASS and coverage count lines @@ -36,6 +34,7 @@ var ( func init() { initBinPath = initBinPathCov + additionalArgs = additionalArgsCov } func initBinPathCov(binDir string) binPath { @@ -47,32 +46,7 @@ func initBinPathCov(binDir string) binPath { } } -func SpawnCmdWithLogger(lg *zap.Logger, args []string, envVars map[string]string, name string) (*expect.ExpectProcess, error) { - cmd := args[0] - env := mergeEnvVariables(envVars) - - wd, err := os.Getwd() - if err != nil { - return nil, err - } - - covArgs, err := getCovArgs() - if err != nil { - return nil, err - } - // when withFlagByEnv() is used in testCtl(), env variables for ctl is set to os.env. - // they must be included in ctl_cov_env. - - allArgs := append(args[1:], covArgs...) - lg.Info("spawning process in cov test", - zap.Strings("args", args), - zap.String("working-dir", wd), - zap.String("name", name), - zap.Strings("environment-variables", env)) - return expect.NewExpectWithEnv(cmd, allArgs, env, name) -} - -func getCovArgs() ([]string, error) { +func additionalArgsCov() ([]string, error) { if !fileutil.Exist(coverDir) { return nil, fmt.Errorf("could not find coverage folder: %s", coverDir) } diff --git a/tests/framework/e2e/etcd_spawn_nocov.go b/tests/framework/e2e/etcd_spawn_nocov.go index d485eaa95..3f16e3887 100644 --- a/tests/framework/e2e/etcd_spawn_nocov.go +++ b/tests/framework/e2e/etcd_spawn_nocov.go @@ -17,18 +17,11 @@ package e2e -import ( - "os" - - "go.uber.org/zap" - - "go.etcd.io/etcd/pkg/v3/expect" -) - const noOutputLineCount = 0 // regular binaries emit no extra lines func init() { initBinPath = initBinPathNoCov + additionalArgs = additionalArgsNoCov } func initBinPathNoCov(binDir string) binPath { @@ -40,16 +33,6 @@ func initBinPathNoCov(binDir string) binPath { } } -func SpawnCmdWithLogger(lg *zap.Logger, args []string, envVars map[string]string, name string) (*expect.ExpectProcess, error) { - wd, err := os.Getwd() - if err != nil { - return nil, err - } - env := mergeEnvVariables(envVars) - lg.Info("spawning process", - zap.Strings("args", args), - zap.String("working-dir", wd), - zap.String("name", name), - zap.Strings("environment-variables", env)) - return expect.NewExpectWithEnv(args[0], args[1:], env, name) +func additionalArgsNoCov() ([]string, error) { + return []string{}, nil }