/** * @license * Copyright 2025 Google LLC * SPDX-License-Identifier: Apache-2.0 */ import { vi } from 'vitest'; import { RELAUNCH_EXIT_CODE, relaunchApp, _resetRelaunchStateForTesting, } from './processUtils.js'; import * as cleanup from './cleanup.js'; import * as handleAutoUpdate from './handleAutoUpdate.js'; vi.mock('./handleAutoUpdate.js', () => ({ waitForUpdateCompletion: vi.fn().mockResolvedValue(undefined), })); describe('processUtils', () => { const processExit = vi .spyOn(process, 'exit') .mockReturnValue(undefined as never); const runExitCleanup = vi.spyOn(cleanup, 'runExitCleanup'); beforeEach(() => { _resetRelaunchStateForTesting(); }); afterEach(() => vi.clearAllMocks()); it('should wait for updates, run cleanup, and exit with the relaunch code', async () => { await relaunchApp(); expect(handleAutoUpdate.waitForUpdateCompletion).toHaveBeenCalledTimes(1); expect(runExitCleanup).toHaveBeenCalledTimes(1); expect(processExit).toHaveBeenCalledWith(RELAUNCH_EXIT_CODE); }); });