CoolFace
Datasetpublic

basant307/AI_Governance_Project

sourceHugging Faceapache-2.0updated 2mo agoView on Hugging Face
0likes48downloads
fast-path-open.test.js137 linesDownload Raw Back to serve
1/**2 * @license3 * Copyright 2025 Qwen Team4 * SPDX-License-Identifier: Apache-2.05 */6import { afterEach, describe, expect, it, vi } from 'vitest';7import * as fs from 'node:fs';8import * as os from 'node:os';9import * as path from 'node:path';10const originalQwenHome = process.env['QWEN_HOME'];11const originalSystemSettingsPath = process.env['QWEN_CODE_SYSTEM_SETTINGS_PATH'];12const originalSystemDefaultsPath = process.env['QWEN_CODE_SYSTEM_DEFAULTS_PATH'];13const originalTrustedFoldersPath = process.env['QWEN_CODE_TRUSTED_FOLDERS_PATH'];14describe('serve fast path --open import boundary', () => {15    let tempQwenHome;16    function useTempQwenHome() {17        tempQwenHome = fs.realpathSync(fs.mkdtempSync(path.join(os.tmpdir(), 'qws-fast-path-open-')));18        process.env['QWEN_HOME'] = tempQwenHome;19        process.env['QWEN_CODE_SYSTEM_SETTINGS_PATH'] = path.join(tempQwenHome, 'system-settings.json');20        process.env['QWEN_CODE_SYSTEM_DEFAULTS_PATH'] = path.join(tempQwenHome, 'system-defaults.json');21        process.env['QWEN_CODE_TRUSTED_FOLDERS_PATH'] = path.join(tempQwenHome, 'trustedFolders.json');22    }23    afterEach(() => {24        vi.restoreAllMocks();25        vi.doUnmock('./run-qwen-serve.js');26        vi.doUnmock('../commands/serve.js');27        vi.resetModules();28        if (originalQwenHome === undefined) {29            delete process.env['QWEN_HOME'];30        }31        else {32            process.env['QWEN_HOME'] = originalQwenHome;33        }34        if (originalSystemSettingsPath === undefined) {35            delete process.env['QWEN_CODE_SYSTEM_SETTINGS_PATH'];36        }37        else {38            process.env['QWEN_CODE_SYSTEM_SETTINGS_PATH'] =39                originalSystemSettingsPath;40        }41        if (originalSystemDefaultsPath === undefined) {42            delete process.env['QWEN_CODE_SYSTEM_DEFAULTS_PATH'];43        }44        else {45            process.env['QWEN_CODE_SYSTEM_DEFAULTS_PATH'] =46                originalSystemDefaultsPath;47        }48        if (originalTrustedFoldersPath === undefined) {49            delete process.env['QWEN_CODE_TRUSTED_FOLDERS_PATH'];50        }51        else {52            process.env['QWEN_CODE_TRUSTED_FOLDERS_PATH'] =53                originalTrustedFoldersPath;54        }55        if (tempQwenHome) {56            fs.rmSync(tempQwenHome, { recursive: true, force: true });57            tempQwenHome = undefined;58        }59    });60    it('defers importing the full serve command opener until runtime is ready', async () => {61        useTempQwenHome();62        let resolveRuntime;63        const runtimeReady = new Promise((resolve) => {64            resolveRuntime = resolve;65        });66        const runQwenServe = vi.fn(async () => ({67            runtimeReady,68            close: vi.fn().mockResolvedValue(undefined),69        }));70        let serveCommandImported = false;71        const openBrowser = vi.fn(async () => undefined);72        vi.doMock('./run-qwen-serve.js', () => ({ runQwenServe }));73        vi.doMock('../commands/serve.js', () => {74            serveCommandImported = true;75            return { maybeOpenWebShellBrowser: openBrowser };76        });77        const { tryRunServeFastPath } = await import('./fast-path.js');78        void tryRunServeFastPath([79            'serve',80            '--port',81            '0',82            '--hostname',83            '127.0.0.1',84            '--open',85            '--no-web',86        ]);87        await vi.waitFor(() => expect(runQwenServe).toHaveBeenCalledTimes(1));88        expect(runQwenServe).toHaveBeenCalledWith(expect.any(Object), expect.objectContaining({ deferRuntimeUntilFirstHealth: false }));89        await Promise.resolve();90        expect(serveCommandImported).toBe(false);91        resolveRuntime?.();92        await vi.waitFor(() => expect(openBrowser).toHaveBeenCalledTimes(1));93        expect(serveCommandImported).toBe(true);94    });95    it('skips importing the full serve command opener when runtime startup fails', async () => {96        useTempQwenHome();97        let rejectRuntime;98        const runtimeReady = new Promise((_resolve, reject) => {99            rejectRuntime = reject;100        });101        const close = vi.fn().mockResolvedValue(undefined);102        const runQwenServe = vi.fn(async () => ({103            runtimeReady,104            close,105        }));106        let serveCommandImported = false;107        const openBrowser = vi.fn(async () => undefined);108        vi.doMock('./run-qwen-serve.js', () => ({ runQwenServe }));109        vi.doMock('../commands/serve.js', () => {110            serveCommandImported = true;111            return { maybeOpenWebShellBrowser: openBrowser };112        });113        vi.spyOn(process, 'exit').mockImplementation(((code) => {114            throw new Error(`process.exit ${code}`);115        }));116        const { tryRunServeFastPath } = await import('./fast-path.js');117        const fastPathPromise = tryRunServeFastPath([118            'serve',119            '--port',120            '0',121            '--hostname',122            '127.0.0.1',123            '--open',124            '--no-web',125        ]);126        await vi.waitFor(() => expect(runQwenServe).toHaveBeenCalledTimes(1));127        expect(runQwenServe).toHaveBeenCalledWith(expect.any(Object), expect.objectContaining({ deferRuntimeUntilFirstHealth: false }));128        await Promise.resolve();129        expect(serveCommandImported).toBe(false);130        rejectRuntime?.(new Error('runtime boom'));131        await expect(fastPathPromise).rejects.toThrow('process.exit 1');132        expect(openBrowser).not.toHaveBeenCalled();133        expect(serveCommandImported).toBe(false);134        expect(close).toHaveBeenCalledTimes(1);135    });136});137//# sourceMappingURL=fast-path-open.test.js.map
basant307/AI_Governance_Project · CoolFace