From a9dcb4445e5941bd6d1a48862e5d8362610e9eb3 Mon Sep 17 00:00:00 2001 From: David Carley Date: Sat, 21 Oct 2017 13:06:24 -0700 Subject: [PATCH 1/5] Specify the "--exact" flag when running `lerna publish` to pin dependencies to exact released versions on all the web3-* packages. --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index b5a6e8c99b6..95568e2ea45 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "postinstall": "lerna bootstrap", "build": "gulp", "build-all": "gulp all", - "release": "lerna bootstrap; gulp; lerna publish --skip-git; gulp version;", + "release": "lerna bootstrap; gulp; lerna publish --exact --skip-git; gulp version;", "watch": "gulp watch", "docs": "cd docs; make html;", "lint": "jshint *.js packages", From 7a8809d96ec069fbfa18b1f067b9b2abab33b6e1 Mon Sep 17 00:00:00 2001 From: David Carley Date: Sat, 21 Oct 2017 13:42:05 -0700 Subject: [PATCH 2/5] Fixed package versioning. Fixed the `gulp version` task so that it updates all the necessary files, including `.versions` Changed the `release` npm script to update all versions (via lerna), *then* rebuild the dist files, then do the full `lerna publish` step. --- gulpfile.js | 110 +++++++++++++++++++++++++++------------------------ package.json | 2 +- 2 files changed, 60 insertions(+), 52 deletions(-) diff --git a/gulpfile.js b/gulpfile.js index 2315d91080d..1c60cbd0e67 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -2,7 +2,7 @@ 'use strict'; -var version = require('./lerna.json'); +var lernaJSON = require('./lerna.json'); var path = require('path'); var del = require('del'); @@ -24,74 +24,74 @@ var packages = [{ fileName: 'web3', expose: 'Web3', src: './packages/web3/src/index.js', - ignore: ['xmlhttprequest','websocket'] -},{ + ignore: ['xmlhttprequest', 'websocket'] +}, { fileName: 'web3-utils', expose: 'Web3Utils', src: './packages/web3-utils/src/index.js' -},{ +}, { fileName: 'web3-eth', expose: 'Web3Eth', src: './packages/web3-eth/src/index.js' -},{ +}, { fileName: 'web3-eth-accounts', expose: 'Web3EthAccounts', src: './packages/web3-eth-accounts/src/index.js' -},{ +}, { fileName: 'web3-eth-contract', expose: 'Web3EthContract', src: './packages/web3-eth-contract/src/index.js' -},{ +}, { fileName: 'web3-eth-personal', expose: 'Web3EthPersonal', src: './packages/web3-eth-personal/src/index.js' -},{ +}, { fileName: 'web3-eth-iban', expose: 'Web3EthIban', src: './packages/web3-eth-iban/src/index.js' -},{ +}, { fileName: 'web3-eth-abi', expose: 'Web3EthAbi', src: './packages/web3-eth-abi/src/index.js' -},{ +}, { fileName: 'web3-net', expose: 'Web3Net', src: './packages/web3-net/src/index.js' -},{ +}, { fileName: 'web3-shh', expose: 'Web3Shh', src: './packages/web3-shh/src/index.js' -},{ +}, { fileName: 'web3-bzz', expose: 'Web3Bzz', src: './packages/web3-bzz/src/index.js' -},{ +}, { fileName: 'web3-providers-ipc', expose: 'Web3IpcProvider', src: './packages/web3-providers-ipc/src/index.js' -},{ +}, { fileName: 'web3-providers-http', expose: 'Web3HttpProvider', src: './packages/web3-providers-http/src/index.js', ignore: ['xmlhttprequest'] -},{ +}, { fileName: 'web3-providers-ws', expose: 'Web3WsProvider', src: './packages/web3-providers-ws/src/index.js', ignore: ['websocket'] -},{ +}, { fileName: 'web3-core-subscriptions', expose: 'Web3Subscriptions', src: './packages/web3-core-subscriptions/src/index.js' -},{ +}, { fileName: 'web3-core-requestmanager', expose: 'Web3RequestManager', src: './packages/web3-core-requestmanager/src/index.js' -},{ +}, { fileName: 'web3-core-promievent', expose: 'Web3PromiEvent', src: './packages/web3-core-promievent/src/index.js' -},{ +}, { fileName: 'web3-core-method', expose: 'Web3Method', src: './packages/web3-core-method/src/index.js' @@ -107,71 +107,80 @@ var browserifyOptions = { }; var ugliyOptions = { - compress:{ - dead_code : true, // jshint ignore:line - drop_debugger : true, // jshint ignore:line - global_defs : { // jshint ignore:line + compress: { + dead_code: true, // jshint ignore:line + drop_debugger: true, // jshint ignore:line + global_defs: { // jshint ignore:line "DEBUG": false // matters for some libraries } } }; -gulp.task('version', function(){ - if(!version.version) return; - - gulp.src(['./package.json']) - .pipe(replace(/\"version\"\: \"([\.0-9\-a-z]*)\"/, '"version": "'+ version.version + '"')) - .pipe(gulp.dest('./')); - gulp.src(['./bower.json']) - .pipe(replace(/\"version\"\: \"([\.0-9\-a-z]*)\"/, '"version": "'+ version.version + '"')) - .pipe(gulp.dest('./')); - gulp.src(['./package.js']) - .pipe(replace(/version\: \'([\.0-9\-a-z]*)\'/, "version: '"+ version.version + "'")) - .pipe(gulp.dest('./')); +gulp.task('version', function () { + if (!lernaJSON.version) { + throw new Error("version property is missing from lerna.json"); + } + + var version = lernaJSON.version; + var jsonPattern = /\"version\"\: \"[\.0-9\-a-z]*\"/; + var jsPattern = /version\: \'[\.0-9\-a-z]*\'/; + var meteorPattern = /ethereum:web3@[\.0-9\-a-z]*/; + var glob = [ + './package.json', + './bower.json', + './package.js', + './.versions' + ]; + + gulp.src(glob, {base: './'}) + .pipe(replace(jsonPattern, '"version": "' + version + '"')) + .pipe(replace(jsPattern, "version: '" + version + "'")) + .pipe(replace(meteorPattern, 'ethereum:web3@' + version)) + .pipe(gulp.dest('./')); }); -gulp.task('bower', ['version'], function(cb){ - bower.commands.install().on('end', function (installed){ +gulp.task('bower', ['version'], function (cb) { + bower.commands.install().on('end', function (installed) { console.log(installed); cb(); }); }); -gulp.task('lint', [], function(){ +gulp.task('lint', [], function () { return gulp.src(['./*.js', './lib/*.js']) .pipe(jshint()) .pipe(jshint.reporter('default')); }); -gulp.task('clean', ['lint'], function(cb) { - del([ DEST ]).then(cb.bind(null, null)); +gulp.task('clean', ['lint'], function (cb) { + del([DEST]).then(cb.bind(null, null)); }); -packages.forEach(function(pckg, i){ - var prevPckg = (!i) ? 'clean' : packages[i-1].fileName; +packages.forEach(function (pckg, i) { + var prevPckg = (!i) ? 'clean' : packages[i - 1].fileName; gulp.task(pckg.fileName, [prevPckg], function () { browserifyOptions.standalone = pckg.expose; var pipe = browserify(browserifyOptions) - .require(pckg.src, {expose: pckg.expose}) - .require('bn.js', {expose: 'BN'}) // expose it to dapp developers + .require(pckg.src, { expose: pckg.expose }) + .require('bn.js', { expose: 'BN' }) // expose it to dapp developers .add(pckg.src); - if(pckg.ignore) { + if (pckg.ignore) { pckg.ignore.forEach(function (ignore) { pipe.ignore(ignore); }); } return pipe.bundle() - .pipe(exorcist(path.join( DEST, pckg.fileName + '.js.map'))) + .pipe(exorcist(path.join(DEST, pckg.fileName + '.js.map'))) .pipe(source(pckg.fileName + '.js')) .pipe(streamify(babel({ compact: false, presets: ['env'] }))) - .pipe(gulp.dest( DEST )) + .pipe(gulp.dest(DEST)) .pipe(streamify(babel({ compact: true, presets: ['env'] @@ -179,16 +188,15 @@ packages.forEach(function(pckg, i){ .pipe(streamify(uglify(ugliyOptions))) .on('error', function (err) { console.error(err); }) .pipe(rename(pckg.fileName + '.min.js')) - .pipe(gulp.dest( DEST )); + .pipe(gulp.dest(DEST)); }); }); - -gulp.task('watch', function() { +gulp.task('watch', function () { gulp.watch(['./packages/web3/src/*.js'], ['lint', 'build']); }); -gulp.task('all', ['version', 'lint', 'clean', packages[packages.length-1].fileName]); +gulp.task('all', ['version', 'lint', 'clean', packages[packages.length - 1].fileName]); gulp.task('default', ['version', 'lint', 'clean', packages[0].fileName]); diff --git a/package.json b/package.json index 95568e2ea45..736a5deb632 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "postinstall": "lerna bootstrap", "build": "gulp", "build-all": "gulp all", - "release": "lerna bootstrap; gulp; lerna publish --exact --skip-git; gulp version;", + "release": "lerna bootstrap; lerna publish --yes --cd-version prerelease --exact --skip-npm --skip-git; gulp version; gulp; git checkout lerna.json; lerna publish --cd-version prerelease --exact --skip-git", "watch": "gulp watch", "docs": "cd docs; make html;", "lint": "jshint *.js packages", From fb3bcae0cf80026a60fb9d0a6be13b38d57fd011 Mon Sep 17 00:00:00 2001 From: David Carley Date: Tue, 24 Oct 2017 07:47:59 -0700 Subject: [PATCH 3/5] Simplified the `npm run release` script, removed version update of meteor files. --- gulpfile.js | 9 +++------ package.json | 2 +- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/gulpfile.js b/gulpfile.js index 1c60cbd0e67..577f616c58a 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -122,20 +122,17 @@ gulp.task('version', function () { } var version = lernaJSON.version; - var jsonPattern = /\"version\"\: \"[\.0-9\-a-z]*\"/; - var jsPattern = /version\: \'[\.0-9\-a-z]*\'/; - var meteorPattern = /ethereum:web3@[\.0-9\-a-z]*/; + var jsonPattern = /"version": "[.0-9\-a-z]*"/; + var jsPattern = /version: '[.0-9\-a-z]*'/; var glob = [ './package.json', './bower.json', - './package.js', - './.versions' + './package.js' ]; gulp.src(glob, {base: './'}) .pipe(replace(jsonPattern, '"version": "' + version + '"')) .pipe(replace(jsPattern, "version: '" + version + "'")) - .pipe(replace(meteorPattern, 'ethereum:web3@' + version)) .pipe(gulp.dest('./')); }); diff --git a/package.json b/package.json index 736a5deb632..651ac2120ae 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "postinstall": "lerna bootstrap", "build": "gulp", "build-all": "gulp all", - "release": "lerna bootstrap; lerna publish --yes --cd-version prerelease --exact --skip-npm --skip-git; gulp version; gulp; git checkout lerna.json; lerna publish --cd-version prerelease --exact --skip-git", + "release": "lerna bootstrap; lerna publish --exact --skip-git; gulp version; gulp", "watch": "gulp watch", "docs": "cd docs; make html;", "lint": "jshint *.js packages", From b69b7dc8d7aa184bf00fb8795246b803a8d8bf85 Mon Sep 17 00:00:00 2001 From: David Carley Date: Wed, 25 Oct 2017 17:13:59 -0700 Subject: [PATCH 4/5] Discovered a more global way of ensuring that lerna always publishes with exact versions. --- lerna.json | 9 +++++++++ package.json | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/lerna.json b/lerna.json index 0fc42408bc2..a177347e671 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,15 @@ { "version": "1.0.0-beta.24", "lerna": "2.0.0", + "command": { + "init": { + "exact": true + }, + "publish": { + "exact": true, + "skipGit": true + } + }, "packages": [ "packages/*" ] diff --git a/package.json b/package.json index 651ac2120ae..f2947a9d4ec 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "postinstall": "lerna bootstrap", "build": "gulp", "build-all": "gulp all", - "release": "lerna bootstrap; lerna publish --exact --skip-git; gulp version; gulp", + "release": "lerna bootstrap; lerna publish; gulp version; gulp", "watch": "gulp watch", "docs": "cd docs; make html;", "lint": "jshint *.js packages", From a60a3f53a5640c654284140cf61dcebac192a2f9 Mon Sep 17 00:00:00 2001 From: David Carley Date: Tue, 14 Nov 2017 12:42:56 -0800 Subject: [PATCH 5/5] Fixed blocking test in eth.sendTransaction.js --- test/eth.sendTransaction.js | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/test/eth.sendTransaction.js b/test/eth.sendTransaction.js index 61a1af128dd..ac5dc56537c 100644 --- a/test/eth.sendTransaction.js +++ b/test/eth.sendTransaction.js @@ -242,12 +242,12 @@ describe(method, function () { assert.deepEqual(payload.params, test.formattedArgs2 || []); }); } - + provider.injectResult(null); provider.injectValidation(function (payload) { assert.equal(payload.method, 'eth_getTransactionReceipt'); }); - + // if notification its sendTransaction, which needs two more results, subscription and receipt if(test.notification) { @@ -327,6 +327,26 @@ describe(method, function () { } + provider.injectResult(null); + provider.injectValidation(function (payload) { + assert.equal(payload.method, 'eth_getTransactionReceipt'); + }); + + + // if notification its sendTransaction, which needs two more results, subscription and receipt + if(test.notification) { + // inject receipt + provider.injectResult({ + "blockHash": "0x6fd9e2a26ab", + "blockNumber": "0x15df", + "transactionHash": "0xc6ef2fc5426d6ad6fd9e2a26abeab0aa2411b7ab17f30a99d3cb96aed1d1055b", + "transactionIndex": "0x1", + "contractAddress": "0x407d73d8a49eeb85d32cf465507dd71d507100c1", + "cumulativeGasUsed": "0x7f110", + "gasUsed": "0x7f110" + }); + } + var args = clone(test.args); if(test.error) {