mirror of
https://github.com/browseros-ai/BrowserOS.git
synced 2026-05-21 12:55:09 +00:00
* fix: store server database under browseros dir * fix: address PR review feedback for 923
136 lines
3.3 KiB
TypeScript
136 lines
3.3 KiB
TypeScript
/**
|
|
* @license
|
|
* Copyright 2025 BrowserOS
|
|
*/
|
|
|
|
import { afterEach, beforeEach, describe, expect, it, mock } from 'bun:test'
|
|
import { homedir } from 'node:os'
|
|
import { join } from 'node:path'
|
|
import { PATHS } from '@browseros/shared/constants/paths'
|
|
import {
|
|
getBrowserosDir,
|
|
getCacheDir,
|
|
getDbPath,
|
|
getVmCacheDir,
|
|
logDevelopmentBrowserosDir,
|
|
} from '../src/lib/browseros-dir'
|
|
import { logger } from '../src/lib/logger'
|
|
|
|
describe('getBrowserosDir', () => {
|
|
const originalNodeEnv = process.env.NODE_ENV
|
|
const originalBrowserosDir = process.env.BROWSEROS_DIR
|
|
|
|
beforeEach(() => {
|
|
delete process.env.NODE_ENV
|
|
delete process.env.BROWSEROS_DIR
|
|
})
|
|
|
|
afterEach(() => {
|
|
if (originalNodeEnv === undefined) {
|
|
delete process.env.NODE_ENV
|
|
return
|
|
}
|
|
|
|
process.env.NODE_ENV = originalNodeEnv
|
|
|
|
if (originalBrowserosDir === undefined) {
|
|
delete process.env.BROWSEROS_DIR
|
|
return
|
|
}
|
|
|
|
process.env.BROWSEROS_DIR = originalBrowserosDir
|
|
})
|
|
|
|
it('uses a separate home directory in development', () => {
|
|
process.env.NODE_ENV = 'development'
|
|
|
|
expect(getBrowserosDir()).toBe(join(homedir(), '.browseros-dev'))
|
|
})
|
|
|
|
it('uses the standard home directory outside development', () => {
|
|
process.env.NODE_ENV = 'test'
|
|
|
|
expect(getBrowserosDir()).toBe(join(homedir(), PATHS.BROWSEROS_DIR_NAME))
|
|
})
|
|
|
|
it('logs the resolved development directory path', () => {
|
|
process.env.NODE_ENV = 'development'
|
|
const originalInfo = logger.info
|
|
const info = mock(() => {})
|
|
logger.info = info
|
|
|
|
try {
|
|
logDevelopmentBrowserosDir()
|
|
|
|
expect(info).toHaveBeenCalledWith(
|
|
`Using development BrowserOS directory: ${join(homedir(), '.browseros-dev')}`,
|
|
)
|
|
} finally {
|
|
logger.info = originalInfo
|
|
}
|
|
})
|
|
|
|
it('does not log a development directory outside development', () => {
|
|
process.env.NODE_ENV = 'test'
|
|
const originalInfo = logger.info
|
|
const info = mock(() => {})
|
|
logger.info = info
|
|
|
|
try {
|
|
logDevelopmentBrowserosDir()
|
|
|
|
expect(info).not.toHaveBeenCalled()
|
|
} finally {
|
|
logger.info = originalInfo
|
|
}
|
|
})
|
|
|
|
it('uses the development cache directory in development', () => {
|
|
process.env.NODE_ENV = 'development'
|
|
|
|
expect(getCacheDir()).toBe(join(homedir(), '.browseros-dev', 'cache'))
|
|
})
|
|
|
|
it('uses the BrowserOS directory for the sqlite database', () => {
|
|
process.env.NODE_ENV = 'development'
|
|
|
|
expect(getDbPath()).toBe(
|
|
join(
|
|
homedir(),
|
|
PATHS.DEV_BROWSEROS_DIR_NAME,
|
|
PATHS.DB_DIR_NAME,
|
|
PATHS.DB_FILE_NAME,
|
|
),
|
|
)
|
|
})
|
|
|
|
it('uses the standard BrowserOS directory for the sqlite database outside development', () => {
|
|
process.env.NODE_ENV = 'test'
|
|
|
|
expect(getDbPath()).toBe(
|
|
join(
|
|
homedir(),
|
|
PATHS.BROWSEROS_DIR_NAME,
|
|
PATHS.DB_DIR_NAME,
|
|
PATHS.DB_FILE_NAME,
|
|
),
|
|
)
|
|
})
|
|
|
|
it('uses the standard cache directory outside development', () => {
|
|
process.env.NODE_ENV = 'test'
|
|
|
|
expect(getCacheDir()).toBe(
|
|
join(homedir(), PATHS.BROWSEROS_DIR_NAME, 'cache'),
|
|
)
|
|
})
|
|
|
|
it('uses a vm cache directory below cache', () => {
|
|
process.env.NODE_ENV = 'development'
|
|
|
|
expect(getVmCacheDir()).toBe(
|
|
join(homedir(), '.browseros-dev', 'cache', 'vm'),
|
|
)
|
|
})
|
|
})
|