mirror of
https://github.com/httprunner/httprunner.git
synced 2026-09-07 16:40:50 +08:00
feat: runcommand新增日志
This commit is contained in:
@@ -15,6 +15,7 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
"os"
|
"os"
|
||||||
|
"os/exec"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"reflect"
|
"reflect"
|
||||||
"strconv"
|
"strconv"
|
||||||
@@ -26,6 +27,7 @@ import (
|
|||||||
"gopkg.in/yaml.v3"
|
"gopkg.in/yaml.v3"
|
||||||
|
|
||||||
"github.com/httprunner/httprunner/v4/hrp/internal/code"
|
"github.com/httprunner/httprunner/v4/hrp/internal/code"
|
||||||
|
"github.com/httprunner/httprunner/v4/hrp/internal/env"
|
||||||
"github.com/httprunner/httprunner/v4/hrp/internal/json"
|
"github.com/httprunner/httprunner/v4/hrp/internal/json"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -520,10 +522,6 @@ func DownloadFile(filePath string, fileUrl string) error {
|
|||||||
return err
|
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)
|
out, err := os.Create(filePath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@@ -536,9 +534,14 @@ func DownloadFile(filePath string, fileUrl string) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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("accessKey", "ies.vedem.video")
|
||||||
req.Header.Add("token", "***REMOVED***")
|
req.Header.Add("token", env.EAPI_TOKEN)
|
||||||
|
}
|
||||||
|
|
||||||
// 创建一个 HTTP 客户端并发送请求
|
// 创建一个 HTTP 客户端并发送请求
|
||||||
client := &http.Client{}
|
client := &http.Client{}
|
||||||
@@ -560,3 +563,27 @@ func DownloadFile(filePath string, fileUrl string) error {
|
|||||||
|
|
||||||
return nil
|
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
|
||||||
|
}
|
||||||
|
|||||||
Vendored
+1
@@ -13,6 +13,7 @@ var (
|
|||||||
VEDEM_IMAGE_URL = os.Getenv("VEDEM_IMAGE_URL")
|
VEDEM_IMAGE_URL = os.Getenv("VEDEM_IMAGE_URL")
|
||||||
VEDEM_IMAGE_AK = os.Getenv("VEDEM_IMAGE_AK")
|
VEDEM_IMAGE_AK = os.Getenv("VEDEM_IMAGE_AK")
|
||||||
VEDEM_IMAGE_SK = os.Getenv("VEDEM_IMAGE_SK")
|
VEDEM_IMAGE_SK = os.Getenv("VEDEM_IMAGE_SK")
|
||||||
|
EAPI_TOKEN = os.Getenv("EAPI_TOKEN")
|
||||||
DISABLE_GA = os.Getenv("DISABLE_GA")
|
DISABLE_GA = os.Getenv("DISABLE_GA")
|
||||||
DISABLE_SENTRY = os.Getenv("DISABLE_SENTRY")
|
DISABLE_SENTRY = os.Getenv("DISABLE_SENTRY")
|
||||||
PYPI_INDEX_URL = os.Getenv("PYPI_INDEX_URL")
|
PYPI_INDEX_URL = os.Getenv("PYPI_INDEX_URL")
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ import (
|
|||||||
"strconv"
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/httprunner/funplugin/myexec"
|
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
"github.com/rs/zerolog/log"
|
"github.com/rs/zerolog/log"
|
||||||
|
|
||||||
@@ -475,7 +474,7 @@ func (dev *IOSDevice) StopPcap() string {
|
|||||||
|
|
||||||
func (dev *IOSDevice) Install(appPath string, opts *InstallOptions) (err error) {
|
func (dev *IOSDevice) Install(appPath string, opts *InstallOptions) (err error) {
|
||||||
for i := 0; i <= opts.RetryTime; i++ {
|
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 {
|
if err == nil {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@@ -484,7 +483,7 @@ func (dev *IOSDevice) Install(appPath string, opts *InstallOptions) (err error)
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (dev *IOSDevice) Uninstall(bundleId string) 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 {
|
func (dev *IOSDevice) forward(localPort, remotePort int) error {
|
||||||
|
|||||||
Reference in New Issue
Block a user