From 9e68947ff4287cb5897597e4c0330565ef42fba0 Mon Sep 17 00:00:00 2001 From: Daniel Bevenius Date: Tue, 26 Dec 2017 09:58:43 +0100 Subject: [PATCH] test: add hasCrypto when using binding('crypto') Currently, when configured --without-ssl tests that use process.binding('crypto') fail with the following error: === release test-accessor-properties === Path: parallel/test-accessor-properties node/test/parallel/test-accessor-properties.js:16 const crypto = process.binding('crypto'); ^ Error: No such module: crypto at Object. (test-accessor-properties.js:16:24) at Module._compile (module.js:660:30) at Object.Module._extensions..js (module.js:671:10) at Module.load (module.js:577:32) at tryModuleLoad (module.js:517:12) at Function.Module._load (module.js:509:3) at Function.Module.runMain (module.js:701:10) at startup (bootstrap_node.js:194:16) at bootstrap_node.js:645:3 This commit adds a hasCrypto check. Backport-PR-URL: https://github.com/nodejs/node/pull/20456 PR-URL: https://github.com/nodejs/node/pull/17867 Reviewed-By: James M Snell Reviewed-By: Ruben Bridgewater --- test/parallel/test-accessor-properties.js | 49 ++++++++++++----------- 1 file changed, 25 insertions(+), 24 deletions(-) diff --git a/test/parallel/test-accessor-properties.js b/test/parallel/test-accessor-properties.js index 478b1c55e93fdb..13535ceda9667f 100644 --- a/test/parallel/test-accessor-properties.js +++ b/test/parallel/test-accessor-properties.js @@ -1,6 +1,6 @@ 'use strict'; -require('../common'); +const common = require('../common'); // This tests that the accessor properties do not raise assertions // when called with incompatible receivers. @@ -12,9 +12,6 @@ const assert = require('assert'); const TTY = process.binding('tty_wrap').TTY; const UDP = process.binding('udp_wrap').UDP; -// There are accessor properties in crypto too -const crypto = process.binding('crypto'); - { // Should throw instead of raise assertions assert.throws(() => { @@ -33,15 +30,6 @@ const crypto = process.binding('crypto'); UDP.prototype.fd; }, TypeError); - assert.throws(() => { - crypto.SecureContext.prototype._external; - }, TypeError); - - assert.throws(() => { - crypto.Connection.prototype._external; - }, TypeError); - - // Should not throw for Object.getOwnPropertyDescriptor assert.strictEqual( typeof Object.getOwnPropertyDescriptor(TTY.prototype, 'bytesRead'), @@ -63,15 +51,28 @@ const crypto = process.binding('crypto'); 'object' ); - assert.strictEqual( - typeof Object.getOwnPropertyDescriptor( - crypto.SecureContext.prototype, '_external'), - 'object' - ); - - assert.strictEqual( - typeof Object.getOwnPropertyDescriptor( - crypto.Connection.prototype, '_external'), - 'object' - ); + if (common.hasCrypto) { // eslint-disable-line crypto-check + // There are accessor properties in crypto too + const crypto = process.binding('crypto'); + + assert.throws(() => { + crypto.SecureContext.prototype._external; + }, TypeError); + + assert.throws(() => { + crypto.Connection.prototype._external; + }, TypeError); + + assert.strictEqual( + typeof Object.getOwnPropertyDescriptor( + crypto.SecureContext.prototype, '_external'), + 'object' + ); + + assert.strictEqual( + typeof Object.getOwnPropertyDescriptor( + crypto.Connection.prototype, '_external'), + 'object' + ); + } }