diff --git a/src/platforms/ios/__tests__/apple-runner-platform.test.ts b/src/platforms/apple/core/__tests__/apple-runner-platform.test.ts similarity index 96% rename from src/platforms/ios/__tests__/apple-runner-platform.test.ts rename to src/platforms/apple/core/__tests__/apple-runner-platform.test.ts index aea4e792f..9d210f2d9 100644 --- a/src/platforms/ios/__tests__/apple-runner-platform.test.ts +++ b/src/platforms/apple/core/__tests__/apple-runner-platform.test.ts @@ -5,8 +5,8 @@ import { resolveRunnerPlatformName, resolveRunnerSdkName, resolveRunnerXctestrunHints, -} from '../../apple/core/apple-runner-platform.ts'; -import type { DeviceInfo } from '../../../kernel/device.ts'; +} from '../apple-runner-platform.ts'; +import type { DeviceInfo } from '../../../../kernel/device.ts'; function iosSim(overrides: Partial = {}): DeviceInfo { return { diff --git a/src/platforms/ios/__tests__/debug-symbols.test.ts b/src/platforms/apple/core/__tests__/debug-symbols.test.ts similarity index 98% rename from src/platforms/ios/__tests__/debug-symbols.test.ts rename to src/platforms/apple/core/__tests__/debug-symbols.test.ts index 948d9999c..8ca94a231 100644 --- a/src/platforms/ios/__tests__/debug-symbols.test.ts +++ b/src/platforms/apple/core/__tests__/debug-symbols.test.ts @@ -3,9 +3,9 @@ import fs from 'node:fs/promises'; import os from 'node:os'; import path from 'node:path'; import { test } from 'vitest'; -import { symbolicateCrashArtifact } from '../../apple/core/debug-symbols.ts'; -import { AppError } from '../../../kernel/errors.ts'; -import { withCommandExecutorOverride } from '../../../utils/exec.ts'; +import { symbolicateCrashArtifact } from '../debug-symbols.ts'; +import { AppError } from '../../../../kernel/errors.ts'; +import { withCommandExecutorOverride } from '../../../../utils/exec.ts'; const UUID = 'ABCDEFAB-CDEF-ABCD-EFAB-CDEFABCDEFAB'; const NORMALIZED_UUID = 'ABCDEFABCDEFABCDEFABCDEFABCDEFAB'; diff --git a/src/platforms/ios/__tests__/devices.test.ts b/src/platforms/apple/core/__tests__/devices.test.ts similarity index 99% rename from src/platforms/ios/__tests__/devices.test.ts rename to src/platforms/apple/core/__tests__/devices.test.ts index df4c5d9b4..601c1f01c 100644 --- a/src/platforms/ios/__tests__/devices.test.ts +++ b/src/platforms/apple/core/__tests__/devices.test.ts @@ -10,8 +10,8 @@ import { parseXctracePhysicalAppleDevices, resolveAppleTargetFromDevicectlDevice, withAppleToolProvider, -} from '../../apple/core/devices.ts'; -import type { ExecResult } from '../../../utils/exec.ts'; +} from '../devices.ts'; +import type { ExecResult } from '../../../../utils/exec.ts'; const toolCalls: Array<[string, string[]]> = []; let mockRunCommand: (cmd: string, args: string[]) => Promise; diff --git a/src/platforms/ios/__tests__/index.test.ts b/src/platforms/apple/core/__tests__/index.test.ts similarity index 98% rename from src/platforms/ios/__tests__/index.test.ts rename to src/platforms/apple/core/__tests__/index.test.ts index 8e410b30c..bae21d448 100644 --- a/src/platforms/ios/__tests__/index.test.ts +++ b/src/platforms/apple/core/__tests__/index.test.ts @@ -4,47 +4,47 @@ import { promises as fs } from 'node:fs'; import os from 'node:os'; import path from 'node:path'; -vi.mock('../../../utils/exec.ts', async (importOriginal) => { - const actual = await importOriginal(); +vi.mock('../../../../utils/exec.ts', async (importOriginal) => { + const actual = await importOriginal(); return { ...actual, runCmd: vi.fn(actual.runCmd) }; }); -vi.mock('../../../utils/retry.ts', async (importOriginal) => { - const actual = await importOriginal(); +vi.mock('../../../../utils/retry.ts', async (importOriginal) => { + const actual = await importOriginal(); return { ...actual, retryWithPolicy: vi.fn(actual.retryWithPolicy) }; }); -vi.mock('../../apple/core/runner/runner-client.ts', async (importOriginal) => { - const actual = await importOriginal(); +vi.mock('../runner/runner-client.ts', async (importOriginal) => { + const actual = await importOriginal(); return { ...actual, runIosRunnerCommand: vi.fn(actual.runIosRunnerCommand) }; }); -vi.mock('../../apple/core/simulator.ts', async (importOriginal) => { - const actual = await importOriginal(); +vi.mock('../simulator.ts', async (importOriginal) => { + const actual = await importOriginal(); return { ...actual, ensureBootedSimulator: vi.fn(actual.ensureBootedSimulator), openIosSimulatorApp: vi.fn(actual.openIosSimulatorApp), }; }); -vi.mock('../../apple/core/screenshot-status-bar.ts', async (importOriginal) => { - const actual = await importOriginal(); +vi.mock('../screenshot-status-bar.ts', async (importOriginal) => { + const actual = await importOriginal(); return { ...actual, prepareSimulatorStatusBarForScreenshot: vi.fn(actual.prepareSimulatorStatusBarForScreenshot), }; }); -const execActual = - await vi.importActual('../../../utils/exec.ts'); -const retryActual = - await vi.importActual('../../../utils/retry.ts'); -const runnerActual = await vi.importActual< - typeof import('../../apple/core/runner/runner-client.ts') ->('../../apple/core/runner/runner-client.ts'); -const simulatorActual = await vi.importActual( - '../../apple/core/simulator.ts', +const execActual = await vi.importActual( + '../../../../utils/exec.ts', ); +const retryActual = await vi.importActual( + '../../../../utils/retry.ts', +); +const runnerActual = await vi.importActual( + '../runner/runner-client.ts', +); +const simulatorActual = await vi.importActual('../simulator.ts'); const screenshotStatusBarActual = await vi.importActual< - typeof import('../../apple/core/screenshot-status-bar.ts') ->('../../apple/core/screenshot-status-bar.ts'); + typeof import('../screenshot-status-bar.ts') +>('../screenshot-status-bar.ts'); import { closeIosApp, @@ -60,36 +60,30 @@ import { setIosSetting, shouldFallbackToRunnerForIosScreenshot, shouldRetryIosSimulatorScreenshot, -} from '../../apple/core/apps.ts'; +} from '../apps.ts'; import { withMockedMacOsHelper } from './macos-helper-test-utils.ts'; -import { quitMacOsApp, resolveMacOsHelperPackageRootFrom } from '../../apple/os/macos/helper.ts'; +import { quitMacOsApp, resolveMacOsHelperPackageRootFrom } from '../../os/macos/helper.ts'; import { captureSimulatorScreenshotWithFallback, captureSimulatorScreenshotWithRetry, captureScreenshotViaRunner, prepareSimulatorStatusBarForScreenshot, resolveSimulatorRunnerScreenshotCandidatePaths, -} from '../../apple/core/screenshot.ts'; -import { ensureBootedSimulator, openIosSimulatorApp } from '../../apple/core/simulator.ts'; +} from '../screenshot.ts'; +import { ensureBootedSimulator, openIosSimulatorApp } from '../simulator.ts'; import { invalidateSimulatorStatusBarOverrideCache, prepareSimulatorStatusBarForScreenshot as prepareStatusBarForScreenshot, -} from '../../apple/core/screenshot-status-bar.ts'; -import { runIosRunnerCommand } from '../../apple/core/runner/runner-client.ts'; -import { iosRunnerOverrides } from '../interactions.ts'; -import { - IOS_DEVICE_INSTALL_TIMEOUT_MS, - IOS_SIMULATOR_TERMINATE_TIMEOUT_MS, -} from '../../apple/core/config.ts'; -import type { DeviceInfo } from '../../../kernel/device.ts'; -import { withDiagnosticsScope } from '../../../utils/diagnostics.ts'; -import { AppError } from '../../../kernel/errors.ts'; -import { runCmd } from '../../../utils/exec.ts'; -import { retryWithPolicy } from '../../../utils/retry.ts'; -import { - parseIosDeviceAppsPayload, - parseIosDeviceProcessesPayload, -} from '../../apple/core/devicectl.ts'; +} from '../screenshot-status-bar.ts'; +import { runIosRunnerCommand } from '../runner/runner-client.ts'; +import { iosRunnerOverrides } from '../../../ios/interactions.ts'; +import { IOS_DEVICE_INSTALL_TIMEOUT_MS, IOS_SIMULATOR_TERMINATE_TIMEOUT_MS } from '../config.ts'; +import type { DeviceInfo } from '../../../../kernel/device.ts'; +import { withDiagnosticsScope } from '../../../../utils/diagnostics.ts'; +import { AppError } from '../../../../kernel/errors.ts'; +import { runCmd } from '../../../../utils/exec.ts'; +import { retryWithPolicy } from '../../../../utils/retry.ts'; +import { parseIosDeviceAppsPayload, parseIosDeviceProcessesPayload } from '../devicectl.ts'; const IOS_TEST_DEVICE: DeviceInfo = { platform: 'ios', diff --git a/src/platforms/ios/__tests__/launch-diagnostics.test.ts b/src/platforms/apple/core/__tests__/launch-diagnostics.test.ts similarity index 96% rename from src/platforms/ios/__tests__/launch-diagnostics.test.ts rename to src/platforms/apple/core/__tests__/launch-diagnostics.test.ts index 44fb95567..57c28c1cc 100644 --- a/src/platforms/ios/__tests__/launch-diagnostics.test.ts +++ b/src/platforms/apple/core/__tests__/launch-diagnostics.test.ts @@ -4,8 +4,8 @@ import { isSimulatorLaunchFBSError, classifyLaunchFailure, launchFailureHint, -} from '../../apple/core/launch-diagnostics.ts'; -import { AppError } from '../../../kernel/errors.ts'; +} from '../launch-diagnostics.ts'; +import { AppError } from '../../../../kernel/errors.ts'; test('isSimulatorLaunchFBSError identifies FBS code=4 errors', () => { const error = new AppError('COMMAND_FAILED', 'xcrun exited with code 4', { diff --git a/src/platforms/ios/__tests__/macos-helper-test-utils.ts b/src/platforms/apple/core/__tests__/macos-helper-test-utils.ts similarity index 100% rename from src/platforms/ios/__tests__/macos-helper-test-utils.ts rename to src/platforms/apple/core/__tests__/macos-helper-test-utils.ts diff --git a/src/platforms/ios/__tests__/perf.test.ts b/src/platforms/apple/core/__tests__/perf.test.ts similarity index 98% rename from src/platforms/ios/__tests__/perf.test.ts rename to src/platforms/apple/core/__tests__/perf.test.ts index 8698be286..c5af6d3e0 100644 --- a/src/platforms/ios/__tests__/perf.test.ts +++ b/src/platforms/apple/core/__tests__/perf.test.ts @@ -4,8 +4,8 @@ import { promises as fs } from 'node:fs'; import os from 'node:os'; import path from 'node:path'; -vi.mock('../../../utils/exec.ts', async (importOriginal) => { - const actual = await importOriginal(); +vi.mock('../../../../utils/exec.ts', async (importOriginal) => { + const actual = await importOriginal(); return { ...actual, runCmd: vi.fn(actual.runCmd), @@ -18,17 +18,17 @@ import { parseApplePsOutput, sampleAppleFramePerf, sampleApplePerfMetrics, -} from '../../apple/core/perf.ts'; +} from '../perf.ts'; import { startAppleXctracePerfCapture, stopAppleXctracePerfCapture, writeAppleXctracePerfReport, type AppleXctracePerfCapture, -} from '../../apple/core/perf-xctrace.ts'; -import { parseAppleFramePerfSample } from '../../apple/core/perf-frame.ts'; -import { runCmd, runCmdBackground } from '../../../utils/exec.ts'; -import type { DeviceInfo } from '../../../kernel/device.ts'; -import { AppError } from '../../../kernel/errors.ts'; +} from '../perf-xctrace.ts'; +import { parseAppleFramePerfSample } from '../perf-frame.ts'; +import { runCmd, runCmdBackground } from '../../../../utils/exec.ts'; +import type { DeviceInfo } from '../../../../kernel/device.ts'; +import { AppError } from '../../../../kernel/errors.ts'; const mockRunCmd = vi.mocked(runCmd); const mockRunCmdBackground = vi.mocked(runCmdBackground); diff --git a/src/platforms/ios/__tests__/plist.test.ts b/src/platforms/apple/core/__tests__/plist.test.ts similarity index 84% rename from src/platforms/ios/__tests__/plist.test.ts rename to src/platforms/apple/core/__tests__/plist.test.ts index 242f29c84..f07b6530d 100644 --- a/src/platforms/ios/__tests__/plist.test.ts +++ b/src/platforms/apple/core/__tests__/plist.test.ts @@ -4,13 +4,13 @@ import { promises as fs } from 'node:fs'; import os from 'node:os'; import path from 'node:path'; -vi.mock('../../../utils/exec.ts', async (importOriginal) => { - const actual = await importOriginal(); +vi.mock('../../../../utils/exec.ts', async (importOriginal) => { + const actual = await importOriginal(); return { ...actual, runCmd: vi.fn(actual.runCmd) }; }); -import { runCmd } from '../../../utils/exec.ts'; -import { readInfoPlistString } from '../../apple/core/plist.ts'; +import { runCmd } from '../../../../utils/exec.ts'; +import { readInfoPlistString } from '../plist.ts'; const mockRunCmd = vi.mocked(runCmd); diff --git a/src/platforms/ios/__tests__/runner-command-retry.test.ts b/src/platforms/apple/core/__tests__/runner-command-retry.test.ts similarity index 97% rename from src/platforms/ios/__tests__/runner-command-retry.test.ts rename to src/platforms/apple/core/__tests__/runner-command-retry.test.ts index faa58258b..23f83b633 100644 --- a/src/platforms/ios/__tests__/runner-command-retry.test.ts +++ b/src/platforms/apple/core/__tests__/runner-command-retry.test.ts @@ -1,10 +1,10 @@ import { beforeEach, test, vi } from 'vitest'; import assert from 'node:assert/strict'; -import { IOS_SIMULATOR } from '../../../__tests__/test-utils/index.ts'; -import { clearRequestCanceled, markRequestCanceled } from '../../../daemon/request-cancel.ts'; -import { AppError } from '../../../kernel/errors.ts'; -import { Deadline } from '../../../utils/retry.ts'; -import type { RunnerSession } from '../../apple/core/runner/runner-session-types.ts'; +import { IOS_SIMULATOR } from '../../../../__tests__/test-utils/index.ts'; +import { clearRequestCanceled, markRequestCanceled } from '../../../../daemon/request-cancel.ts'; +import { AppError } from '../../../../kernel/errors.ts'; +import { Deadline } from '../../../../utils/retry.ts'; +import type { RunnerSession } from '../runner/runner-session-types.ts'; const { mockEnsureRunnerSession, @@ -20,9 +20,9 @@ const { mockMarkRunnerXctestrunArtifactBadForRun: vi.fn(), })); -vi.mock('../../../utils/diagnostics.ts', async () => { - const actual = await vi.importActual( - '../../../utils/diagnostics.ts', +vi.mock('../../../../utils/diagnostics.ts', async () => { + const actual = await vi.importActual( + '../../../../utils/diagnostics.ts', ); return { ...actual, @@ -30,9 +30,9 @@ vi.mock('../../../utils/diagnostics.ts', async () => { }; }); -vi.mock('../../apple/core/runner/runner-session.ts', async () => { - const actual = await vi.importActual( - '../../apple/core/runner/runner-session.ts', +vi.mock('../runner/runner-session.ts', async () => { + const actual = await vi.importActual( + '../runner/runner-session.ts', ); return { ...actual, @@ -42,10 +42,10 @@ vi.mock('../../apple/core/runner/runner-session.ts', async () => { }; }); -vi.mock('../../apple/core/runner/runner-xctestrun.ts', async () => { - const actual = await vi.importActual< - typeof import('../../apple/core/runner/runner-xctestrun.ts') - >('../../apple/core/runner/runner-xctestrun.ts'); +vi.mock('../runner/runner-xctestrun.ts', async () => { + const actual = await vi.importActual( + '../runner/runner-xctestrun.ts', + ); return { ...actual, markRunnerXctestrunArtifactBadForRun: mockMarkRunnerXctestrunArtifactBadForRun, @@ -56,8 +56,8 @@ import { prepareIosRunner, prewarmIosRunnerSession, runIosRunnerCommand, -} from '../../apple/core/runner/runner-client.ts'; -import type { RunnerXctestrunArtifact } from '../../apple/core/runner/runner-xctestrun.ts'; +} from '../runner/runner-client.ts'; +import type { RunnerXctestrunArtifact } from '../runner/runner-xctestrun.ts'; beforeEach(() => { vi.resetAllMocks(); diff --git a/src/platforms/ios/__tests__/runner-command-traits.test.ts b/src/platforms/apple/core/__tests__/runner-command-traits.test.ts similarity index 93% rename from src/platforms/ios/__tests__/runner-command-traits.test.ts rename to src/platforms/apple/core/__tests__/runner-command-traits.test.ts index 76f04a56a..101bd05a8 100644 --- a/src/platforms/ios/__tests__/runner-command-traits.test.ts +++ b/src/platforms/apple/core/__tests__/runner-command-traits.test.ts @@ -1,14 +1,14 @@ import assert from 'node:assert/strict'; import { test } from 'vitest'; -import type { RunnerCommand } from '../../apple/core/runner/runner-contract.ts'; +import type { RunnerCommand } from '../runner/runner-contract.ts'; import { canSkipRunnerReadinessPreflightAfterHealthyMutation, isReadOnlyRunnerCommand, isRunnerReadinessProbeCommand, readRunnerCommandTraits, type RunnerCommandTraits, -} from '../../apple/core/runner/runner-command-traits.ts'; -import { RUNNER_COMMAND_TRAIT_MANIFEST } from '../../apple/core/runner/runner-command-manifest.ts'; +} from '../runner/runner-command-traits.ts'; +import { RUNNER_COMMAND_TRAIT_MANIFEST } from '../runner/runner-command-manifest.ts'; const EXPECTED_RUNNER_COMMAND_TRAITS = Object.fromEntries( Object.entries(RUNNER_COMMAND_TRAIT_MANIFEST).map(([command, traitClass]) => [ diff --git a/src/platforms/ios/__tests__/runner-icon.test.ts b/src/platforms/apple/core/__tests__/runner-icon.test.ts similarity index 97% rename from src/platforms/ios/__tests__/runner-icon.test.ts rename to src/platforms/apple/core/__tests__/runner-icon.test.ts index 926e0c2df..fd3f4c598 100644 --- a/src/platforms/ios/__tests__/runner-icon.test.ts +++ b/src/platforms/apple/core/__tests__/runner-icon.test.ts @@ -4,14 +4,11 @@ import os from 'node:os'; import path from 'node:path'; import { test } from 'vitest'; -import { - createLocalAppleToolProvider, - withAppleToolProvider, -} from '../../apple/core/tool-provider.ts'; +import { createLocalAppleToolProvider, withAppleToolProvider } from '../tool-provider.ts'; import { applyXctestRunnerAppIcon, applyXctestRunnerAppIconFromDerivedPath, -} from '../../apple/core/runner/runner-icon.ts'; +} from '../runner/runner-icon.ts'; type AppleToolCall = [string, string[]]; diff --git a/src/platforms/ios/__tests__/runner-provider.test.ts b/src/platforms/apple/core/__tests__/runner-provider.test.ts similarity index 93% rename from src/platforms/ios/__tests__/runner-provider.test.ts rename to src/platforms/apple/core/__tests__/runner-provider.test.ts index 9ae9b884a..892e7c280 100644 --- a/src/platforms/ios/__tests__/runner-provider.test.ts +++ b/src/platforms/apple/core/__tests__/runner-provider.test.ts @@ -1,11 +1,11 @@ import assert from 'node:assert/strict'; import { test } from 'vitest'; -import { IOS_SIMULATOR } from '../../../__tests__/test-utils/index.ts'; +import { IOS_SIMULATOR } from '../../../../__tests__/test-utils/index.ts'; import { resolveAppleRunnerProvider, withAppleRunnerProvider, type AppleRunnerProvider, -} from '../../apple/core/runner/runner-provider.ts'; +} from '../runner/runner-provider.ts'; test('scoped Apple runner provider requires matching request id when scoped by request', async () => { const calls: string[] = []; diff --git a/src/platforms/ios/__tests__/runner-sequence.test.ts b/src/platforms/apple/core/__tests__/runner-sequence.test.ts similarity index 97% rename from src/platforms/ios/__tests__/runner-sequence.test.ts rename to src/platforms/apple/core/__tests__/runner-sequence.test.ts index 8febf5491..c005d75bd 100644 --- a/src/platforms/ios/__tests__/runner-sequence.test.ts +++ b/src/platforms/apple/core/__tests__/runner-sequence.test.ts @@ -1,14 +1,14 @@ import { test } from 'vitest'; import assert from 'node:assert/strict'; -import { AppError } from '../../../kernel/errors.ts'; +import { AppError } from '../../../../kernel/errors.ts'; import { MAX_RUNNER_SEQUENCE_STEPS, SEQUENCEABLE_RUNNER_STEP_KINDS, buildRunnerSequenceCommand, parseRunnerSequenceResult, validateRunnerSequenceSteps, -} from '../../apple/core/runner/runner-sequence.ts'; -import type { RunnerSequenceStep } from '../../apple/core/runner/runner-contract.ts'; +} from '../runner/runner-sequence.ts'; +import type { RunnerSequenceStep } from '../runner/runner-contract.ts'; function tap(x: number, y: number): RunnerSequenceStep { return { kind: 'tap', x, y }; diff --git a/src/platforms/ios/__tests__/runner-session.test.ts b/src/platforms/apple/core/__tests__/runner-session.test.ts similarity index 97% rename from src/platforms/ios/__tests__/runner-session.test.ts rename to src/platforms/apple/core/__tests__/runner-session.test.ts index aaf8da286..b765bcbab 100644 --- a/src/platforms/ios/__tests__/runner-session.test.ts +++ b/src/platforms/apple/core/__tests__/runner-session.test.ts @@ -4,14 +4,17 @@ import fs from 'node:fs'; import os from 'node:os'; import path from 'node:path'; import { beforeEach, test, vi } from 'vitest'; -import { IOS_DEVICE, IOS_SIMULATOR } from '../../../__tests__/test-utils/index.ts'; +import { IOS_DEVICE, IOS_SIMULATOR } from '../../../../__tests__/test-utils/index.ts'; import { type RequestProgressEvent, withRequestProgressSink, -} from '../../../daemon/request-progress.ts'; -import { AppError } from '../../../kernel/errors.ts'; -import { flushDiagnosticsToSessionFile, withDiagnosticsScope } from '../../../utils/diagnostics.ts'; -import type { RunnerSession } from '../../apple/core/runner/runner-session-types.ts'; +} from '../../../../daemon/request-progress.ts'; +import { AppError } from '../../../../kernel/errors.ts'; +import { + flushDiagnosticsToSessionFile, + withDiagnosticsScope, +} from '../../../../utils/diagnostics.ts'; +import type { RunnerSession } from '../runner/runner-session-types.ts'; const { mockAcquireXcodebuildSimulatorSetRedirect, @@ -47,18 +50,19 @@ const { mockRedirectRelease: vi.fn(), })); -vi.mock('../../../utils/exec.ts', async () => { - const actual = - await vi.importActual('../../../utils/exec.ts'); +vi.mock('../../../../utils/exec.ts', async () => { + const actual = await vi.importActual( + '../../../../utils/exec.ts', + ); return { ...actual, runCmdBackground: mockRunCmdBackground, }; }); -vi.mock('../../../utils/process-identity.ts', async () => { - const actual = await vi.importActual( - '../../../utils/process-identity.ts', +vi.mock('../../../../utils/process-identity.ts', async () => { + const actual = await vi.importActual( + '../../../../utils/process-identity.ts', ); return { ...actual, @@ -67,10 +71,8 @@ vi.mock('../../../utils/process-identity.ts', async () => { }; }); -vi.mock('../../apple/core/tool-provider.ts', async () => { - const actual = await vi.importActual( - '../../apple/core/tool-provider.ts', - ); +vi.mock('../tool-provider.ts', async () => { + const actual = await vi.importActual('../tool-provider.ts'); return { ...actual, runAppleToolCommand: mockRunAppleToolCommand, @@ -78,10 +80,10 @@ vi.mock('../../apple/core/tool-provider.ts', async () => { }; }); -vi.mock('../../apple/core/runner/runner-transport.ts', async () => { - const actual = await vi.importActual< - typeof import('../../apple/core/runner/runner-transport.ts') - >('../../apple/core/runner/runner-transport.ts'); +vi.mock('../runner/runner-transport.ts', async () => { + const actual = await vi.importActual( + '../runner/runner-transport.ts', + ); return { ...actual, cleanupTempFile: mockCleanupTempFile, @@ -91,10 +93,10 @@ vi.mock('../../apple/core/runner/runner-transport.ts', async () => { }; }); -vi.mock('../../apple/core/runner/runner-xctestrun.ts', async () => { - const actual = await vi.importActual< - typeof import('../../apple/core/runner/runner-xctestrun.ts') - >('../../apple/core/runner/runner-xctestrun.ts'); +vi.mock('../runner/runner-xctestrun.ts', async () => { + const actual = await vi.importActual( + '../runner/runner-xctestrun.ts', + ); return { ...actual, acquireXcodebuildSimulatorSetRedirect: mockAcquireXcodebuildSimulatorSetRedirect, @@ -113,7 +115,7 @@ import { invalidateRunnerSession, stopIosRunnerSession, validateRunnerDevice, -} from '../../apple/core/runner/runner-session.ts'; +} from '../runner/runner-session.ts'; import { cleanupRunnerLeasesForOwner, RUNNER_OWNER_START_TIME, @@ -121,7 +123,7 @@ import { setRunnerLeaseOwnerStateDir, writeRunnerLease, type RunnerLease, -} from '../../apple/core/runner/runner-lease.ts'; +} from '../runner/runner-lease.ts'; beforeEach(async () => { await abortAllIosRunnerSessions(); diff --git a/src/platforms/ios/__tests__/runner-transport.test.ts b/src/platforms/apple/core/__tests__/runner-transport.test.ts similarity index 92% rename from src/platforms/ios/__tests__/runner-transport.test.ts rename to src/platforms/apple/core/__tests__/runner-transport.test.ts index 04c171410..887e45510 100644 --- a/src/platforms/ios/__tests__/runner-transport.test.ts +++ b/src/platforms/apple/core/__tests__/runner-transport.test.ts @@ -1,18 +1,19 @@ import fs from 'node:fs'; import { afterEach, beforeEach, test, vi } from 'vitest'; import assert from 'node:assert/strict'; -import type { DeviceInfo } from '../../../kernel/device.ts'; -import type { ExecBackgroundResult } from '../../../utils/exec.ts'; -import { AppError } from '../../../kernel/errors.ts'; -import type { RunnerSession } from '../../apple/core/runner/runner-session-types.ts'; +import type { DeviceInfo } from '../../../../kernel/device.ts'; +import type { ExecBackgroundResult } from '../../../../utils/exec.ts'; +import { AppError } from '../../../../kernel/errors.ts'; +import type { RunnerSession } from '../runner/runner-session-types.ts'; const { mockRunCmd } = vi.hoisted(() => ({ mockRunCmd: vi.fn(), })); -vi.mock('../../../utils/exec.ts', async () => { - const actual = - await vi.importActual('../../../utils/exec.ts'); +vi.mock('../../../../utils/exec.ts', async () => { + const actual = await vi.importActual( + '../../../../utils/exec.ts', + ); return { ...actual, runCmd: mockRunCmd, @@ -23,7 +24,7 @@ import { clearDeviceTunnelIpCache, sendRunnerCommandOnce, waitForRunner, -} from '../../apple/core/runner/runner-transport.ts'; +} from '../runner/runner-transport.ts'; const iosSimulator: DeviceInfo = { platform: 'ios', diff --git a/src/platforms/ios/__tests__/runner-xctestrun.test.ts b/src/platforms/apple/core/__tests__/runner-xctestrun.test.ts similarity index 99% rename from src/platforms/ios/__tests__/runner-xctestrun.test.ts rename to src/platforms/apple/core/__tests__/runner-xctestrun.test.ts index 1ffccfc06..ad9bd0096 100644 --- a/src/platforms/ios/__tests__/runner-xctestrun.test.ts +++ b/src/platforms/apple/core/__tests__/runner-xctestrun.test.ts @@ -5,8 +5,8 @@ import fs from 'node:fs'; import os from 'node:os'; import path from 'node:path'; -import type { DeviceInfo } from '../../../kernel/device.ts'; -import { withCommandExecutorOverride } from '../../../utils/exec.ts'; +import type { DeviceInfo } from '../../../../kernel/device.ts'; +import { withCommandExecutorOverride } from '../../../../utils/exec.ts'; import { __resetRunnerToolchainFingerprintCacheForTests, acquireXcodebuildSimulatorSetRedirect, @@ -18,7 +18,7 @@ import { resolveRunnerDerivedPath, resolveXcodebuildSimulatorDeviceSetPath, scoreXctestrunCandidate, -} from '../../apple/core/runner/runner-xctestrun.ts'; +} from '../runner/runner-xctestrun.ts'; const iosSimulator: DeviceInfo = { platform: 'ios', diff --git a/src/platforms/ios/__tests__/simctl.test.ts b/src/platforms/apple/core/__tests__/simctl.test.ts similarity index 88% rename from src/platforms/ios/__tests__/simctl.test.ts rename to src/platforms/apple/core/__tests__/simctl.test.ts index 758cf0001..ea64ee315 100644 --- a/src/platforms/ios/__tests__/simctl.test.ts +++ b/src/platforms/apple/core/__tests__/simctl.test.ts @@ -1,7 +1,7 @@ import { test } from 'vitest'; import assert from 'node:assert/strict'; -import { buildSimctlArgs, buildSimctlArgsForDevice } from '../../apple/core/simctl.ts'; -import type { DeviceInfo } from '../../../kernel/device.ts'; +import { buildSimctlArgs, buildSimctlArgsForDevice } from '../simctl.ts'; +import type { DeviceInfo } from '../../../../kernel/device.ts'; const IOS_SIMULATOR: DeviceInfo = { platform: 'ios', diff --git a/src/platforms/ios/__tests__/tool-provider.test.ts b/src/platforms/apple/core/__tests__/tool-provider.test.ts similarity index 99% rename from src/platforms/ios/__tests__/tool-provider.test.ts rename to src/platforms/apple/core/__tests__/tool-provider.test.ts index 00f4c4c03..70e21fa41 100644 --- a/src/platforms/ios/__tests__/tool-provider.test.ts +++ b/src/platforms/apple/core/__tests__/tool-provider.test.ts @@ -6,7 +6,7 @@ import { runAppleToolCommand, runXcrun, withAppleToolProvider, -} from '../../apple/core/tool-provider.ts'; +} from '../tool-provider.ts'; test('scoped Apple tool provider handles xcrun execution', async () => { const calls: Array<[string, string[]]> = []; diff --git a/src/platforms/ios/__tests__/xml.test.ts b/src/platforms/apple/core/__tests__/xml.test.ts similarity index 97% rename from src/platforms/ios/__tests__/xml.test.ts rename to src/platforms/apple/core/__tests__/xml.test.ts index 7045659b2..c498ea5dd 100644 --- a/src/platforms/ios/__tests__/xml.test.ts +++ b/src/platforms/apple/core/__tests__/xml.test.ts @@ -1,7 +1,7 @@ import assert from 'node:assert/strict'; import { test } from 'vitest'; -import { parseXmlDocumentSync } from '../../apple/core/xml.ts'; +import { parseXmlDocumentSync } from '../xml.ts'; test('parseXmlDocumentSync preserves ordered nodes with attributes and decoded text', () => { const nodes = parseXmlDocumentSync(