diff --git a/test/addons/openssl-binding/binding.gyp b/test/addons/openssl-binding/binding.gyp index 672f84bb860..bafde41348c 100644 --- a/test/addons/openssl-binding/binding.gyp +++ b/test/addons/openssl-binding/binding.gyp @@ -2,8 +2,12 @@ 'targets': [ { 'target_name': 'binding', - 'sources': ['binding.cc'], - 'include_dirs': ['../../../deps/openssl/openssl/include'], + 'conditions': [ + ['node_use_openssl=="true"', { + 'sources': ['binding.cc'], + 'include_dirs': ['../../../deps/openssl/openssl/include'], + }] + ] }, ] } diff --git a/test/addons/openssl-binding/test.js b/test/addons/openssl-binding/test.js index a146ffe5c68..452f59f752f 100644 --- a/test/addons/openssl-binding/test.js +++ b/test/addons/openssl-binding/test.js @@ -1,6 +1,10 @@ 'use strict'; const common = require('../../common'); +if (!common.hasCrypto) { + common.skip('missing crypto'); + process.exit(0); +} const assert = require('assert'); const binding = require(`./build/${common.buildType}/binding`); const bytes = new Uint8Array(1024); diff --git a/test/common.js b/test/common.js index 6c7ea387e38..9f73e2e8820 100644 --- a/test/common.js +++ b/test/common.js @@ -638,3 +638,10 @@ exports.expectsError = function expectsError({code, type, message}) { return true; }; }; + +exports.skipIfInspectorDisabled = function skipIfInspectorDisabled() { + if (!exports.hasCrypto) { + exports.skip('missing ssl support so inspector is disabled'); + process.exit(0); + } +}; diff --git a/test/fixtures/tls-connect.js b/test/fixtures/tls-connect.js index 72f83736bf3..a434a0316d6 100644 --- a/test/fixtures/tls-connect.js +++ b/test/fixtures/tls-connect.js @@ -6,19 +6,15 @@ const common = require('../common'); const fs = require('fs'); const join = require('path').join; +// Check if Node was compiled --without-ssl and if so exit early +// as the require of tls will otherwise throw an Error. +if (!common.hasCrypto) { + common.skip('missing crypto'); + process.exit(0); +} const tls = require('tls'); const util = require('util'); -module.exports = exports = checkCrypto; - -function checkCrypto() { - if (!common.hasCrypto) { - common.skip('missing crypto'); - process.exit(0); - } - return exports; -} - exports.assert = require('assert'); exports.debug = util.debuglog('test'); exports.tls = tls; diff --git a/test/inspector/test-inspector.js b/test/inspector/test-inspector.js index a1c69cb6fbb..5cad934e7a5 100644 --- a/test/inspector/test-inspector.js +++ b/test/inspector/test-inspector.js @@ -1,5 +1,6 @@ 'use strict'; -require('../common'); +const common = require('../common'); +common.skipIfInspectorDisabled(); const assert = require('assert'); const helper = require('./inspector-helper.js'); diff --git a/test/inspector/test-not-blocked-on-idle.js b/test/inspector/test-not-blocked-on-idle.js index 6d32888b44b..a33e530a548 100644 --- a/test/inspector/test-not-blocked-on-idle.js +++ b/test/inspector/test-not-blocked-on-idle.js @@ -1,5 +1,6 @@ 'use strict'; -require('../common'); +const common = require('../common'); +common.skipIfInspectorDisabled(); const helper = require('./inspector-helper.js'); function shouldShutDown(session) { diff --git a/test/parallel/test-cluster-inspector-debug-port.js b/test/parallel/test-cluster-inspector-debug-port.js index f2f8db9b5d5..f0e0f58a865 100644 --- a/test/parallel/test-cluster-inspector-debug-port.js +++ b/test/parallel/test-cluster-inspector-debug-port.js @@ -1,6 +1,7 @@ 'use strict'; // Flags: --inspect={PORT} const common = require('../common'); +common.skipIfInspectorDisabled(); const assert = require('assert'); const cluster = require('cluster'); const debuggerPort = common.PORT; diff --git a/test/parallel/test-tls-addca.js b/test/parallel/test-tls-addca.js index 7a6f9a77516..f3f5e5b8dea 100644 --- a/test/parallel/test-tls-addca.js +++ b/test/parallel/test-tls-addca.js @@ -8,7 +8,7 @@ const common = require('../common'); const join = require('path').join; const { assert, connect, keys, tls -} = require(join(common.fixturesDir, 'tls-connect'))(); +} = require(join(common.fixturesDir, 'tls-connect')); const contextWithoutCert = tls.createSecureContext({}); const contextWithCert = tls.createSecureContext({}); diff --git a/test/parallel/test-tls-ca-concat.js b/test/parallel/test-tls-ca-concat.js index 65c837bed9d..0c1908049be 100644 --- a/test/parallel/test-tls-ca-concat.js +++ b/test/parallel/test-tls-ca-concat.js @@ -7,7 +7,7 @@ const common = require('../common'); const join = require('path').join; const { assert, connect, keys -} = require(join(common.fixturesDir, 'tls-connect'))(); +} = require(join(common.fixturesDir, 'tls-connect')); connect({ client: { diff --git a/test/parallel/test-tls-cert-chains-concat.js b/test/parallel/test-tls-cert-chains-concat.js index d53edef8984..a90ed67997e 100644 --- a/test/parallel/test-tls-cert-chains-concat.js +++ b/test/parallel/test-tls-cert-chains-concat.js @@ -7,7 +7,7 @@ const common = require('../common'); const join = require('path').join; const { assert, connect, debug, keys -} = require(join(common.fixturesDir, 'tls-connect'))(); +} = require(join(common.fixturesDir, 'tls-connect')); // agent6-cert.pem includes cert for agent6 and ca3 connect({ diff --git a/test/parallel/test-tls-cert-chains-in-ca.js b/test/parallel/test-tls-cert-chains-in-ca.js index 3b4e78919fb..03fae36cb74 100644 --- a/test/parallel/test-tls-cert-chains-in-ca.js +++ b/test/parallel/test-tls-cert-chains-in-ca.js @@ -7,7 +7,7 @@ const common = require('../common'); const join = require('path').join; const { assert, connect, debug, keys -} = require(join(common.fixturesDir, 'tls-connect'))(); +} = require(join(common.fixturesDir, 'tls-connect')); // agent6-cert.pem includes cert for agent6 and ca3, split it apart and diff --git a/test/parallel/test-tls-connect-secure-context.js b/test/parallel/test-tls-connect-secure-context.js index d1552a62169..ef063c2ed3a 100644 --- a/test/parallel/test-tls-connect-secure-context.js +++ b/test/parallel/test-tls-connect-secure-context.js @@ -6,7 +6,7 @@ const common = require('../common'); const join = require('path').join; const { assert, connect, keys, tls -} = require(join(common.fixturesDir, 'tls-connect'))(); +} = require(join(common.fixturesDir, 'tls-connect')); connect({ client: { diff --git a/test/parallel/test-tls-peer-certificate.js b/test/parallel/test-tls-peer-certificate.js index eb5be6dcb22..8c56e72af14 100644 --- a/test/parallel/test-tls-peer-certificate.js +++ b/test/parallel/test-tls-peer-certificate.js @@ -6,7 +6,7 @@ const common = require('../common'); const join = require('path').join; const { assert, connect, debug, keys -} = require(join(common.fixturesDir, 'tls-connect'))(); +} = require(join(common.fixturesDir, 'tls-connect')); connect({ client: {rejectUnauthorized: false}, diff --git a/test/parallel/test-tls-socket-default-options.js b/test/parallel/test-tls-socket-default-options.js index 24b7a5d34ec..edf16a6bffc 100644 --- a/test/parallel/test-tls-socket-default-options.js +++ b/test/parallel/test-tls-socket-default-options.js @@ -9,11 +9,6 @@ const { connect, keys, tls } = require(join(common.fixturesDir, 'tls-connect')); -if (!common.hasCrypto) { - common.skip('missing crypto'); - return; -} - test(undefined, (err) => { assert.strictEqual(err.message, 'unable to verify the first certificate'); }); diff --git a/test/sequential/test-debugger-debug-brk.js b/test/sequential/test-debugger-debug-brk.js index f04af4544f8..f5a69b91d6b 100644 --- a/test/sequential/test-debugger-debug-brk.js +++ b/test/sequential/test-debugger-debug-brk.js @@ -1,5 +1,6 @@ 'use strict'; const common = require('../common'); +common.skipIfInspectorDisabled(); const assert = require('assert'); const spawn = require('child_process').spawn; diff --git a/test/testpy/__init__.py b/test/testpy/__init__.py index 367346f6e15..d7ec88992e2 100644 --- a/test/testpy/__init__.py +++ b/test/testpy/__init__.py @@ -29,6 +29,7 @@ import test import os from os.path import join, dirname, exists import re +import ast FLAGS_PATTERN = re.compile(r"//\s+Flags:(.*)") @@ -64,7 +65,18 @@ class SimpleTestCase(test.TestCase): # PORT should match the definition in test/common.js. env = { 'PORT': int(os.getenv('NODE_COMMON_PORT', '12346')) } env['PORT'] += self.thread_id * 100 - result += flags_match.group(1).strip().format(**env).split() + flag = flags_match.group(1).strip().format(**env).split() + # The following block reads config.gypi to extract the v8_enable_inspector + # value. This is done to check if the inspector is disabled in which case + # the '--inspect' flag cannot be passed to the node process as it will + # cause node to exit and report the test as failed. The use case + # is currently when Node is configured --without-ssl and the tests should + # still be runnable but skip any tests that require ssl (which includes the + # inspector related tests). + if flag[0].startswith('--inspect') and self.context.v8_enable_inspector == 0: + print('Skipping as inspector is disabled') + else: + result += flag files_match = FILES_PATTERN.search(source); additional_files = [] if files_match: diff --git a/tools/test.py b/tools/test.py index d6715937b60..deeb7aeffe2 100755 --- a/tools/test.py +++ b/tools/test.py @@ -43,6 +43,7 @@ import utils import multiprocessing import errno import copy +import ast from os.path import join, dirname, abspath, basename, isdir, exists from datetime import datetime @@ -867,7 +868,8 @@ class Context(object): def __init__(self, workspace, buildspace, verbose, vm, args, expect_fail, timeout, processor, suppress_dialogs, - store_unexpected_output, repeat, abort_on_timeout): + store_unexpected_output, repeat, abort_on_timeout, + v8_enable_inspector): self.workspace = workspace self.buildspace = buildspace self.verbose = verbose @@ -880,6 +882,7 @@ class Context(object): self.store_unexpected_output = store_unexpected_output self.repeat = repeat self.abort_on_timeout = abort_on_timeout + self.v8_enable_inspector = v8_enable_inspector def GetVm(self, arch, mode): if arch == 'none': @@ -912,6 +915,19 @@ def RunTestCases(cases_to_run, progress, tasks, flaky_tests_mode): progress = PROGRESS_INDICATORS[progress](cases_to_run, flaky_tests_mode) return progress.Run(tasks) +def GetV8InspectorEnabledFlag(): + # The following block reads config.gypi to extract the v8_enable_inspector + # value. This is done to check if the inspector is disabled in which case + # the '--inspect' flag cannot be passed to the node process as it will + # cause node to exit and report the test as failed. The use case + # is currently when Node is configured --without-ssl and the tests should + # still be runnable but skip any tests that require ssl (which includes the + # inspector related tests). + with open('config.gypi', 'r') as f: + s = f.read() + config_gypi = ast.literal_eval(s) + return config_gypi['variables']['v8_enable_inspector'] + # ------------------------------------------- # --- T e s t C o n f i g u r a t i o n --- @@ -1587,7 +1603,8 @@ def Main(): options.suppress_dialogs, options.store_unexpected_output, options.repeat, - options.abort_on_timeout) + options.abort_on_timeout, + GetV8InspectorEnabledFlag()) # Get status for tests sections = [ ]