Navigation Menu

Skip to content

Commit

Permalink
test: make tests pass when configured without-ssl
Browse files Browse the repository at this point in the history
Currently when node is build --without-ssl and the test are run,
there are a number of failing test due to tests expecting crypto
support to be available. This commit fixes fixes the failure and
instead skips the tests that expect crypto to be available.

PR-URL: #11631
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
  • Loading branch information
danbev committed Mar 4, 2017
1 parent 9352528 commit 1402fef
Show file tree
Hide file tree
Showing 17 changed files with 67 additions and 28 deletions.
8 changes: 6 additions & 2 deletions test/addons/openssl-binding/binding.gyp
Expand Up @@ -2,8 +2,12 @@
'targets': [ 'targets': [
{ {
'target_name': 'binding', 'target_name': 'binding',
'sources': ['binding.cc'], 'conditions': [
'include_dirs': ['../../../deps/openssl/openssl/include'], ['node_use_openssl=="true"', {
'sources': ['binding.cc'],
'include_dirs': ['../../../deps/openssl/openssl/include'],
}]
]
}, },
] ]
} }
4 changes: 4 additions & 0 deletions test/addons/openssl-binding/test.js
@@ -1,6 +1,10 @@
'use strict'; 'use strict';


const common = require('../../common'); const common = require('../../common');
if (!common.hasCrypto) {
common.skip('missing crypto');
process.exit(0);
}
const assert = require('assert'); const assert = require('assert');
const binding = require(`./build/${common.buildType}/binding`); const binding = require(`./build/${common.buildType}/binding`);
const bytes = new Uint8Array(1024); const bytes = new Uint8Array(1024);
Expand Down
7 changes: 7 additions & 0 deletions test/common.js
Expand Up @@ -638,3 +638,10 @@ exports.expectsError = function expectsError({code, type, message}) {
return true; return true;
}; };
}; };

exports.skipIfInspectorDisabled = function skipIfInspectorDisabled() {
if (!exports.hasCrypto) {
exports.skip('missing ssl support so inspector is disabled');
process.exit(0);
}
};
16 changes: 6 additions & 10 deletions test/fixtures/tls-connect.js
Expand Up @@ -6,19 +6,15 @@
const common = require('../common'); const common = require('../common');
const fs = require('fs'); const fs = require('fs');
const join = require('path').join; 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 tls = require('tls');
const util = require('util'); 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.assert = require('assert');
exports.debug = util.debuglog('test'); exports.debug = util.debuglog('test');
exports.tls = tls; exports.tls = tls;
Expand Down
3 changes: 2 additions & 1 deletion test/inspector/test-inspector.js
@@ -1,5 +1,6 @@
'use strict'; 'use strict';
require('../common'); const common = require('../common');
common.skipIfInspectorDisabled();
const assert = require('assert'); const assert = require('assert');
const helper = require('./inspector-helper.js'); const helper = require('./inspector-helper.js');


Expand Down
3 changes: 2 additions & 1 deletion test/inspector/test-not-blocked-on-idle.js
@@ -1,5 +1,6 @@
'use strict'; 'use strict';
require('../common'); const common = require('../common');
common.skipIfInspectorDisabled();
const helper = require('./inspector-helper.js'); const helper = require('./inspector-helper.js');


