| 'use strict'; |
| const common = require('../common'); |
| const assert = require('assert'); |
| const dc = require('diagnostics_channel'); |
| |
| const trace = dc.tracingChannel('module.require'); |
| const events = []; |
| let lastEvent; |
| |
| function track(name) { |
| return (event) => { |
| // Verify every event after the first is the same object |
| if (events.length) { |
| assert.strictEqual(event, lastEvent); |
| } |
| lastEvent = event; |
| |
| events.push({ name, ...event }); |
| }; |
| } |
| |
| trace.subscribe({ |
| start: common.mustCall(track('start')), |
| end: common.mustCall(track('end')), |
| asyncStart: common.mustNotCall(track('asyncStart')), |
| asyncEnd: common.mustNotCall(track('asyncEnd')), |
| error: common.mustCall(track('error')), |
| }); |
| |
| let error; |
| try { |
| require('does-not-exist'); |
| } catch (err) { |
| error = err; |
| } |
| |
| // Verify order and contents of each event |
| assert.deepStrictEqual(events, [ |
| { |
| name: 'start', |
| parentFilename: module.filename, |
| id: 'does-not-exist', |
| }, |
| { |
| name: 'error', |
| parentFilename: module.filename, |
| id: 'does-not-exist', |
| error, |
| }, |
| { |
| name: 'end', |
| parentFilename: module.filename, |
| id: 'does-not-exist', |
| error, |
| }, |
| ]); |