@appium/coresim 1.2.1 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/lib/src/commands/process.d.ts +3 -4
- package/lib/src/commands/process.d.ts.map +1 -1
- package/lib/src/commands/process.js +6 -9
- package/lib/src/commands/process.js.map +1 -1
- package/lib/src/commands/spawn.d.ts +9 -1
- package/lib/src/commands/spawn.d.ts.map +1 -1
- package/lib/src/commands/spawn.js +9 -1
- package/lib/src/commands/spawn.js.map +1 -1
- package/lib/src/types.d.ts +0 -8
- package/lib/src/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/prebuilds/darwin-arm64/@appium+coresim.node +0 -0
- package/src/commands/process.ts +6 -9
- package/src/commands/spawn.ts +9 -1
- package/src/coresim.mm +70 -11
- package/src/types.ts +0 -8
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
## [1.4.0](https://github.com/appium/coresim/compare/v1.3.0...v1.4.0) (2026-09-19)
|
|
2
|
+
|
|
3
|
+
### Features
|
|
4
|
+
|
|
5
|
+
* resolve bare command names in spawnProcess against the runtime's bin dirs ([#16](https://github.com/appium/coresim/issues/16)) ([155654d](https://github.com/appium/coresim/commit/155654d1b2ac1235445cd511c0f7a0d49038bf26))
|
|
6
|
+
|
|
7
|
+
## [1.3.0](https://github.com/appium/coresim/compare/v1.2.1...v1.3.0) (2026-09-19)
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
* confine spawnProcess to the Simulator runtime root ([#15](https://github.com/appium/coresim/issues/15)) ([2f30f65](https://github.com/appium/coresim/commit/2f30f65e55e8a3cafb0fb0a0c0f2db612287b4a1))
|
|
12
|
+
|
|
1
13
|
## [1.2.1](https://github.com/appium/coresim/compare/v1.2.0...v1.2.1) (2026-09-18)
|
|
2
14
|
|
|
3
15
|
### Bug Fixes
|
|
@@ -8,10 +8,9 @@ declare module '../native-simctl.js' {
|
|
|
8
8
|
}
|
|
9
9
|
/**
|
|
10
10
|
* Resolves the given (booted) device's own runtime bundle root — e.g.
|
|
11
|
-
* `.../iOS.simruntime/Contents/Resources/RuntimeRoot` — the same directory {@link
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* name — see CLAUDE.md), since `spawnProcess` takes a literal path with no `$PATH` search.
|
|
11
|
+
* `.../iOS.simruntime/Contents/Resources/RuntimeRoot` — the same directory {@link spawnProcess}
|
|
12
|
+
* confines its own `path` argument to. Exposed for callers that need the raw path for some other
|
|
13
|
+
* purpose (e.g. inspecting the runtime image directly).
|
|
15
14
|
*
|
|
16
15
|
* @param udid — UDID of the device to inspect; must be booted
|
|
17
16
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process.d.ts","sourceRoot":"","sources":["../../../src/commands/process.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,aAAa,CAAC;AAGhD,OAAO,QAAQ,qBAAqB,CAAC;IACnC,UAAU,YAAY;QACpB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;QACvD,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;KACnD;CACF;AAED
|
|
1
|
+
{"version":3,"file":"process.d.ts","sourceRoot":"","sources":["../../../src/commands/process.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,aAAa,CAAC;AAGhD,OAAO,QAAQ,qBAAqB,CAAC;IACnC,UAAU,YAAY;QACpB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;QACvD,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;KACnD;CACF;AAED;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAE1F;AAED;;;;;;GAMG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CA4C/F"}
|
|
@@ -2,10 +2,9 @@ import { once } from 'node:events';
|
|
|
2
2
|
import { runCatchingAsync } from '../utils/index.js';
|
|
3
3
|
/**
|
|
4
4
|
* Resolves the given (booted) device's own runtime bundle root — e.g.
|
|
5
|
-
* `.../iOS.simruntime/Contents/Resources/RuntimeRoot` — the same directory {@link
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* name — see CLAUDE.md), since `spawnProcess` takes a literal path with no `$PATH` search.
|
|
5
|
+
* `.../iOS.simruntime/Contents/Resources/RuntimeRoot` — the same directory {@link spawnProcess}
|
|
6
|
+
* confines its own `path` argument to. Exposed for callers that need the raw path for some other
|
|
7
|
+
* purpose (e.g. inspecting the runtime image directly).
|
|
9
8
|
*
|
|
10
9
|
* @param udid — UDID of the device to inspect; must be booted
|
|
11
10
|
*/
|
|
@@ -21,11 +20,9 @@ export async function getRuntimeRootPath(udid) {
|
|
|
21
20
|
*/
|
|
22
21
|
export async function listProcesses(udid) {
|
|
23
22
|
return runCatchingAsync(async () => {
|
|
24
|
-
|
|
25
|
-
//
|
|
26
|
-
|
|
27
|
-
const launchctlPath = `${device.runtimeRootPath()}/bin/launchctl`;
|
|
28
|
-
const proc = await this.spawnProcess(udid, launchctlPath, { arguments: [launchctlPath, 'list'] });
|
|
23
|
+
// Bare name: spawnProcess() resolves it against the guest runtime's own bin dirs, distinct
|
|
24
|
+
// from the host's /bin/launchctl (see CLAUDE.md).
|
|
25
|
+
const proc = await this.spawnProcess(udid, 'launchctl', { arguments: ['launchctl', 'list'] });
|
|
29
26
|
let stdout = '';
|
|
30
27
|
let stderr = '';
|
|
31
28
|
proc.stdout.on('data', (chunk) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process.js","sourceRoot":"","sources":["../../../src/commands/process.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,aAAa,CAAC;AAIjC,OAAO,EAAC,gBAAgB,EAAC,MAAM,mBAAmB,CAAC;AASnD
|
|
1
|
+
{"version":3,"file":"process.js","sourceRoot":"","sources":["../../../src/commands/process.ts"],"names":[],"mappings":"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"}
|
|
@@ -39,7 +39,15 @@ export declare class SpawnedProcess extends EventEmitter<SpawnedProcessEvents> {
|
|
|
39
39
|
* exit code/signal — see {@link SpawnedProcess}.
|
|
40
40
|
*
|
|
41
41
|
* @param udid — UDID of the target device
|
|
42
|
-
* @param path — path to the executable to spawn
|
|
42
|
+
* @param path — path to the executable to spawn. A bare name with no `/` (e.g. `launchctl`) is
|
|
43
|
+
* resolved by searching the Simulator runtime's standard bin dirs (`usr/bin`, `bin`, `usr/sbin`,
|
|
44
|
+
* `sbin`, `usr/local/bin`), mirroring `simctl spawn`'s own bare-name resolution — there's no way
|
|
45
|
+
* to query the guest's actual `$PATH`, so this is a fixed best-effort list, and throws if nothing
|
|
46
|
+
* matches. Anything containing `/` is instead resolved relative to the Simulator's own runtime
|
|
47
|
+
* root (e.g. `/usr/bin/log`) and confined there, so this cannot be used to spawn an arbitrary host
|
|
48
|
+
* executable. A leading `/` is tolerated (still resolved relative to the runtime root, not the
|
|
49
|
+
* host's own `/`). Throws if `path` would resolve outside the runtime (e.g. via `..`). Not
|
|
50
|
+
* auto-prepended to `options.arguments`.
|
|
43
51
|
* @param options — see {@link SpawnOptions}
|
|
44
52
|
* @returns a handle to the spawned process
|
|
45
53
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spawn.d.ts","sourceRoot":"","sources":["../../../src/commands/spawn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,aAAa,CAAC;AACzC,OAAO,EAAC,MAAM,EAAC,MAAM,UAAU,CAAC;AAGhC,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,aAAa,CAAC;AAG9C,OAAO,QAAQ,qBAAqB,CAAC;IACnC,UAAU,YAAY;QACpB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;KAC3F;CACF;AAYD,UAAU,oBAAoB;IAC5B,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;CAC5D;AAED;;;;;;GAMG;AACH,qBAAa,cAAe,SAAQ,YAAY,CAAC,oBAAoB,CAAC;IAOlE,QAAQ,CAAC,GAAG,EAAE,MAAM;IANtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAQ;IAC/B,UAAU,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAQ;gBAG9B,GAAG,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM;IAiBlB,kEAAkE;IAClE,IAAI,OAAO,IAAI,OAAO,CAErB;IAED;;;;;OAKG;IACH,IAAI,CAAC,MAAM,GAAE,MAAM,CAAC,OAAO,GAAG,MAAkB,GAAG,OAAO;CAa3D;AAED
|
|
1
|
+
{"version":3,"file":"spawn.d.ts","sourceRoot":"","sources":["../../../src/commands/spawn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,aAAa,CAAC;AACzC,OAAO,EAAC,MAAM,EAAC,MAAM,UAAU,CAAC;AAGhC,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,aAAa,CAAC;AAG9C,OAAO,QAAQ,qBAAqB,CAAC;IACnC,UAAU,YAAY;QACpB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;KAC3F;CACF;AAYD,UAAU,oBAAoB;IAC5B,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;CAC5D;AAED;;;;;;GAMG;AACH,qBAAa,cAAe,SAAQ,YAAY,CAAC,oBAAoB,CAAC;IAOlE,QAAQ,CAAC,GAAG,EAAE,MAAM;IANtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAQ;IAC/B,UAAU,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAQ;gBAG9B,GAAG,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM;IAiBlB,kEAAkE;IAClE,IAAI,OAAO,IAAI,OAAO,CAErB;IAED;;;;;OAKG;IACH,IAAI,CAAC,MAAM,GAAE,MAAM,CAAC,OAAO,GAAG,MAAkB,GAAG,OAAO;CAa3D;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,YAAY,EAClB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,cAAc,CAAC,CA+BzB"}
|
|
@@ -68,7 +68,15 @@ export class SpawnedProcess extends EventEmitter {
|
|
|
68
68
|
* exit code/signal — see {@link SpawnedProcess}.
|
|
69
69
|
*
|
|
70
70
|
* @param udid — UDID of the target device
|
|
71
|
-
* @param path — path to the executable to spawn
|
|
71
|
+
* @param path — path to the executable to spawn. A bare name with no `/` (e.g. `launchctl`) is
|
|
72
|
+
* resolved by searching the Simulator runtime's standard bin dirs (`usr/bin`, `bin`, `usr/sbin`,
|
|
73
|
+
* `sbin`, `usr/local/bin`), mirroring `simctl spawn`'s own bare-name resolution — there's no way
|
|
74
|
+
* to query the guest's actual `$PATH`, so this is a fixed best-effort list, and throws if nothing
|
|
75
|
+
* matches. Anything containing `/` is instead resolved relative to the Simulator's own runtime
|
|
76
|
+
* root (e.g. `/usr/bin/log`) and confined there, so this cannot be used to spawn an arbitrary host
|
|
77
|
+
* executable. A leading `/` is tolerated (still resolved relative to the runtime root, not the
|
|
78
|
+
* host's own `/`). Throws if `path` would resolve outside the runtime (e.g. via `..`). Not
|
|
79
|
+
* auto-prepended to `options.arguments`.
|
|
72
80
|
* @param options — see {@link SpawnOptions}
|
|
73
81
|
* @returns a handle to the spawned process
|
|
74
82
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spawn.js","sourceRoot":"","sources":["../../../src/commands/spawn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,aAAa,CAAC;AACzC,OAAO,EAAC,MAAM,EAAC,MAAM,UAAU,CAAC;AAChC,OAAO,EAAC,SAAS,IAAI,WAAW,EAAC,MAAM,SAAS,CAAC;AAIjD,OAAO,EAAC,gBAAgB,EAAC,MAAM,mBAAmB,CAAC;AAQnD,8FAA8F;AAC9F,iGAAiG;AACjG,+FAA+F;AAC/F,iGAAiG;AACjG,6BAA6B;AAC7B,MAAM,qBAAqB,GAAmC,EAAE,CAAC;AACjE,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;IAC9D,qBAAqB,CAAC,GAAG,CAAC,KAAK,IAAsB,CAAC;AACxD,CAAC;AAMD;;;;;;GAMG;AACH,MAAM,OAAO,cAAe,SAAQ,YAAkC;IAOzD;IANF,MAAM,CAAS;IACf,MAAM,CAAS;IACxB,QAAQ,GAAkB,IAAI,CAAC;IAC/B,UAAU,GAA0B,IAAI,CAAC;IAEzC,YACW,GAAW,EACpB,QAAgB,EAChB,QAAgB;QAEhB,KAAK,EAAE,CAAC;QAJC,QAAG,GAAH,GAAG,CAAQ;QAKpB,4FAA4F;QAC5F,+FAA+F;QAC/F,2FAA2F;QAC3F,2FAA2F;QAC3F,yFAAyF;QACzF,2FAA2F;QAC3F,wFAAwF;QACxF,8FAA8F;QAC9F,6FAA6F;QAC7F,2DAA2D;QAC3D,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,EAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAC,CAAC,CAAC;QAC1E,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,EAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAC,CAAC,CAAC;IAC5E,CAAC;IAED,kEAAkE;IAClE,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,KAAK,IAAI,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC;IAC5D,CAAC;IAED;;;;;OAKG;IACH,IAAI,CAAC,SAAkC,SAAS;QAC9C,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACxC,CAAC;IAED,yFAAyF;IACzF,WAAW,CAAC,IAAmB,EAAE,MAAqB;QACpD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC;QACnF,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACpD,CAAC;CACF;AAED
|
|
1
|
+
{"version":3,"file":"spawn.js","sourceRoot":"","sources":["../../../src/commands/spawn.ts"],"names":[],"mappings":"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"}
|
package/lib/src/types.d.ts
CHANGED
|
@@ -118,14 +118,6 @@ export interface SpawnOptions {
|
|
|
118
118
|
arguments?: string[];
|
|
119
119
|
/** Merged additively into the spawned process's environment. */
|
|
120
120
|
environment?: Record<string, string>;
|
|
121
|
-
/**
|
|
122
|
-
* Defaults to `true` — required for CoreSimulator from Xcode 26.4+ to wire up the child's dyld
|
|
123
|
-
* shared-cache environment (see CLAUDE.md); without it, that CoreSimulator aborts the child with
|
|
124
|
-
* SIGABRT trying to load even `libSystem.B.dylib`. Defaults to `false` for `launchctl`/`defaults`,
|
|
125
|
-
* which need to stay attached to the guest's own launchd bootstrap namespace to work/have their
|
|
126
|
-
* writes observed live. Set explicitly to override either default.
|
|
127
|
-
*/
|
|
128
|
-
standalone?: boolean;
|
|
129
121
|
}
|
|
130
122
|
/** One running process/launchd job inside a device, as reported by `NativeSimctl.listProcesses`. */
|
|
131
123
|
export interface SimProcessInfo {
|
package/lib/src/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,oBAAY,cAAc;IACxB,QAAQ,IAAI;IACZ,QAAQ,IAAI;IACZ,OAAO,IAAI;IACX,MAAM,IAAI;IACV,YAAY,IAAI;CACjB;AAED,uGAAuG;AACvG,MAAM,WAAW,aAAa;IAC5B,qDAAqD;IACrD,IAAI,EAAE,MAAM,CAAC;IACb,wCAAwC;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,cAAc,CAAC;IACtB,gHAAgH;IAChH,oBAAoB,EAAE,MAAM,CAAC;IAC7B,wGAAwG;IACxG,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,+GAA+G;AAC/G,MAAM,WAAW,iBAAiB;IAChC,8DAA8D;IAC9D,UAAU,EAAE,MAAM,CAAC;IACnB,wCAAwC;IACxC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wGAAwG;AACxG,MAAM,WAAW,cAAc;IAC7B,0DAA0D;IAC1D,UAAU,EAAE,MAAM,CAAC;IACnB,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,qBAAqB;IACrB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;;GAUG;AACH,oBAAY,aAAa;IACvB,OAAO,IAAI;IACX,sBAAsB,IAAI;IAC1B,kBAAkB,IAAI;IACtB,uDAAuD;IACvD,QAAQ,aAAa;CACtB;AAED,uGAAuG;AACvG,MAAM,WAAW,WAAW;IAC1B,8FAA8F;IAC9F,MAAM,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,UAAU,EAAE,OAAO,CAAC;CACrB;AAED;;;;;GAKG;AACH,MAAM,MAAM,mBAAmB,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;AAE7E;;;;;GAKG;AACH,MAAM,MAAM,oBAAoB,GAC5B,UAAU,GACV,QAAQ,GACR,UAAU,GACV,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,cAAc,GACd,YAAY,GACZ,QAAQ,GACR,QAAQ,GACR,WAAW,GACX,MAAM,GACN,QAAQ,GACR,cAAc,CAAC;AAEnB;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,sGAAsG;IACtG,EAAE,EAAE,MAAM,CAAC;IACX,sFAAsF;IACtF,YAAY,EAAE,MAAM,CAAC;IACrB,kEAAkE;IAClE,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,gDAAgD;AAChD,MAAM,WAAW,iBAAiB;IAChC,4CAA4C;IAC5C,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IACxB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,YAAY;IAC3B,mFAAmF;IACnF,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,gEAAgE;IAChE,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
Binary file
|
package/src/commands/process.ts
CHANGED
|
@@ -13,10 +13,9 @@ declare module '../native-simctl.js' {
|
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
15
|
* Resolves the given (booted) device's own runtime bundle root — e.g.
|
|
16
|
-
* `.../iOS.simruntime/Contents/Resources/RuntimeRoot` — the same directory {@link
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
* name — see CLAUDE.md), since `spawnProcess` takes a literal path with no `$PATH` search.
|
|
16
|
+
* `.../iOS.simruntime/Contents/Resources/RuntimeRoot` — the same directory {@link spawnProcess}
|
|
17
|
+
* confines its own `path` argument to. Exposed for callers that need the raw path for some other
|
|
18
|
+
* purpose (e.g. inspecting the runtime image directly).
|
|
20
19
|
*
|
|
21
20
|
* @param udid — UDID of the device to inspect; must be booted
|
|
22
21
|
*/
|
|
@@ -33,11 +32,9 @@ export async function getRuntimeRootPath(this: NativeSimctl, udid: string): Prom
|
|
|
33
32
|
*/
|
|
34
33
|
export async function listProcesses(this: NativeSimctl, udid: string): Promise<SimProcessInfo[]> {
|
|
35
34
|
return runCatchingAsync(async () => {
|
|
36
|
-
|
|
37
|
-
//
|
|
38
|
-
|
|
39
|
-
const launchctlPath = `${device.runtimeRootPath()}/bin/launchctl`;
|
|
40
|
-
const proc = await this.spawnProcess(udid, launchctlPath, {arguments: [launchctlPath, 'list']});
|
|
35
|
+
// Bare name: spawnProcess() resolves it against the guest runtime's own bin dirs, distinct
|
|
36
|
+
// from the host's /bin/launchctl (see CLAUDE.md).
|
|
37
|
+
const proc = await this.spawnProcess(udid, 'launchctl', {arguments: ['launchctl', 'list']});
|
|
41
38
|
let stdout = '';
|
|
42
39
|
let stderr = '';
|
|
43
40
|
proc.stdout.on('data', (chunk: Buffer) => {
|
package/src/commands/spawn.ts
CHANGED
|
@@ -90,7 +90,15 @@ export class SpawnedProcess extends EventEmitter<SpawnedProcessEvents> {
|
|
|
90
90
|
* exit code/signal — see {@link SpawnedProcess}.
|
|
91
91
|
*
|
|
92
92
|
* @param udid — UDID of the target device
|
|
93
|
-
* @param path — path to the executable to spawn
|
|
93
|
+
* @param path — path to the executable to spawn. A bare name with no `/` (e.g. `launchctl`) is
|
|
94
|
+
* resolved by searching the Simulator runtime's standard bin dirs (`usr/bin`, `bin`, `usr/sbin`,
|
|
95
|
+
* `sbin`, `usr/local/bin`), mirroring `simctl spawn`'s own bare-name resolution — there's no way
|
|
96
|
+
* to query the guest's actual `$PATH`, so this is a fixed best-effort list, and throws if nothing
|
|
97
|
+
* matches. Anything containing `/` is instead resolved relative to the Simulator's own runtime
|
|
98
|
+
* root (e.g. `/usr/bin/log`) and confined there, so this cannot be used to spawn an arbitrary host
|
|
99
|
+
* executable. A leading `/` is tolerated (still resolved relative to the runtime root, not the
|
|
100
|
+
* host's own `/`). Throws if `path` would resolve outside the runtime (e.g. via `..`). Not
|
|
101
|
+
* auto-prepended to `options.arguments`.
|
|
94
102
|
* @param options — see {@link SpawnOptions}
|
|
95
103
|
* @returns a handle to the spawned process
|
|
96
104
|
*/
|
package/src/coresim.mm
CHANGED
|
@@ -91,6 +91,59 @@ NSError* MakeDescriptorError(NSString* which, int savedErrno) {
|
|
|
91
91
|
}];
|
|
92
92
|
}
|
|
93
93
|
|
|
94
|
+
NSError* MakeSpawnPathError(NSString* message) {
|
|
95
|
+
return [NSError errorWithDomain:@"com.appium.coresim.spawn" code:1 userInfo:@{NSLocalizedDescriptionKey : message}];
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
// Standard bin dirs to search, in order, when `path` is a bare command name (no `/`) — mirrors
|
|
99
|
+
// the guest's default $PATH. There's no way to query the guest's actual $PATH (no shell, no env
|
|
100
|
+
// to read before a process even exists), so this is a fixed best-effort list, not a real PATH
|
|
101
|
+
// search — a binary installed somewhere else won't be found this way.
|
|
102
|
+
NSArray<NSString*>* BareCommandSearchDirs() { return @[ @"usr/bin", @"bin", @"usr/sbin", @"sbin", @"usr/local/bin" ]; }
|
|
103
|
+
|
|
104
|
+
// Resolves a bare command name (e.g. "launchctl") against BareCommandSearchDirs() under
|
|
105
|
+
// `runtimeRoot`, mirroring how `simctl spawn` resolves a bare name against the guest's $PATH —
|
|
106
|
+
// CoreSimulator's own spawn API takes only a literal path, so it does no such resolution itself.
|
|
107
|
+
NSString* ResolveBareCommand(NSString* runtimeRoot, NSString* name, NSError** error) {
|
|
108
|
+
NSFileManager* fm = [NSFileManager defaultManager];
|
|
109
|
+
for (NSString* dir in BareCommandSearchDirs()) {
|
|
110
|
+
NSString* candidate = [runtimeRoot stringByAppendingPathComponent:[dir stringByAppendingPathComponent:name]];
|
|
111
|
+
BOOL isDirectory = NO;
|
|
112
|
+
if ([fm fileExistsAtPath:candidate isDirectory:&isDirectory] && !isDirectory &&
|
|
113
|
+
[fm isExecutableFileAtPath:candidate]) {
|
|
114
|
+
return candidate;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
*error = MakeSpawnPathError(
|
|
118
|
+
[NSString stringWithFormat:@"'%@' not found in the Simulator runtime's standard bin directories", name]);
|
|
119
|
+
return nil;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
// `spawnWithPath:options:...` can run anything the host user can execute, so Spawn() confines it
|
|
123
|
+
// to the Simulator's own runtime image rather than trusting `path` as a literal host path — a
|
|
124
|
+
// deliberately breaking restriction (see CLAUDE.md). A bare name (no `/`) is resolved via
|
|
125
|
+
// ResolveBareCommand above instead; otherwise `path` is resolved as relative to the runtime root,
|
|
126
|
+
// then re-verified (via -stringByStandardizingPath, which collapses ".."/".") to still fall under
|
|
127
|
+
// it, since `path` may come from arbitrary caller input.
|
|
128
|
+
NSString* ResolveRuntimeBinaryPath(id device, NSString* path, NSError** error) {
|
|
129
|
+
id runtime = DeviceRuntime(device);
|
|
130
|
+
if (runtime == nil) {
|
|
131
|
+
*error = MakeSpawnPathError(@"Could not resolve the Simulator's runtime to spawn a process inside it");
|
|
132
|
+
return nil;
|
|
133
|
+
}
|
|
134
|
+
NSString* runtimeRoot = coresim::RuntimeRootPath(runtime).stringByStandardizingPath;
|
|
135
|
+
if (![path containsString:@"/"]) {
|
|
136
|
+
return ResolveBareCommand(runtimeRoot, path, error);
|
|
137
|
+
}
|
|
138
|
+
NSString* resolved = [runtimeRoot stringByAppendingPathComponent:path].stringByStandardizingPath;
|
|
139
|
+
if (resolved != runtimeRoot && ![resolved hasPrefix:[runtimeRoot stringByAppendingString:@"/"]]) {
|
|
140
|
+
*error = MakeSpawnPathError(
|
|
141
|
+
[NSString stringWithFormat:@"'%@' resolves outside the Simulator runtime ('%@')", path, runtimeRoot]);
|
|
142
|
+
return nil;
|
|
143
|
+
}
|
|
144
|
+
return resolved;
|
|
145
|
+
}
|
|
146
|
+
|
|
94
147
|
// Plain data Spawn()'s work lambda (background thread) hands to its toValue callback (main
|
|
95
148
|
// thread) — see NativeDevice::Spawn below.
|
|
96
149
|
struct SpawnResult {
|
|
@@ -727,19 +780,25 @@ class NativeDevice : public Napi::ObjectWrap<NativeDevice> {
|
|
|
727
780
|
throw NSErrorException(MakeDescriptorError(@"stderr", savedErrno));
|
|
728
781
|
}
|
|
729
782
|
|
|
783
|
+
NSError* resolveError = nil;
|
|
784
|
+
NSString* resolvedPath = ResolveRuntimeBinaryPath(device, path, &resolveError);
|
|
785
|
+
if (resolvedPath == nil) {
|
|
786
|
+
[stdoutPipe.fileHandleForWriting closeFile];
|
|
787
|
+
[stderrPipe.fileHandleForWriting closeFile];
|
|
788
|
+
close(stdoutFd);
|
|
789
|
+
close(stderrFd);
|
|
790
|
+
exitTsfn.Release();
|
|
791
|
+
throw NSErrorException(resolveError);
|
|
792
|
+
}
|
|
793
|
+
|
|
730
794
|
NSMutableDictionary* options = [userOptions mutableCopy];
|
|
731
795
|
options[@"stdout"] = @(stdoutPipe.fileHandleForWriting.fileDescriptor);
|
|
732
796
|
options[@"stderr"] = @(stderrPipe.fileHandleForWriting.fileDescriptor);
|
|
733
|
-
// kSimDeviceSpawnStandalone — see CLAUDE.md
|
|
734
|
-
//
|
|
735
|
-
//
|
|
736
|
-
//
|
|
737
|
-
|
|
738
|
-
NSString* lastComponent = path.lastPathComponent;
|
|
739
|
-
BOOL needsBootstrapAttachment =
|
|
740
|
-
[lastComponent isEqualToString:@"launchctl"] || [lastComponent isEqualToString:@"defaults"];
|
|
741
|
-
options[@"standalone"] = @(!needsBootstrapAttachment);
|
|
742
|
-
}
|
|
797
|
+
// kSimDeviceSpawnStandalone — see CLAUDE.md. Always NO: `path` always resolves inside
|
|
798
|
+
// the Simulator runtime now (above), so every spawn needs to stay attached to the
|
|
799
|
+
// guest's launchd bootstrap namespace to have its effects observed / function at all.
|
|
800
|
+
// Not caller-configurable — there's no longer a legitimate reason to detach it.
|
|
801
|
+
options[@"standalone"] = @NO;
|
|
743
802
|
|
|
744
803
|
void (^terminationHandler)(int) = ^(int status) {
|
|
745
804
|
// Confirmed empirically (see CLAUDE.md): `status` is a raw wait(2)-style status, not a
|
|
@@ -762,7 +821,7 @@ class NativeDevice : public Napi::ObjectWrap<NativeDevice> {
|
|
|
762
821
|
NSError* error = nil;
|
|
763
822
|
int pid;
|
|
764
823
|
try {
|
|
765
|
-
pid = coresim::Spawn(device,
|
|
824
|
+
pid = coresim::Spawn(device, resolvedPath, options, dispatch_get_global_queue(QOS_CLASS_DEFAULT, 0),
|
|
766
825
|
terminationHandler, &error);
|
|
767
826
|
} catch (...) {
|
|
768
827
|
[stdoutPipe.fileHandleForWriting closeFile];
|
package/src/types.ts
CHANGED
|
@@ -142,14 +142,6 @@ export interface SpawnOptions {
|
|
|
142
142
|
arguments?: string[];
|
|
143
143
|
/** Merged additively into the spawned process's environment. */
|
|
144
144
|
environment?: Record<string, string>;
|
|
145
|
-
/**
|
|
146
|
-
* Defaults to `true` — required for CoreSimulator from Xcode 26.4+ to wire up the child's dyld
|
|
147
|
-
* shared-cache environment (see CLAUDE.md); without it, that CoreSimulator aborts the child with
|
|
148
|
-
* SIGABRT trying to load even `libSystem.B.dylib`. Defaults to `false` for `launchctl`/`defaults`,
|
|
149
|
-
* which need to stay attached to the guest's own launchd bootstrap namespace to work/have their
|
|
150
|
-
* writes observed live. Set explicitly to override either default.
|
|
151
|
-
*/
|
|
152
|
-
standalone?: boolean;
|
|
153
145
|
}
|
|
154
146
|
|
|
155
147
|
/** One running process/launchd job inside a device, as reported by `NativeSimctl.listProcesses`. */
|