mirror of
https://github.com/httprunner/httprunner.git
synced 2026-08-28 03:30:01 +08:00
refactor: move gidevice to hrp pkg
This commit is contained in:
@@ -0,0 +1,153 @@
|
||||
package gidevice
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/httprunner/httprunner/v4/hrp/pkg/gidevice/pkg/libimobiledevice"
|
||||
"github.com/httprunner/httprunner/v4/hrp/pkg/gidevice/pkg/nskeyedarchiver"
|
||||
)
|
||||
|
||||
var _ XCTestManagerDaemon = (*xcTestManagerDaemon)(nil)
|
||||
|
||||
func newXcTestManagerDaemon(testmanagerd Testmanagerd, channelCode uint32) *xcTestManagerDaemon {
|
||||
return &xcTestManagerDaemon{
|
||||
testmanagerd: testmanagerd,
|
||||
channelCode: channelCode,
|
||||
}
|
||||
}
|
||||
|
||||
type xcTestManagerDaemon struct {
|
||||
testmanagerd Testmanagerd
|
||||
channelCode uint32
|
||||
}
|
||||
|
||||
func (d *xcTestManagerDaemon) initiateControlSession(XcodeVersion uint64) (err error) {
|
||||
args := libimobiledevice.NewAuxBuffer()
|
||||
if err = args.AppendObject(XcodeVersion); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
selector := "_IDE_initiateControlSessionWithProtocolVersion:"
|
||||
|
||||
var ret *libimobiledevice.DTXMessageResult
|
||||
if ret, err = d.testmanagerd.invoke(selector, args, d.channelCode, true); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if nsErr, ok := ret.Obj.(libimobiledevice.NSError); ok {
|
||||
return fmt.Errorf("%s", nsErr.NSUserInfo.(map[string]interface{})["NSLocalizedDescription"])
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (d *xcTestManagerDaemon) startExecutingTestPlan(XcodeVersion uint64) (err error) {
|
||||
args := libimobiledevice.NewAuxBuffer()
|
||||
if err = args.AppendObject(XcodeVersion); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
selector := "_IDE_startExecutingTestPlanWithProtocolVersion:"
|
||||
|
||||
if _, err = d.testmanagerd.invoke(selector, args, 0xFFFFFFFF, false); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
func (d *xcTestManagerDaemon) initiateSession(XcodeVersion uint64, nsUUID *nskeyedarchiver.NSUUID) (err error) {
|
||||
args := libimobiledevice.NewAuxBuffer()
|
||||
if err = args.AppendObject(nsUUID); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = args.AppendObject(nsUUID.String() + "-Go-iDevice"); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = args.AppendObject("/Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild"); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = args.AppendObject(XcodeVersion); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
selector := "_IDE_initiateSessionWithIdentifier:forClient:atPath:protocolVersion:"
|
||||
|
||||
var ret *libimobiledevice.DTXMessageResult
|
||||
if ret, err = d.testmanagerd.invoke(selector, args, d.channelCode, true); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if nsErr, ok := ret.Obj.(libimobiledevice.NSError); ok {
|
||||
return fmt.Errorf("%s", nsErr.NSUserInfo.(map[string]interface{})["NSLocalizedDescription"])
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
func (d *xcTestManagerDaemon) authorizeTestSession(pid int) (err error) {
|
||||
args := libimobiledevice.NewAuxBuffer()
|
||||
if err = args.AppendObject(pid); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
selector := "_IDE_authorizeTestSessionWithProcessID:"
|
||||
|
||||
var ret *libimobiledevice.DTXMessageResult
|
||||
if ret, err = d.testmanagerd.invoke(selector, args, d.channelCode, true); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if nsErr, ok := ret.Obj.(libimobiledevice.NSError); ok {
|
||||
return fmt.Errorf("%s", nsErr.NSUserInfo.(map[string]interface{})["NSLocalizedDescription"])
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (d *xcTestManagerDaemon) initiateControlSessionForTestProcessID(pid int) (err error) {
|
||||
args := libimobiledevice.NewAuxBuffer()
|
||||
if err = args.AppendObject(pid); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
selector := "_IDE_initiateControlSessionForTestProcessID:"
|
||||
|
||||
var ret *libimobiledevice.DTXMessageResult
|
||||
if ret, err = d.testmanagerd.invoke(selector, args, d.channelCode, true); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if nsErr, ok := ret.Obj.(libimobiledevice.NSError); ok {
|
||||
return fmt.Errorf("%s", nsErr.NSUserInfo.(map[string]interface{})["NSLocalizedDescription"])
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (d *xcTestManagerDaemon) initiateControlSessionForTestProcessIDProtocolVersion(pid int, XcodeVersion uint64) (err error) {
|
||||
args := libimobiledevice.NewAuxBuffer()
|
||||
if err = args.AppendObject(pid); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = args.AppendObject(XcodeVersion); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
selector := "_IDE_initiateControlSessionForTestProcessID:protocolVersion:"
|
||||
|
||||
var ret *libimobiledevice.DTXMessageResult
|
||||
if ret, err = d.testmanagerd.invoke(selector, args, d.channelCode, true); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if nsErr, ok := ret.Obj.(libimobiledevice.NSError); ok {
|
||||
return fmt.Errorf("%s", nsErr.NSUserInfo.(map[string]interface{})["NSLocalizedDescription"])
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (d *xcTestManagerDaemon) registerCallback(obj string, cb func(m libimobiledevice.DTXMessageResult)) {
|
||||
d.testmanagerd.registerCallback(obj, cb)
|
||||
}
|
||||
|
||||
func (d *xcTestManagerDaemon) close() {
|
||||
d.testmanagerd.close()
|
||||
}
|
||||
Reference in New Issue
Block a user