Skip to content

Commit 1e89830

Browse files
committed
test: don't assume openssl s_client supports -ssl3
Scan the child process's stderr for an 'unknown flag' error message and mark the test as skipped if found. Fixes: #3927 PR-URL: #4204 Reviewed-By: Rich Trott <[email protected]>
1 parent da5cdc2 commit 1e89830

File tree

1 file changed

+18
-4
lines changed

1 file changed

+18
-4
lines changed

test/parallel/test-tls-no-sslv3.js

+18-4
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ if (common.opensslCli === false) {
1919
var cert = fs.readFileSync(common.fixturesDir + '/test_cert.pem');
2020
var key = fs.readFileSync(common.fixturesDir + '/test_key.pem');
2121
var server = tls.createServer({ cert: cert, key: key }, common.fail);
22+
var errors = [];
23+
var stderr = '';
2224

2325
server.listen(common.PORT, '127.0.0.1', function() {
2426
var address = this.address().address + ':' + this.address().port;
@@ -34,13 +36,25 @@ server.listen(common.PORT, '127.0.0.1', function() {
3436
if (common.isWindows)
3537
args.push('-no_rand_screen');
3638

37-
var client = spawn(common.opensslCli, args, { stdio: 'inherit' });
39+
var client = spawn(common.opensslCli, args, { stdio: 'pipe' });
40+
client.stdout.pipe(process.stdout);
41+
client.stderr.pipe(process.stderr);
42+
client.stderr.setEncoding('utf8');
43+
client.stderr.on('data', data => stderr += data);
44+
3845
client.once('exit', common.mustCall(function(exitCode) {
3946
assert.equal(exitCode, 1);
4047
server.close();
4148
}));
4249
});
4350

44-
server.once('clientError', common.mustCall(function(err, conn) {
45-
assert(/:wrong version number/.test(err.message));
46-
}));
51+
server.on('clientError', err => errors.push(err));
52+
53+
process.on('exit', function() {
54+
if (/unknown option -ssl3/.test(stderr)) {
55+
console.log('1..0 # Skipped: `openssl s_client -ssl3` not supported.');
56+
} else {
57+
assert.equal(errors.length, 1);
58+
assert(/:wrong version number/.test(errors[0].message));
59+
}
60+
});

0 commit comments

Comments
 (0)