• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Flags: --expose-internals
2'use strict';
3require('../common');
4const fixtures = require('../common/fixtures');
5const { internalBinding } = require('internal/test/binding');
6const { filterOwnProperties } = require('internal/util');
7const { internalModuleReadJSON } = internalBinding('fs');
8const { readFileSync } = require('fs');
9const { strictEqual, deepStrictEqual } = require('assert');
10
11{
12  strictEqual(internalModuleReadJSON('nosuchfile')[0], undefined);
13}
14{
15  strictEqual(internalModuleReadJSON(fixtures.path('empty.txt'))[0], '');
16}
17{
18  strictEqual(internalModuleReadJSON(fixtures.path('empty-with-bom.txt'))[0], '');
19}
20{
21  const filename = fixtures.path('require-bin/package.json');
22  const returnValue = JSON.parse(internalModuleReadJSON(filename)[0]);
23  const file = JSON.parse(readFileSync(filename, 'utf-8'));
24  const expectedValue = filterOwnProperties(file, ['name', 'main', 'exports', 'imports', 'type']);
25  deepStrictEqual({
26    __proto__: null,
27    ...returnValue,
28  }, expectedValue);
29}
30