function shouldShutDown(session) { function shouldShutDown(session) {
Expand Down
1 change: 1 addition & 0 deletions test/parallel/test-cluster-inspector-debug-port.js
@@ -1,6 +1,7 @@
'use strict'; 'use strict';
// Flags: --inspect={PORT} // Flags: --inspect={PORT}
const common = require('../common'); const common = require('../common');
common.skipIfInspectorDisabled();
const assert = require('assert'); const assert = require('assert');
const cluster = require('cluster'); const cluster = require('cluster');
const debuggerPort = common.PORT; const debuggerPort = common.PORT;
Expand Down
2 changes: 1 addition & 1 deletion test/parallel/test-tls-addca.js
Expand Up @@ -8,7 +8,7 @@ const common = require('../common');
const join = require('path').join; const join = require('path').join;
const { const {
assert, connect, keys, tls assert, connect, keys, tls
} = require(join(common.fixturesDir, 'tls-connect'))(); } = require(join(common.fixturesDir, 'tls-connect'));


const contextWithoutCert = tls.createSecureContext({}); const contextWithoutCert = tls.createSecureContext({});
const contextWithCert = tls.createSecureContext({}); const contextWithCert = tls.createSecureContext({});
Expand Down
2 changes: 1 addition & 1 deletion test/parallel/test-tls-ca-concat.js
Expand Up @@ -7,7 +7,7 @@ const common = require('../common');
const join = require('path').join; const join = require('path').join;
const { const {
assert, connect, keys assert, connect, keys
} = require(join(common.fixturesDir, 'tls-connect'))(); } = require(join(common.fixturesDir, 'tls-connect'));


connect({ connect({
client: { client: {
Expand Down
2 changes: 1 addition & 1 deletion test/parallel/test-tls-cert-chains-concat.js
Expand Up @@ -7,7 +7,7 @@ const common = require('../common');
const join = require('path').join; const join = require('path').join;
const { const {
assert, connect, debug, keys 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 // agent6-cert.pem includes cert for agent6 and ca3
connect({ connect({
Expand Down
2 changes: 1 addition & 1 deletion test/parallel/test-tls-cert-chains-in-ca.js
Expand Up @@ -7,7 +7,7 @@ const common = require('../common');
const join = require('path').join; const join = require('path').join;
const { const {
assert, connect, debug, keys 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 // agent6-cert.pem includes cert for agent6 and ca3, split it apart and
Expand Down
2 changes: 1 addition & 1 deletion test/parallel/test-tls-connect-secure-context.js
Expand Up @@ -6,7 +6,7 @@ const common = require('../common');
const join = require('path').join; const join = require('path').join;
const { const {
assert, connect, keys, tls assert, connect, keys, tls
} = require(join(common.fixturesDir, 'tls-connect'))(); } = require(join(common.fixturesDir, 'tls-connect'));


connect({ connect({
client: { client: {
Expand Down
2 changes: 1 addition & 1 deletion test/parallel/test-tls-peer-certificate.js
Expand Up @@ -6,7 +6,7 @@ const common = require('../common');
const join = require('path').join; const join = require('path').join;
const { const {
assert, connect, debug, keys assert, connect, debug, keys
} = require(join(common.fixturesDir, 'tls-connect'))(); } = require(join(common.fixturesDir, 'tls-connect'));


connect({ connect({
client: {rejectUnauthorized: false}, client: {rejectUnauthorized: false},
Expand Down
5 changes: 0 additions & 5 deletions test/parallel/test-tls-socket-default-options.js
Expand Up @@ -9,11 +9,6 @@ const {
connect, keys, tls connect, keys, tls
} = require(join(common.fixturesDir, 'tls-connect')); } = require(join(common.fixturesDir, 'tls-connect'));


if (!common.hasCrypto) {
common.skip('missing crypto');
return;
}

test(undefined, (err) => { test(undefined, (err) => {
assert.strictEqual(err.message, 'unable to verify the first certificate'); assert.strictEqual(err.message, 'unable to verify the first certificate');
}); });
Expand Down
1 change: 1 addition & 0 deletions test/sequential/test-debugger-debug-brk.js
@@ -1,5 +1,6 @@
'use strict'; 'use strict';
const common = require('../common'); const common = require('../common');
common.skipIfInspectorDisabled();
const assert = require('assert'); const assert = require('assert');
const spawn = require('child_process').spawn; const spawn = require('child_process').spawn;


Expand Down
14 changes: 13 additions & 1 deletion test/testpy/__init__.py
Expand Up @@ -29,6 +29,7 @@
import os import os
from os.path import join, dirname, exists from os.path import join, dirname, exists
import re import re
import ast




FLAGS_PATTERN = re.compile(r"//\s+Flags:(.*)") FLAGS_PATTERN = re.compile(r"//\s+Flags:(.*)")
Expand Down Expand Up @@ -64,7 +65,18 @@ def GetCommand(self):
# PORT should match the definition in test/common.js. # PORT should match the definition in test/common.js.
env = { 'PORT': int(os.getenv('NODE_COMMON_PORT', '12346')) } env = { 'PORT': int(os.getenv('NODE_COMMON_PORT', '12346')) }
env['PORT'] += self.thread_id * 100 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); files_match = FILES_PATTERN.search(source);
additional_files = [] additional_files = []
if files_match: if files_match:
Expand Down
21 changes: 19 additions & 2 deletions tools/test.py
Expand Up @@ -43,6 +43,7 @@
import multiprocessing import multiprocessing
import errno import errno
import copy import copy
import ast


from os.path import join, dirname, abspath, basename, isdir, exists from os.path import join, dirname, abspath, basename, isdir, exists
from datetime import datetime from datetime import datetime
Expand Down Expand Up @@ -867,7 +868,8 @@ class Context(object):


def __init__(self, workspace, buildspace, verbose, vm, args, expect_fail, def __init__(self, workspace, buildspace, verbose, vm, args, expect_fail,
timeout, processor, suppress_dialogs, 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.workspace = workspace
self.buildspace = buildspace self.buildspace = buildspace
self.verbose = verbose self.verbose = verbose
Expand All @@ -880,6 +882,7 @@ def __init__(self, workspace, buildspace, verbose, vm, args, expect_fail,
self.store_unexpected_output = store_unexpected_output self.store_unexpected_output = store_unexpected_output
self.repeat = repeat self.repeat = repeat
self.abort_on_timeout = abort_on_timeout self.abort_on_timeout = abort_on_timeout
self.v8_enable_inspector = v8_enable_inspector


def GetVm(self, arch, mode): def GetVm(self, arch, mode):
if arch == 'none': if arch == 'none':
Expand Down Expand Up @@ -912,6 +915,19 @@ def RunTestCases(cases_to_run, progress, tasks, flaky_tests_mode):
progress = PROGRESS_INDICATORS[progress](cases_to_run, flaky_tests_mode) progress = PROGRESS_INDICATORS[progress](cases_to_run, flaky_tests_mode)
return progress.Run(tasks) 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 --- # --- T e s t C o n f i g u r a t i o n ---
Expand Down Expand Up @@ -1587,7 +1603,8 @@ def Main():
options.suppress_dialogs, options.suppress_dialogs,
options.store_unexpected_output, options.store_unexpected_output,
options.repeat, options.repeat,
options.abort_on_timeout) options.abort_on_timeout,
GetV8InspectorEnabledFlag())


# Get status for tests # Get status for tests
sections = [ ] sections = [ ]
Expand Down

0 comments on commit 1402fef

Please sign in to comment.