UNPKG

@napi-rs/cli

Version:

Cli tools for napi-rs

57 lines (46 loc) 1.31 kB
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', }) })