diff --git a/hrp/internal/builtin/utils.go b/hrp/internal/builtin/utils.go index f05eb2b3..48ee8e38 100644 --- a/hrp/internal/builtin/utils.go +++ b/hrp/internal/builtin/utils.go @@ -15,6 +15,7 @@ import ( "net/http" "net/url" "os" + "os/exec" "path/filepath" "reflect" "strconv" @@ -26,6 +27,7 @@ import ( "gopkg.in/yaml.v3" "github.com/httprunner/httprunner/v4/hrp/internal/code" + "github.com/httprunner/httprunner/v4/hrp/internal/env" "github.com/httprunner/httprunner/v4/hrp/internal/json" ) @@ -520,10 +522,6 @@ func DownloadFile(filePath string, fileUrl string) error { return err } - if parsedURL.Host != "gtf-eapi-cn.bytedance.com" { - return errors.New("invalid domain: must be gtf-eapi-cn.bytedance.com") - } - out, err := os.Create(filePath) if err != nil { return err @@ -536,9 +534,14 @@ func DownloadFile(filePath string, fileUrl string) error { return err } - // 添加自定义头部 - req.Header.Add("accessKey", "ies.vedem.video") - req.Header.Add("token", "***REMOVED***") + if env.EAPI_TOKEN != "" { + if parsedURL.Host != "gtf-eapi-cn.bytedance.com" && parsedURL.Host != "gtf-eapi-cn.bytedance.net" { + return errors.New("invalid domain: must be gtf-eapi-cn.bytedance.com") + } + // 添加自定义头部 + req.Header.Add("accessKey", "ies.vedem.video") + req.Header.Add("token", env.EAPI_TOKEN) + } // 创建一个 HTTP 客户端并发送请求 client := &http.Client{} @@ -560,3 +563,27 @@ func DownloadFile(filePath string, fileUrl string) error { return nil } + +func RunCommand(cmdName string, args ...string) error { + cmd := exec.Command(cmdName, args...) + log.Info().Str("command", cmd.String()).Msg("exec command") + + // print stderr output + var stderr bytes.Buffer + cmd.Stderr = &stderr + + var stdout bytes.Buffer + cmd.Stdout = &stdout + + if err := cmd.Run(); err != nil { + stderrStr := stderr.String() + log.Error().Err(err).Msg("failed to exec command. msg: " + stderrStr) + if stderrStr != "" { + err = errors.Wrap(err, stderrStr) + } + return err + } + + log.Info().Msg("exec command output: " + stdout.String()) + return nil +} diff --git a/hrp/internal/env/env.go b/hrp/internal/env/env.go index 5168990d..2e053e82 100644 --- a/hrp/internal/env/env.go +++ b/hrp/internal/env/env.go @@ -13,6 +13,7 @@ var ( VEDEM_IMAGE_URL = os.Getenv("VEDEM_IMAGE_URL") VEDEM_IMAGE_AK = os.Getenv("VEDEM_IMAGE_AK") VEDEM_IMAGE_SK = os.Getenv("VEDEM_IMAGE_SK") + EAPI_TOKEN = os.Getenv("EAPI_TOKEN") DISABLE_GA = os.Getenv("DISABLE_GA") DISABLE_SENTRY = os.Getenv("DISABLE_SENTRY") PYPI_INDEX_URL = os.Getenv("PYPI_INDEX_URL") diff --git a/hrp/pkg/uixt/ios_device.go b/hrp/pkg/uixt/ios_device.go index df9ad89e..8acd8cc2 100644 --- a/hrp/pkg/uixt/ios_device.go +++ b/hrp/pkg/uixt/ios_device.go @@ -13,7 +13,6 @@ import ( "strconv" "time" - "github.com/httprunner/funplugin/myexec" "github.com/pkg/errors" "github.com/rs/zerolog/log" @@ -475,7 +474,7 @@ func (dev *IOSDevice) StopPcap() string { func (dev *IOSDevice) Install(appPath string, opts *InstallOptions) (err error) { for i := 0; i <= opts.RetryTime; i++ { - err = myexec.RunCommand("ideviceinstaller", "-u", dev.UDID, "-i", appPath) + err = builtin.RunCommand("ideviceinstaller", "-u", dev.UDID, "-i", appPath) if err == nil { return nil } @@ -484,7 +483,7 @@ func (dev *IOSDevice) Install(appPath string, opts *InstallOptions) (err error) } func (dev *IOSDevice) Uninstall(bundleId string) error { - return myexec.RunCommand("ideviceinstaller", "-u", dev.UDID, "-U", bundleId) + return builtin.RunCommand("ideviceinstaller", "-u", dev.UDID, "-U", bundleId) } func (dev *IOSDevice) forward(localPort, remotePort int) error {