summaryrefslogtreecommitdiff
path: root/test/addons-napi/test_callback_scope/test-async-hooks.js
diff options
context:
space:
mode:
Diffstat (limited to 'test/addons-napi/test_callback_scope/test-async-hooks.js')
-rw-r--r--test/addons-napi/test_callback_scope/test-async-hooks.js29
1 files changed, 29 insertions, 0 deletions
diff --git a/test/addons-napi/test_callback_scope/test-async-hooks.js b/test/addons-napi/test_callback_scope/test-async-hooks.js
new file mode 100644
index 0000000000..1a11bf6039
--- /dev/null
+++ b/test/addons-napi/test_callback_scope/test-async-hooks.js
@@ -0,0 +1,29 @@
+'use strict';
+
+const common = require('../../common');
+const assert = require('assert');
+const async_hooks = require('async_hooks');
+
+// The async_hook that we enable would register the process.emitWarning()
+// call from loading the N-API addon as asynchronous activity because
+// it contains a process.nextTick() call. Monkey patch it to be a no-op
+// before we load the addon in order to avoid this.
+process.emitWarning = () => {};
+
+const { runInCallbackScope } = require(`./build/${common.buildType}/binding`);
+
+let insideHook = false;
+async_hooks.createHook({
+ before: common.mustCall((id) => {
+ assert.strictEqual(id, 1000);
+ insideHook = true;
+ }),
+ after: common.mustCall((id) => {
+ assert.strictEqual(id, 1000);
+ insideHook = false;
+ })
+}).enable();
+
+runInCallbackScope({}, 1000, 1000, () => {
+ assert(insideHook);
+});