nginx-testing
Version:
Support for integration/acceptance testing of nginx configuration.
46 lines (37 loc) • 1.01 kB
text/typescript
import * as OS from 'node:os'
import * as path from 'node:path'
import * as process from 'node:process'
import * as FS from './fs'
export function createTempDir (name: string): string {
const nodeModules = findPkgNodeModules(process.cwd())
const tempDir = nodeModules
? path.join(nodeModules, '.cache')
: OS.tmpdir()
if (nodeModules) {
FS.mkdirSync(tempDir, { recursive: true })
}
return FS.mkdtempSync(path.join(tempDir, `${name}-`))
}
function findPkgNodeModules (cwd: string): string | null {
let dir = path.resolve(cwd)
const rootDir = path.parse(dir).root
while (dir !== rootDir) {
const nodeModules = path.join(dir, 'node_modules')
if (isWritableDir(nodeModules)) {
return nodeModules
}
dir = path.dirname(dir)
}
return null
}
function isWritableDir (path: string): boolean {
try {
if (!FS.statSync(path).isDirectory()) {
return false
}
FS.accessSync(path, FS.constants.W_OK)
return true
} catch {
return false
}
}