test: fix windows path isolation (#659)

This commit is contained in:
luSkyl
2026-05-12 20:56:04 +08:00
committed by GitHub
parent 8b57c4a278
commit 8b291d7a48
3 changed files with 20 additions and 5 deletions
+2 -2
View File
@@ -12,7 +12,7 @@ function walkFiles(dir: string, files: string[] = []): string[] {
const path = join(dir, entry.name)
if (entry.isDirectory()) {
walkFiles(path, files)
} else if (/\.(ts|vue)$/.test(entry.name) && !path.includes('/i18n/locales/')) {
} else if (/\.(ts|vue)$/.test(entry.name) && !path.replace(/\\/g, '/').includes('/i18n/locales/')) {
files.push(path)
}
}
@@ -76,6 +76,6 @@ describe('i18n locale coverage', () => {
})
it('keeps the coverage scanner rooted in client source files', () => {
expect(relative(process.cwd(), SOURCE_ROOT)).toBe('packages/client/src')
expect(relative(process.cwd(), SOURCE_ROOT)).toBe(join('packages', 'client', 'src'))
})
})
+6 -3
View File
@@ -1,4 +1,5 @@
import { afterAll, beforeEach, describe, expect, it, vi } from 'vitest'
import { join } from 'path'
type FsMocks = {
readFile: ReturnType<typeof vi.fn>
@@ -20,8 +21,8 @@ async function loadAuth(overrides: Partial<FsMocks> & { home?: string } = {}) {
return {
...mod,
mocks: { readFile, writeFile, mkdir },
appHome: `${home}/.hermes-web-ui`,
tokenFile: `${home}/.hermes-web-ui/.token`,
appHome: join(home, '.hermes-web-ui'),
tokenFile: join(home, '.hermes-web-ui', '.token'),
}
}
@@ -94,12 +95,14 @@ describe('Auth Service', () => {
const token = await getToken()
const expectedWriteOptions = process.platform === 'win32' ? {} : { mode: 0o600 }
expect(token).toMatch(/^[a-f0-9]{64}$/)
expect(mkdir).toHaveBeenCalledWith(appHome, { recursive: true })
expect(writeFile).toHaveBeenCalledWith(
tokenFile,
expect.stringMatching(/^[a-f0-9]{64}\n$/),
{ mode: 0o600 },
expectedWriteOptions,
)
})
})
+12
View File
@@ -4,6 +4,9 @@ import { join } from 'path'
import { tmpdir } from 'os'
let homeDir = ''
const originalHermesHome = process.env.HERMES_HOME
const originalLocalAppData = process.env.LOCALAPPDATA
const originalAppData = process.env.APPDATA
function hermesPath(...parts: string[]) {
return join(homeDir, '.hermes', ...parts)
@@ -20,6 +23,9 @@ function writeModelsCache(data: Record<string, unknown>) {
}
async function loadModelContext() {
process.env.HERMES_HOME = hermesPath()
delete process.env.LOCALAPPDATA
delete process.env.APPDATA
vi.resetModules()
vi.doMock('os', async () => ({
...(await vi.importActual<typeof import('os')>('os')),
@@ -43,6 +49,12 @@ describe('getModelContextLength', () => {
afterEach(() => {
vi.doUnmock('os')
if (originalHermesHome === undefined) delete process.env.HERMES_HOME
else process.env.HERMES_HOME = originalHermesHome
if (originalLocalAppData === undefined) delete process.env.LOCALAPPDATA
else process.env.LOCALAPPDATA = originalLocalAppData
if (originalAppData === undefined) delete process.env.APPDATA
else process.env.APPDATA = originalAppData
if (homeDir) rmSync(homeDir, { recursive: true, force: true })
homeDir = ''
})