Hello community, here is the log from the commit of package nodejs8 for openSUSE:Factory checked in at 2018-01-06 18:52:14 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/nodejs8 (Old) and /work/SRC/openSUSE:Factory/.nodejs8.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "nodejs8" Sat Jan 6 18:52:14 2018 rev:11 rq:561900 version:8.9.3 Changes: -------- --- /work/SRC/openSUSE:Factory/nodejs8/nodejs8.changes 2017-12-18 08:59:27.162958825 +0100 +++ /work/SRC/openSUSE:Factory/.nodejs8.new/nodejs8.changes 2018-01-06 18:52:21.766334674 +0100 @@ -1,0 +2,13 @@ +Fri Dec 22 14:01:07 UTC 2017 - [email protected] + +- Enable CI tests in %check target + + fix_ci_tests.patch: + - DNS queries in buildroots are failing with EAI_AGAIN + - disable test-module-loading-globalpaths.js - we have + hardcoded global paths + + versioned.patch: call versioned node binary for tests + + openssl11.patch: fix OpenSSL 1.1 backport so all SSL tests pass + instead of crashing in some situations. +- node-gyp-addon-gypi.patch: fix typo allowing unit tests to compile + +------------------------------------------------------------------- @@ -14 +27 @@ - * deps/openssl: updated to 1.0.2n + * deps/openssl: updated to 1.0.2n (bsc#1072322) New: ---- fix_ci_tests.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ nodejs8.spec ++++++ --- /var/tmp/diff_new_pack.rN8rXW/_old 2018-01-06 18:52:23.458255620 +0100 +++ /var/tmp/diff_new_pack.rN8rXW/_new 2018-01-06 18:52:23.462255433 +0100 @@ -93,6 +93,7 @@ ## UPSTREAM PATCHES HERE, if any Patch2: openssl11.patch +Patch3: fix_ci_tests.patch ## Our patches # PATCH-FIX-OPENSUSE -- set correct path for dtrace if it is built @@ -256,6 +257,9 @@ echo "`grep node-v%{version}.tar.xz %{S:1} | head -n1 | cut -c1-64` %{S:0}" | sha256sum -c %setup -q -n node-v%{version} %patch2 -p1 +%patch3 -p1 +%if ! %{with intree_openssl} +%endif %patch101 -p1 %patch102 -p1 # Add check_output to configure script (not part of Python 2.6 in SLE11). @@ -386,9 +390,19 @@ ln -s %{_sysconfdir}/alternatives/npx.1%{ext_man} %{buildroot}%{_mandir}/man1/npx.1%{ext_man} %endif -# Check that Node.js isn't completely broken. %check -%{buildroot}%{_bindir}/node%{node_version_number} -e 'require("assert").strictEqual(process.versions.node, "%{version}");' +ln addon-rpm.gypi deps/npm/node_modules/node-gyp/addon-rpm.gypi +# Tarball doesn't have eslint package distributed, so disable some tests +find test -name \*-eslint-\* -print -delete +# No documentation is generated, don't bother checking it +rm -f test/doctool/test-make-doc.js +# DNS lookup doesn't work in build root +rm -f test/parallel/test-dns-cancel-reverse-lookup.js \ + test/parallel/test-dns-resolveany.js +# multicast test fail since no socket? +rm -f test/parallel/test-dgram-membership.js +# Run CI tests - 'advisory for now' +make test-ci || echo "****** UNIT TESTS NOT ALL HAPPY *****" %files %defattr(-, root, root) ++++++ fix_ci_tests.patch ++++++ Author: Adam Majer <[email protected]> Date: Dec 20 09:18:49 UTC 2017 Summary: Fix CI unit tests framework for OBS building Index: node-v8.9.3/test/parallel/test-module-loading-globalpaths.js =================================================================== --- node-v8.9.3.orig/test/parallel/test-module-loading-globalpaths.js +++ node-v8.9.3/test/parallel/test-module-loading-globalpaths.js @@ -7,6 +7,9 @@ const fs = require('fs'); const child_process = require('child_process'); const pkgName = 'foo'; +common.skip('hardcoded global paths'); +return; + if (process.argv[2] === 'child') { console.log(require(pkgName).string); } else { Index: node-v8.9.3/Makefile =================================================================== --- node-v8.9.3.orig/Makefile +++ node-v8.9.3/Makefile @@ -409,7 +409,7 @@ test-ci-js: | clear-stalled fi test-ci: LOGLEVEL := info -test-ci: | clear-stalled build-addons build-addons-napi doc-only +test-ci: | clear-stalled build-addons build-addons-napi out/Release/cctest --gtest_output=tap:cctest.tap $(PYTHON) tools/test.py $(PARALLEL_ARGS) -p tap --logfile test.tap \ --mode=release --flaky-tests=$(FLAKY_TESTS) \ Index: node-v8.9.3/test/doctool/test-make-doc.js =================================================================== --- node-v8.9.3.orig/test/doctool/test-make-doc.js +++ node-v8.9.3/test/doctool/test-make-doc.js @@ -11,7 +11,7 @@ const assert = require('assert'); const fs = require('fs'); const path = require('path'); -const apiPath = path.resolve(common.projectDir, 'out', 'doc', 'api'); +const apiPath = path.resolve(common.projectDir, 'doc', 'api'); const docs = fs.readdirSync(apiPath); assert.ok(docs.includes('_toc.html')); ++++++ node-gyp-addon-gypi.patch ++++++ --- /var/tmp/diff_new_pack.rN8rXW/_old 2018-01-06 18:52:23.518252816 +0100 +++ /var/tmp/diff_new_pack.rN8rXW/_new 2018-01-06 18:52:23.518252816 +0100 @@ -71,7 +71,7 @@ // this logic ported from the old `gyp_addon` python file var gyp_script = path.resolve(__dirname, '..', 'gyp', 'gyp_main.py') - var addon_gypi = path.resolve(__dirname, '..', 'addon.gypi') -+ var addon_gypi_file = gyp.opts.target || gyp.opts.nodeDir ? 'addon.gypi' : 'addon-rpm.gypi' ++ var addon_gypi_file = gyp.opts.target || gyp.opts.nodedir ? 'addon.gypi' : 'addon-rpm.gypi' + var addon_gypi = path.resolve(__dirname, '..', addon_gypi_file) var common_gypi = path.resolve(nodeDir, 'include/node/common.gypi') fs.stat(common_gypi, function (err, stat) { ++++++ openssl11.patch ++++++ --- /var/tmp/diff_new_pack.rN8rXW/_old 2018-01-06 18:52:23.546251508 +0100 +++ /var/tmp/diff_new_pack.rN8rXW/_new 2018-01-06 18:52:23.550251321 +0100 @@ -3,6 +3,7 @@ Summary: optional OpenSSL 1.1 support This is a backport of changes +https://github.com/nodejs/node/pull/15757 https://github.com/nodejs/node/pull/16130 @@ -448,7 +449,7 @@ + int enc) { + SecureContext* sc = static_cast<SecureContext*>( + SSL_CTX_get_app_data(SSL_get_SSL_CTX(ssl))); - ++ + if (enc) { + memcpy(name, sc->ticket_key_name_, sizeof(sc->ticket_key_name_)); + if (RAND_bytes(iv, 16) <= 0 || @@ -465,7 +466,7 @@ + // The ticket key name does not match. Discard the ticket. + return 0; + } -+ + + if (EVP_DecryptInit_ex(ectx, EVP_aes_128_cbc(), nullptr, sc->ticket_key_aes_, + iv) <= 0 || + HMAC_Init_ex(hctx, sc->ticket_key_hmac_, sizeof(sc->ticket_key_hmac_), @@ -982,7 +983,7 @@ void SignBase::CheckThrow(SignBase::Error error) { HandleScope scope(env()->isolate()); -@@ -4056,21 +4274,6 @@ void Sign::New(const FunctionCallbackInf +@@ -4056,66 +4274,23 @@ void Sign::New(const FunctionCallbackInf } @@ -1004,8 +1005,13 @@ void Sign::SignInit(const FunctionCallbackInfo<Value>& args) { Sign* sign; ASSIGN_OR_RETURN_UNWRAP(&sign, args.Holder()); -@@ -4083,16 +4286,7 @@ void Sign::SignInit(const FunctionCallba - THROW_AND_RETURN_IF_NOT_STRING(args[0], "Sign type"); +- Environment* env = sign->env(); +- +- if (args.Length() == 0) { +- return env->ThrowError("Sign type argument is mandatory"); +- } +- +- THROW_AND_RETURN_IF_NOT_STRING(args[0], "Sign type"); const node::Utf8Value sign_type(args.GetIsolate(), args[0]); - sign->CheckThrow(sign->SignInit(*sign_type)); @@ -1022,9 +1028,15 @@ } -@@ -4106,16 +4300,9 @@ void Sign::SignUpdate(const FunctionCall + void Sign::SignUpdate(const FunctionCallbackInfo<Value>& args) { +- Environment* env = Environment::GetCurrent(args); +- + Sign* sign; + ASSIGN_OR_RETURN_UNWRAP(&sign, args.Holder()); - // Only copy the data if we have to, because it's a string +- THROW_AND_RETURN_IF_NOT_STRING_OR_BUFFER(args[0], "Data"); +- +- // Only copy the data if we have to, because it's a string Error err; - if (args[0]->IsString()) { - StringBytes::InlineDecoder decoder; @@ -1042,7 +1054,7 @@ sign->CheckThrow(err); } -@@ -4158,7 +4345,7 @@ SignBase::Error Sign::SignFinal(const ch +@@ -4158,7 +4333,7 @@ SignBase::Error Sign::SignFinal(const ch unsigned int* sig_len, int padding, int salt_len) { @@ -1051,7 +1063,7 @@ return kSignNotInitialised; BIO* bp = nullptr; -@@ -4203,18 +4390,17 @@ SignBase::Error Sign::SignFinal(const ch +@@ -4203,18 +4378,17 @@ SignBase::Error Sign::SignFinal(const ch } #endif // NODE_FIPS_MODE @@ -1073,7 +1085,15 @@ if (fatal) return kSignPrivateKey; -@@ -4289,21 +4475,6 @@ void Verify::New(const FunctionCallbackI +@@ -4233,7 +4407,6 @@ void Sign::SignFinal(const FunctionCallb + + node::Utf8Value passphrase(env->isolate(), args[1]); + +- THROW_AND_RETURN_IF_NOT_BUFFER(args[0], "Data"); + size_t buf_len = Buffer::Length(args[0]); + char* buf = Buffer::Data(args[0]); + +@@ -4289,68 +4462,23 @@ void Verify::New(const FunctionCallbackI } @@ -1095,8 +1115,13 @@ void Verify::VerifyInit(const FunctionCallbackInfo<Value>& args) { Verify* verify; ASSIGN_OR_RETURN_UNWRAP(&verify, args.Holder()); -@@ -4316,18 +4487,7 @@ void Verify::VerifyInit(const FunctionCa - THROW_AND_RETURN_IF_NOT_STRING(args[0], "Verify type"); +- Environment* env = verify->env(); +- +- if (args.Length() == 0) { +- return env->ThrowError("Verify type argument is mandatory"); +- } +- +- THROW_AND_RETURN_IF_NOT_STRING(args[0], "Verify type"); const node::Utf8Value verify_type(args.GetIsolate(), args[0]); - verify->CheckThrow(verify->VerifyInit(*verify_type)); @@ -1115,9 +1140,15 @@ } -@@ -4341,16 +4501,9 @@ void Verify::VerifyUpdate(const Function + void Verify::VerifyUpdate(const FunctionCallbackInfo<Value>& args) { +- Environment* env = Environment::GetCurrent(args); +- + Verify* verify; + ASSIGN_OR_RETURN_UNWRAP(&verify, args.Holder()); - // Only copy the data if we have to, because it's a string +- THROW_AND_RETURN_IF_NOT_STRING_OR_BUFFER(args[0], "Data"); +- +- // Only copy the data if we have to, because it's a string Error err; - if (args[0]->IsString()) { - StringBytes::InlineDecoder decoder; @@ -1135,7 +1166,7 @@ verify->CheckThrow(err); } -@@ -4363,7 +4516,7 @@ SignBase::Error Verify::VerifyFinal(cons +@@ -4363,7 +4491,7 @@ SignBase::Error Verify::VerifyFinal(cons int padding, int saltlen, bool* verify_result) { @@ -1144,7 +1175,7 @@ return kSignNotInitialised; EVP_PKEY* pkey = nullptr; -@@ -4408,7 +4561,7 @@ SignBase::Error Verify::VerifyFinal(cons +@@ -4408,7 +4536,7 @@ SignBase::Error Verify::VerifyFinal(cons goto exit; } @@ -1153,7 +1184,7 @@ goto exit; } -@@ -4421,7 +4574,7 @@ SignBase::Error Verify::VerifyFinal(cons +@@ -4421,7 +4549,7 @@ SignBase::Error Verify::VerifyFinal(cons goto err; if (!ApplyRSAOptions(pkey, pkctx, padding, saltlen)) goto err; @@ -1162,7 +1193,7 @@ goto err; r = EVP_PKEY_verify(pkctx, reinterpret_cast<const unsigned char*>(sig), -@@ -4440,8 +4593,8 @@ SignBase::Error Verify::VerifyFinal(cons +@@ -4440,8 +4568,8 @@ SignBase::Error Verify::VerifyFinal(cons if (x509 != nullptr) X509_free(x509); @@ -1173,7 +1204,20 @@ if (fatal) return kSignPublicKey; -@@ -4693,10 +4846,15 @@ bool DiffieHellman::Init(int primeLength +@@ -4459,12 +4587,9 @@ void Verify::VerifyFinal(const FunctionC + Verify* verify; + ASSIGN_OR_RETURN_UNWRAP(&verify, args.Holder()); + +- THROW_AND_RETURN_IF_NOT_BUFFER(args[0], "Key"); + char* kbuf = Buffer::Data(args[0]); + ssize_t klen = Buffer::Length(args[0]); + +- THROW_AND_RETURN_IF_NOT_STRING_OR_BUFFER(args[1], "Hash"); +- + char* hbuf = Buffer::Data(args[1]); + ssize_t hlen = Buffer::Length(args[1]); + +@@ -4693,10 +4818,15 @@ bool DiffieHellman::Init(int primeLength bool DiffieHellman::Init(const char* p, int p_len, int g) { dh = DH_new(); @@ -1192,7 +1236,7 @@ bool result = VerifyContext(); if (!result) return false; -@@ -4707,8 +4865,13 @@ bool DiffieHellman::Init(const char* p, +@@ -4707,8 +4837,13 @@ bool DiffieHellman::Init(const char* p, bool DiffieHellman::Init(const char* p, int p_len, const char* g, int g_len) { dh = DH_new(); @@ -1208,7 +1252,7 @@ bool result = VerifyContext(); if (!result) return false; -@@ -4796,22 +4959,25 @@ void DiffieHellman::GenerateKeys(const F +@@ -4796,22 +4931,25 @@ void DiffieHellman::GenerateKeys(const F return ThrowCryptoError(env, ERR_get_error(), "Key generation failed"); } @@ -1238,7 +1282,7 @@ if (num == nullptr) return env->ThrowError(err_if_null); size_t size = BN_num_bytes(num); -@@ -4821,24 +4987,38 @@ void DiffieHellman::GetField(const Funct +@@ -4821,24 +4959,38 @@ void DiffieHellman::GetField(const Funct } void DiffieHellman::GetPrime(const FunctionCallbackInfo<Value>& args) { @@ -1283,7 +1327,7 @@ } -@@ -4916,14 +5096,13 @@ void DiffieHellman::ComputeSecret(const +@@ -4916,14 +5068,13 @@ void DiffieHellman::ComputeSecret(const void DiffieHellman::SetKey(const v8::FunctionCallbackInfo<v8::Value>& args, @@ -1299,7 +1343,7 @@ char errmsg[64]; if (args.Length() == 0) { -@@ -4936,19 +5115,29 @@ void DiffieHellman::SetKey(const v8::Fun +@@ -4936,19 +5087,29 @@ void DiffieHellman::SetKey(const v8::Fun return env->ThrowTypeError(errmsg); } @@ -1334,7 +1378,7 @@ } -@@ -5736,7 +5925,7 @@ void RandomBytesBuffer(const FunctionCal +@@ -5736,7 +5897,7 @@ void RandomBytesBuffer(const FunctionCal void GetSSLCiphers(const FunctionCallbackInfo<Value>& args) { Environment* env = Environment::GetCurrent(args); @@ -1343,7 +1387,7 @@ if (ctx == nullptr) { return env->ThrowError("SSL_CTX_new() failed."); } -@@ -6026,9 +6215,11 @@ void InitCryptoOnce() { +@@ -6026,9 +6187,11 @@ void InitCryptoOnce() { SSL_library_init(); OpenSSL_add_all_algorithms(); @@ -1842,7 +1886,36 @@ assert(crypto.getHashes().includes('RSA-SHA1')); assert(!crypto.getHashes().includes('rsa-sha1')); validateList(crypto.getHashes()); -@@ -257,7 +257,7 @@ assert.throws(function() { +@@ -199,28 +199,6 @@ assert.throws(function() { + }); + + assert.throws(function() { +- crypto.createSign('SHA1').update('0', 'hex'); +-}, (err) => { +- // Throws TypeError, so there is no opensslErrorStack property. +- if ((err instanceof Error) && +- /^TypeError: Bad input string$/.test(err) && +- err.opensslErrorStack === undefined) { +- return true; +- } +-}); +- +-assert.throws(function() { +- crypto.createVerify('SHA1').update('0', 'hex'); +-}, (err) => { +- // Throws TypeError, so there is no opensslErrorStack property. +- if ((err instanceof Error) && +- /^TypeError: Bad input string$/.test(err) && +- err.opensslErrorStack === undefined) { +- return true; +- } +-}); +- +-assert.throws(function() { + const priv = [ + '-----BEGIN RSA PRIVATE KEY-----', + 'MIGrAgEAAiEA+3z+1QNF2/unumadiwEr+C5vfhezsb3hp4jAnCNRpPcCAwEAAQIgQNriSQK4', +@@ -257,7 +235,7 @@ assert.throws(function() { // Throws crypto error, so there is an opensslErrorStack property. // The openSSL stack should have content. if ((err instanceof Error) && @@ -2050,7 +2123,7 @@ =================================================================== --- node-v8.9.3.orig/test/parallel/test-tls-econnreset.js +++ node-v8.9.3/test/parallel/test-tls-econnreset.js -@@ -25,72 +25,26 @@ if (!common.hasCrypto) +@@ -25,72 +25,28 @@ if (!common.hasCrypto) common.skip('missing crypto'); const assert = require('assert'); @@ -2096,9 +2169,9 @@ - -const ca = [ cert, cacert ]; - --let clientError = null; + let clientError = null; -let connectError = null; -- + -const server = tls.createServer({ ca: ca, cert: cert, key: key }, () => { - assert.fail('should be unreachable'); -}).on('tlsClientError', function(err, conn) { @@ -2194,3 +2267,227 @@ 'Expecting SSL unknown protocol'); })); +Index: node-v8.9.3/lib/crypto.js +=================================================================== +--- node-v8.9.3.orig/lib/crypto.js ++++ node-v8.9.3/lib/crypto.js +@@ -25,6 +25,7 @@ + 'use strict'; + + const internalUtil = require('internal/util'); ++const errors = require('internal/errors'); + internalUtil.assertCrypto(); + + exports.DEFAULT_ENCODING = 'buffer'; +@@ -39,6 +40,8 @@ const getFipsCrypto = binding.getFipsCry + const setFipsCrypto = binding.setFipsCrypto; + const timingSafeEqual = binding.timingSafeEqual; + ++function getDefaultEncoding() { return 'buffer'; } ++ + const Buffer = require('buffer').Buffer; + const kBufferMaxLength = require('buffer').kMaxLength; + const stream = require('stream'); +@@ -287,6 +290,8 @@ exports.createSign = exports.Sign = Sign + function Sign(algorithm, options) { + if (!(this instanceof Sign)) + return new Sign(algorithm, options); ++ if (typeof algorithm !== 'string') ++ throw new errors.TypeError('ERR_INVALID_ARG_TYPE', 'algorithm', 'string'); + this._handle = new binding.Sign(); + this._handle.init(algorithm); + +@@ -296,11 +301,20 @@ function Sign(algorithm, options) { + util.inherits(Sign, stream.Writable); + + Sign.prototype._write = function _write(chunk, encoding, callback) { +- this._handle.update(chunk, encoding); ++ this.update(chunk, encoding); + callback(); + }; + +-Sign.prototype.update = Hash.prototype.update; ++Sign.prototype.update = function update(data, encoding) { ++ encoding = encoding || getDefaultEncoding(); ++ data = toBuf(data, encoding); ++ if (!isArrayBufferView(data)) { ++ throw new errors.TypeError('ERR_INVALID_ARG_TYPE', 'data', ++ ['string', 'Buffer', 'TypedArray', 'DataView']); ++ } ++ this._handle.update(data); ++ return this; ++}; + + Sign.prototype.sign = function sign(options, encoding) { + if (!options) +@@ -328,8 +342,13 @@ Sign.prototype.sign = function sign(opti + } + } + +- var ret = this._handle.sign(toBuf(key), passphrase, rsaPadding, +- pssSaltLength); ++ key = toBuf(key); ++ if (!isArrayBufferView(key)) { ++ throw new errors.TypeError('ERR_INVALID_ARG_TYPE', 'key', ++ ['string', 'Buffer', 'TypedArray', 'DataView']); ++ } ++ ++ var ret = this._handle.sign(key, passphrase, rsaPadding, pssSaltLength); + + encoding = encoding || exports.DEFAULT_ENCODING; + if (encoding && encoding !== 'buffer') +@@ -343,6 +362,8 @@ exports.createVerify = exports.Verify = + function Verify(algorithm, options) { + if (!(this instanceof Verify)) + return new Verify(algorithm, options); ++ if (typeof algorithm !== 'string') ++ throw new errors.TypeError('ERR_INVALID_ARG_TYPE', 'algorithm', 'string'); + + this._handle = new binding.Verify(); + this._handle.init(algorithm); +@@ -377,9 +398,19 @@ Verify.prototype.verify = function verif + throw new TypeError('saltLength must be an integer'); + } + } ++ key = toBuf(key); ++ if (!isArrayBufferView(key)) { ++ throw new errors.TypeError('ERR_INVALID_ARG_TYPE', 'key', ++ ['string', 'Buffer', 'TypedArray', 'DataView']); ++ } ++ ++ signature = toBuf(signature, sigEncoding); ++ if (!isArrayBufferView(signature)) { ++ throw new errors.TypeError('ERR_INVALID_ARG_TYPE', 'signature', ++ ['string', 'Buffer', 'TypedArray', 'DataView']); ++ } + +- return this._handle.verify(toBuf(key), toBuf(signature, sigEncoding), +- rsaPadding, pssSaltLength); ++ return this._handle.verify(key, signature, rsaPadding, pssSaltLength); + }; + + function rsaPublic(method, defaultPadding) { +Index: node-v8.9.3/test/parallel/test-crypto-sign-verify.js +=================================================================== +--- node-v8.9.3.orig/test/parallel/test-crypto-sign-verify.js ++++ node-v8.9.3/test/parallel/test-crypto-sign-verify.js +@@ -271,3 +271,106 @@ const modSize = 1024; + assert(stdout.includes('Verified OK')); + })); + } ++ ++[1, [], {}, undefined, null, true, Infinity].forEach((i) => { ++ common.expectsError( ++ () => crypto.createSign(), ++ { ++ code: 'ERR_INVALID_ARG_TYPE', ++ type: TypeError, ++ message: 'The "algorithm" argument must be of type string' ++ } ++ ); ++ common.expectsError( ++ () => crypto.createVerify(), ++ { ++ code: 'ERR_INVALID_ARG_TYPE', ++ type: TypeError, ++ message: 'The "algorithm" argument must be of type string' ++ } ++ ); ++}); ++{ ++ const sign = crypto.createSign('SHA1'); ++ const verify = crypto.createVerify('SHA1'); ++ ++ [1, [], {}, undefined, null, true, Infinity].forEach((i) => { ++ common.expectsError( ++ () => sign.update(i), ++ { ++ code: 'ERR_INVALID_ARG_TYPE', ++ type: TypeError, ++ message: 'The "data" argument must be one of type string, Buffer, ' + ++ 'TypedArray, or DataView' ++ } ++ ); ++ common.expectsError( ++ () => verify.update(i), ++ { ++ code: 'ERR_INVALID_ARG_TYPE', ++ type: TypeError, ++ message: 'The "data" argument must be one of type string, Buffer, ' + ++ 'TypedArray, or DataView' ++ } ++ ); ++ common.expectsError( ++ () => sign._write(i, 'utf8', () => {}), ++ { ++ code: 'ERR_INVALID_ARG_TYPE', ++ type: TypeError, ++ message: 'The "data" argument must be one of type string, Buffer, ' + ++ 'TypedArray, or DataView' ++ } ++ ); ++ common.expectsError( ++ () => verify._write(i, 'utf8', () => {}), ++ { ++ code: 'ERR_INVALID_ARG_TYPE', ++ type: TypeError, ++ message: 'The "data" argument must be one of type string, Buffer, ' + ++ 'TypedArray, or DataView' ++ } ++ ); ++ }); ++ ++ [ ++ Uint8Array, Uint16Array, Uint32Array, Float32Array, Float64Array ++ ].forEach((i) => { ++ // These should all just work ++ sign.update(new i()); ++ verify.update(new i()); ++ }); ++ ++ [1, {}, [], Infinity].forEach((i) => { ++ common.expectsError( ++ () => sign.sign(i), ++ { ++ code: 'ERR_INVALID_ARG_TYPE', ++ type: TypeError, ++ message: 'The "key" argument must be one of type string, Buffer, ' + ++ 'TypedArray, or DataView' ++ } ++ ); ++ ++ common.expectsError( ++ () => verify.verify(i), ++ { ++ code: 'ERR_INVALID_ARG_TYPE', ++ type: TypeError, ++ message: 'The "key" argument must be one of type string, Buffer, ' + ++ 'TypedArray, or DataView' ++ } ++ ); ++ ++ common.expectsError( ++ () => verify.verify('test', i), ++ { ++ code: 'ERR_INVALID_ARG_TYPE', ++ type: TypeError, ++ message: 'The "signature" argument must be one of type string, ' + ++ 'Buffer, TypedArray, or DataView' ++ } ++ ); ++ }); ++} ++ +Index: node-v8.9.3/test/parallel/test-tls-env-bad-extra-ca.js +=================================================================== +--- node-v8.9.3.orig/test/parallel/test-tls-env-bad-extra-ca.js ++++ node-v8.9.3/test/parallel/test-tls-env-bad-extra-ca.js +@@ -32,7 +32,7 @@ fork(__filename, opts) + assert.strictEqual(status, 0, 'client did not succeed in connecting'); + })) + .on('close', common.mustCall(function() { +- const re = /Warning: Ignoring extra certs from.*no-such-file-exists.* load failed:.*No such file or directory/; ++ const re = /Warning: Ignoring extra certs from.*no-such-file-exists.* load failed:.*/; + assert(re.test(stderr), stderr); + })) + .stderr.setEncoding('utf8').on('data', function(str) { ++++++ versioned.patch ++++++ --- /var/tmp/diff_new_pack.rN8rXW/_old 2018-01-06 18:52:23.558250947 +0100 +++ /var/tmp/diff_new_pack.rN8rXW/_new 2018-01-06 18:52:23.562250760 +0100 @@ -8,11 +8,11 @@ This is also important for generation of binary modules for multiple versions of NodeJS -Index: node-v8.9.1/Makefile +Index: node-v8.9.3/Makefile =================================================================== ---- node-v8.9.1.orig/Makefile -+++ node-v8.9.1/Makefile -@@ -45,10 +45,10 @@ BUILDTYPE_LOWER := $(shell echo $(BUILDT +--- node-v8.9.3.orig/Makefile ++++ node-v8.9.3/Makefile +@@ -45,7 +45,7 @@ BUILDTYPE_LOWER := $(shell echo $(BUILDT EXEEXT := $(shell $(PYTHON) -c \ "import sys; print('.exe' if sys.platform == 'win32' else '')") @@ -20,15 +20,11 @@ +NODE_EXE = node8$(EXEEXT) NODE ?= ./$(NODE_EXE) NODE_G_EXE = node_g$(EXEEXT) --NPM ?= ./deps/npm/bin/npm-cli.js -+NPM ?= ./deps/npm8/bin/npm-cli.js - - # Flags for packaging. - BUILD_DOWNLOAD_FLAGS ?= --download=all -Index: node-v8.9.1/tools/install.py + NPM ?= ./deps/npm/bin/npm-cli.js +Index: node-v8.9.3/tools/install.py =================================================================== ---- node-v8.9.1.orig/tools/install.py -+++ node-v8.9.1/tools/install.py +--- node-v8.9.3.orig/tools/install.py ++++ node-v8.9.3/tools/install.py @@ -78,7 +78,7 @@ def install(paths, dst): map(lambda path def uninstall(paths, dst): map(lambda path: try_remove(path, dst), paths) @@ -129,10 +125,10 @@ def run(args): global node_prefix, install_path, target_defaults, variables -Index: node-v8.9.1/doc/node.1 +Index: node-v8.9.3/doc/node.1 =================================================================== ---- node-v8.9.1.orig/doc/node.1 -+++ node-v8.9.1/doc/node.1 +--- node-v8.9.3.orig/doc/node.1 ++++ node-v8.9.3/doc/node.1 @@ -26,12 +26,12 @@ .SH NAME @@ -165,10 +161,10 @@ .RB [ \-\-v8-options ] Execute without arguments to start the REPL. -Index: node-v8.9.1/src/node.stp +Index: node-v8.9.3/src/node.stp =================================================================== ---- node-v8.9.1.orig/src/node.stp -+++ node-v8.9.1/src/node.stp +--- node-v8.9.3.orig/src/node.stp ++++ node-v8.9.3/src/node.stp @@ -19,7 +19,7 @@ // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE // USE OR OTHER DEALINGS IN THE SOFTWARE. @@ -241,10 +237,10 @@ { scavenge = 1 << 0; compact = 1 << 1; -Index: node-v8.9.1/deps/npm/man/man1/npm.1 +Index: node-v8.9.3/deps/npm/man/man1/npm.1 =================================================================== ---- node-v8.9.1.orig/deps/npm/man/man1/npm.1 -+++ node-v8.9.1/deps/npm/man/man1/npm.1 +--- node-v8.9.3.orig/deps/npm/man/man1/npm.1 ++++ node-v8.9.3/deps/npm/man/man1/npm.1 @@ -1,11 +1,11 @@ .TH "NPM" "1" "October 2017" "" "" .SH "NAME" @@ -374,10 +370,10 @@ .RE -Index: node-v8.9.1/node.gyp +Index: node-v8.9.3/node.gyp =================================================================== ---- node-v8.9.1.orig/node.gyp -+++ node-v8.9.1/node.gyp +--- node-v8.9.3.orig/node.gyp ++++ node-v8.9.3/node.gyp @@ -20,7 +20,7 @@ 'node_shared_openssl%': 'false', 'node_v8_options%': '', @@ -387,7 +383,7 @@ 'library_files': [ 'lib/internal/bootstrap_node.js', 'lib/async_hooks.js', -@@ -488,10 +488,10 @@ +@@ -486,10 +486,10 @@ { 'action_name': 'node_dtrace_provider_o', 'inputs': [ @@ -400,7 +396,7 @@ ], 'action': [ 'dtrace', '-G', '-xnolibs', '-s', 'src/node_provider.d', '<@(_inputs)', '-o', '<@(_outputs)' ] -@@ -541,7 +541,7 @@ +@@ -539,7 +539,7 @@ '<(SHARED_INTERMEDIATE_DIR)/v8constants.h' ], 'outputs': [ @@ -409,7 +405,7 @@ ], 'conditions': [ [ 'target_arch=="ia32" or target_arch=="arm"', { -@@ -602,9 +602,9 @@ +@@ -600,9 +600,9 @@ ], 'variables': { @@ -422,7 +418,7 @@ 'OBJ_SUFFIX': 'o', 'OBJ_SEPARATOR': '/', 'conditions': [ -@@ -740,7 +740,7 @@ +@@ -738,7 +738,7 @@ ['OS=="aix"', { 'targets': [ { @@ -431,20 +427,20 @@ 'conditions': [ ['node_shared=="true"', { 'type': 'shared_library', -Index: node-v8.9.1/deps/npm/bin/npm-cli.js +Index: node-v8.9.3/deps/npm/bin/npm-cli.js =================================================================== ---- node-v8.9.1.orig/deps/npm/bin/npm-cli.js -+++ node-v8.9.1/deps/npm/bin/npm-cli.js +--- node-v8.9.3.orig/deps/npm/bin/npm-cli.js ++++ node-v8.9.3/deps/npm/bin/npm-cli.js @@ -1,4 +1,4 @@ -#!/usr/bin/env node +#!/usr/bin/env node8 ;(function () { // wrapper in case we're in module_context mode // windows: running "npm blah" in this folder will invoke WSH, not node. /*global WScript*/ -Index: node-v8.9.1/src/node_main.cc +Index: node-v8.9.3/src/node_main.cc =================================================================== ---- node-v8.9.1.orig/src/node_main.cc -+++ node-v8.9.1/src/node_main.cc +--- node-v8.9.3.orig/src/node_main.cc ++++ node-v8.9.3/src/node_main.cc @@ -101,6 +101,7 @@ int main(int argc, char *argv[]) { #endif // Disable stdio buffering, it interacts poorly with printf() @@ -453,3 +449,16 @@ setvbuf(stdout, nullptr, _IONBF, 0); setvbuf(stderr, nullptr, _IONBF, 0); return node::Start(argc, argv); +Index: node-v8.9.3/tools/test.py +=================================================================== +--- node-v8.9.3.orig/tools/test.py ++++ node-v8.9.3/tools/test.py +@@ -906,7 +906,7 @@ class Context(object): + + def GetVm(self, arch, mode): + if arch == 'none': +- name = 'out/Debug/node' if mode == 'debug' else 'out/Release/node' ++ name = 'out/Debug/node' if mode == 'debug' else 'out/Release/node8' + else: + name = 'out/%s.%s/node' % (arch, mode) +
