@napi-rs/cli
Version:
Cli tools for napi-rs
57 lines (46 loc) • 1.31 kB
text/typescript
import { existsSync } from 'node:fs'
import { mkdtemp, readFile, rm, writeFile } from 'node:fs/promises'
import { tmpdir } from 'node:os'
import { join } from 'node:path'
import ava, { type TestFn } from 'ava'
import { updatePackageJson } from '../misc.js'
const test = ava as TestFn<{
tmpDir: string
}>
test.beforeEach(async (t) => {
t.context = {
tmpDir: await mkdtemp(join(tmpdir(), 'napi-rs-misc-spec-')),
}
})
test.afterEach.always(async (t) => {
if (existsSync(t.context.tmpDir)) {
await rm(t.context.tmpDir, { recursive: true, force: true })
}
})
test('updatePackageJson merges nested objects instead of overwriting them', async (t) => {
const packageJsonPath = join(t.context.tmpDir, 'package.json')
await writeFile(
packageJsonPath,
JSON.stringify(
{
name: 'fixture',
version: '1.0.0',
optionalDependencies: {
fsevents: '^2.3.3',
},
},
null,
2,
),
)
await updatePackageJson(packageJsonPath, {
optionalDependencies: {
'@napi-rs/fixture-darwin-arm64': '1.0.1',
},
})
const packageJson = JSON.parse(await readFile(packageJsonPath, 'utf8'))
t.deepEqual(packageJson.optionalDependencies, {
fsevents: '^2.3.3',
'@napi-rs/fixture-darwin-arm64': '1.0.1',
})
})