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