'use strict'; const common = require('../common'); const assert = require('assert'); const path = require('path'); const util = require('util'); const message = 'message'; const testFunction1 = common.mustNotCall(message); const testFunction2 = common.mustNotCall(message); const createValidate = (line, args = []) => common.mustCall((e) => { const prefix = `${message} at `; assert.ok(e.message.startsWith(prefix)); if (process.platform === 'win32') { e.message = e.message.substring(2); // remove 'C:' } const msg = e.message.substring(prefix.length); const firstColon = msg.indexOf(':'); const fileName = msg.substring(0, firstColon); const rest = msg.substring(firstColon + 1); assert.strictEqual(path.basename(fileName), 'test-common-must-not-call.js'); const argsInfo = args.length > 0 ? `\ncalled with arguments: ${args.map(util.inspect).join(', ')}` : ''; assert.strictEqual(rest, line + argsInfo); }); const validate1 = createValidate('9'); try { testFunction1(); } catch (e) { validate1(e); } const validate2 = createValidate('11', ['hello', 42]); try { testFunction2('hello', 42); } catch (e) { validate2(e); } assert.throws( () => new Proxy({ prop: Symbol() }, { get: common.mustNotCall() }).prop, { code: 'ERR_ASSERTION' } ); { const { inspect } = util; delete util.inspect; assert.throws( () => common.mustNotCall()(null), { code: 'ERR_ASSERTION' } ); util.inspect = inspect; }