Files
orca/config/scripts/static-analysis/process-boundaries/windows-bin-spawn-predicate.test.mjs
T

34 lines
1.2 KiB
JavaScript

import { describe, expect, it } from 'vitest'
import { hasNodeModulesBinSpawn } from './windows-bin-spawn-predicate.mjs'
describe('node_modules bin spawn predicate', () => {
it('folds dot segments, so a .. detour into node_modules/.bin is still caught', () => {
expect(
hasNodeModulesBinSpawn(
"import { execFileSync } from 'node:child_process'\n" +
"import path from 'node:path'\n" +
"execFileSync(path.join(root, 'node_modules', 'tools', '..', '.bin', 'oxfmt'), [])\n"
)
).toBe(true)
})
it('folds Windows-separator dot segments too', () => {
expect(
hasNodeModulesBinSpawn(
"import { execFileSync } from 'node:child_process'\n" +
"execFileSync('root\\\\node_modules\\\\tools\\\\..\\\\.bin\\\\oxfmt', [])\n"
)
).toBe(true)
})
it('does not fold a .. back into .bin when it escapes the directory', () => {
expect(
hasNodeModulesBinSpawn(
"import { execFileSync } from 'node:child_process'\n" +
"import path from 'node:path'\n" +
"execFileSync(path.join(root, 'node_modules', '.bin', '..', 'oxfmt', 'cli.js'), [])\n"
)
).toBe(false)
})
})