From 7a553f31b676f032db2fafb22bcee2d513391e26 Mon Sep 17 00:00:00 2001 From: xucong053 Date: Fri, 30 Sep 2022 13:17:39 +0800 Subject: [PATCH] fix: failed to exec command line on windows --- hrp/internal/builtin/utils_unix.go | 5 +++++ hrp/internal/builtin/utils_windows.go | 5 +++++ hrp/internal/uixt/android_device.go | 9 +++++---- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/hrp/internal/builtin/utils_unix.go b/hrp/internal/builtin/utils_unix.go index a23da061..4e5ff1ad 100644 --- a/hrp/internal/builtin/utils_unix.go +++ b/hrp/internal/builtin/utils_unix.go @@ -69,6 +69,11 @@ func ensurePython3Venv(venv string, packages ...string) (python3 string, err err return python3, nil } +func Command(name string, arg ...string) *exec.Cmd { + args := strings.Join(arg, " ") + return exec.Command("bash", "-c", name, args) +} + func ExecCommand(cmdName string, args ...string) error { cmd := exec.Command(cmdName, args...) log.Info().Str("cmd", cmd.String()).Msg("exec command") diff --git a/hrp/internal/builtin/utils_windows.go b/hrp/internal/builtin/utils_windows.go index 062b493b..52aea058 100644 --- a/hrp/internal/builtin/utils_windows.go +++ b/hrp/internal/builtin/utils_windows.go @@ -100,6 +100,11 @@ func ensurePython3Venv(venvDir string, packages ...string) (python3 string, err return python3, nil } +func Command(name string, arg ...string) *exec.Cmd { + args := strings.Join(arg, " ") + return exec.Command("cmd", "/c", name, args) +} + func ExecCommand(cmdName string, args ...string) error { // "cmd /c" carries out the command specified by string and then stops // refer: https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/cmd diff --git a/hrp/internal/uixt/android_device.go b/hrp/internal/uixt/android_device.go index a2f170d9..6216b882 100644 --- a/hrp/internal/uixt/android_device.go +++ b/hrp/internal/uixt/android_device.go @@ -13,6 +13,7 @@ import ( "syscall" "github.com/electricbubble/gadb" + "github.com/httprunner/httprunner/v4/hrp/internal/builtin" "github.com/pkg/errors" "github.com/rs/zerolog/log" ) @@ -260,8 +261,8 @@ func (l *DeviceLogcat) CatchLogcat() (err error) { if l.cmd != nil { err = fmt.Errorf("logcat already start") } - command := fmt.Sprintf("adb -s %s logcat -c && adb -s %s logcat -v time -s iesqaMonitor:V", l.serial, l.serial) - l.cmd = exec.Command("bash", "-c", command) + cmdLine := fmt.Sprintf("adb -s %s logcat -c && adb -s %s logcat -v time -s iesqaMonitor:V", l.serial, l.serial) + l.cmd = builtin.Command(cmdLine) l.cmd.Stderr = l.logBuffer l.cmd.Stdout = l.logBuffer l.cmd.SysProcAttr = &syscall.SysProcAttr{Setpgid: true} @@ -280,8 +281,8 @@ func (l *DeviceLogcat) CatchLogcat() (err error) { func (l *DeviceLogcat) BufferedLogcat() (err error) { // -d: dump the current buffered logcat result and exits - command := fmt.Sprintf("adb -s %s logcat -d", l.serial) - cmd := exec.Command("bash", "-c", command) + cmdLine := fmt.Sprintf("adb -s %s logcat -d", l.serial) + cmd := builtin.Command(cmdLine) cmd.Stdout = l.logBuffer cmd.Stderr = l.logBuffer if err = cmd.Run(); err != nil {