1'use strict'; 2const common = require('../common'); 3const assert = require('node:assert'); 4const fs = require('node:fs'); 5 6function verifyStatFsObject(statfs, isBigint = false) { 7 const valueType = isBigint ? 'bigint' : 'number'; 8 9 [ 10 'type', 'bsize', 'blocks', 'bfree', 'bavail', 'files', 'ffree', 11 ].forEach((k) => { 12 assert.ok(Object.hasOwn(statfs, k)); 13 assert.strictEqual(typeof statfs[k], valueType, 14 `${k} should be a ${valueType}`); 15 }); 16} 17 18fs.statfs(__filename, common.mustSucceed(function(stats) { 19 verifyStatFsObject(stats); 20 assert.strictEqual(this, undefined); 21})); 22 23fs.statfs(__filename, { bigint: true }, function(err, stats) { 24 assert.ifError(err); 25 verifyStatFsObject(stats, true); 26 assert.strictEqual(this, undefined); 27}); 28 29// Synchronous 30{ 31 const statFsObj = fs.statfsSync(__filename); 32 verifyStatFsObject(statFsObj); 33} 34 35// Synchronous Bigint 36{ 37 const statFsBigIntObj = fs.statfsSync(__filename, { bigint: true }); 38 verifyStatFsObject(statFsBigIntObj, true); 39} 40 41[false, 1, {}, [], null, undefined].forEach((input) => { 42 assert.throws( 43 () => fs.statfs(input, common.mustNotCall()), 44 { 45 code: 'ERR_INVALID_ARG_TYPE', 46 name: 'TypeError' 47 } 48 ); 49 assert.throws( 50 () => fs.statfsSync(input), 51 { 52 code: 'ERR_INVALID_ARG_TYPE', 53 name: 'TypeError' 54 } 55 ); 56}); 57 58// Should not throw an error 59fs.statfs(__filename, undefined, common.mustCall()); 60