From 6abb88e350b8a84f8993a2b1e888b243948a0160 Mon Sep 17 00:00:00 2001 From: CruzMolina <7537712+CruzMolina@users.noreply.github.com> Date: Wed, 17 Apr 2019 21:12:52 -0700 Subject: [PATCH 1/5] Upgrade dependency: ganache-core@2.5.5 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * truffle: 2.5.1 → 2.5.5 * truffle-artifactor: 2.5.1 → 2.5.5 * truffle-contract: 2.5.1 → 2.5.5 * truffle-core: 2.5.1 → 2.5.5 * truffle-debugger: 2.5.1 → 2.5.5 * truffle-deployer: 2.5.1 → 2.5.5 * truffle-hdwallet-provider: 2.5.1 → 2.5.5 * truffle-interface-adapter: 2.5.1 → 2.5.5 * truffle-provider: 2.5.1 → 2.5.5 --- packages/truffle-artifactor/package.json | 2 +- packages/truffle-contract/package.json | 2 +- packages/truffle-core/package.json | 2 +- packages/truffle-debugger/package.json | 2 +- packages/truffle-deployer/package.json | 2 +- packages/truffle-hdwallet-provider/package.json | 2 +- packages/truffle-interface-adapter/package.json | 2 +- packages/truffle-provider/package.json | 2 +- packages/truffle/package.json | 2 +- yarn.lock | 11 ++++++----- 10 files changed, 15 insertions(+), 14 deletions(-) diff --git a/packages/truffle-artifactor/package.json b/packages/truffle-artifactor/package.json index d0eeb5f4d18..d26c754fe2f 100644 --- a/packages/truffle-artifactor/package.json +++ b/packages/truffle-artifactor/package.json @@ -12,7 +12,7 @@ "license": "MIT", "devDependencies": { "chai": "4.2.0", - "ganache-core": "2.5.1", + "ganache-core": "2.5.5", "mocha": "5.2.0", "require-nocache": "^1.0.0", "solc": "0.5.0", diff --git a/packages/truffle-contract/package.json b/packages/truffle-contract/package.json index f9c1c2aedf7..6e9829f0d49 100644 --- a/packages/truffle-contract/package.json +++ b/packages/truffle-contract/package.json @@ -44,7 +44,7 @@ "browserify": "^14.0.0", "chai": "4.2.0", "debug": "^4.1.0", - "ganache-core": "2.5.1", + "ganache-core": "2.5.5", "mocha": "5.2.0", "solc": "0.5.0", "temp": "^0.8.3", diff --git a/packages/truffle-core/package.json b/packages/truffle-core/package.json index e70c6b3107a..d77c0971a8f 100644 --- a/packages/truffle-core/package.json +++ b/packages/truffle-core/package.json @@ -19,7 +19,7 @@ "ethpm": "0.0.16", "ethpm-registry": "0.1.0-next.2", "fs-extra": "6.0.1", - "ganache-core": "2.5.1", + "ganache-core": "2.5.5", "hdkey": "^1.1.0", "lodash": "4.17.11", "mkdirp": "^0.5.1", diff --git a/packages/truffle-debugger/package.json b/packages/truffle-debugger/package.json index 35db2644cb8..a94d8b7c4e8 100644 --- a/packages/truffle-debugger/package.json +++ b/packages/truffle-debugger/package.json @@ -54,7 +54,7 @@ "express": "^4.16.2", "faker": "^4.1.0", "fs-extra": "6.0.1", - "ganache-core": "2.5.1", + "ganache-core": "2.5.5", "istanbul-instrumenter-loader": "^3.0.1", "mocha": "5.2.0", "mocha-webpack": "^1.1.0", diff --git a/packages/truffle-deployer/package.json b/packages/truffle-deployer/package.json index 1c68380644c..657a7470b67 100644 --- a/packages/truffle-deployer/package.json +++ b/packages/truffle-deployer/package.json @@ -26,7 +26,7 @@ "truffle-expect": "^0.0.7" }, "devDependencies": { - "ganache-core": "2.5.1", + "ganache-core": "2.5.5", "mocha": "5.2.0", "truffle-reporters": "^1.0.9", "truffle-workflow-compile": "^2.0.11", diff --git a/packages/truffle-hdwallet-provider/package.json b/packages/truffle-hdwallet-provider/package.json index 87065e6aea4..6cb306b52d9 100644 --- a/packages/truffle-hdwallet-provider/package.json +++ b/packages/truffle-hdwallet-provider/package.json @@ -27,7 +27,7 @@ "ethereumjs-tx": "^1.3.7", "ethereumjs-util": "^5.2.0", "ethereumjs-wallet": "^0.6.2", - "ganache-core": "2.5.1", + "ganache-core": "2.5.5", "js-scrypt": "^0.2.0", "mocha": "^5.1.1", "web3": "1.0.0-beta.37", diff --git a/packages/truffle-interface-adapter/package.json b/packages/truffle-interface-adapter/package.json index d3cf2b94635..09f9c9dc2dc 100644 --- a/packages/truffle-interface-adapter/package.json +++ b/packages/truffle-interface-adapter/package.json @@ -16,7 +16,7 @@ }, "homepage": "https://github.com/trufflesuite/truffle#readme", "devDependencies": { - "ganache-core": "2.5.1" + "ganache-core": "2.5.5" }, "dependencies": { "bn.js": "^4.11.8", diff --git a/packages/truffle-provider/package.json b/packages/truffle-provider/package.json index a451caf2b92..f4d3f05c7f0 100644 --- a/packages/truffle-provider/package.json +++ b/packages/truffle-provider/package.json @@ -25,7 +25,7 @@ "web3": "1.0.0-beta.37" }, "devDependencies": { - "ganache-core": "2.5.1", + "ganache-core": "2.5.5", "mocha": "5.2.0" }, "publishConfig": { diff --git a/packages/truffle/package.json b/packages/truffle/package.json index 5232ae4d73c..12676feddf8 100644 --- a/packages/truffle/package.json +++ b/packages/truffle/package.json @@ -14,7 +14,7 @@ "copy-webpack-plugin": "^4.0.1", "eslint": "^5.7.0", "fs-extra": "6.0.1", - "ganache-core": "2.5.1", + "ganache-core": "2.5.5", "glob": "^7.1.2", "go-ipfs-dep": "^0.4.17", "husky": "^1.1.2", diff --git a/yarn.lock b/yarn.lock index 2febe629e94..1bc4781f763 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5562,7 +5562,7 @@ ethereumjs-vm@2.3.4: rustbn.js "~0.1.1" safe-buffer "^5.1.1" -ethereumjs-vm@^2.0.2, ethereumjs-vm@^2.1.0, ethereumjs-vm@^2.3.4, ethereumjs-vm@^2.6.0: +ethereumjs-vm@2.6.0, ethereumjs-vm@^2.0.2, ethereumjs-vm@^2.1.0, ethereumjs-vm@^2.3.4: version "2.6.0" resolved "https://registry.yarnpkg.com/ethereumjs-vm/-/ethereumjs-vm-2.6.0.tgz#76243ed8de031b408793ac33907fb3407fe400c6" dependencies: @@ -6401,9 +6401,10 @@ functional-red-black-tree@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" -ganache-core@2.5.1: - version "2.5.1" - resolved "https://registry.yarnpkg.com/ganache-core/-/ganache-core-2.5.1.tgz#731e88db70c12ac8a7c2b56a055483338523b739" +ganache-core@2.5.5: + version "2.5.5" + resolved "https://registry.yarnpkg.com/ganache-core/-/ganache-core-2.5.5.tgz#84da56de1957b6200a2d02934853fe7af89d260b" + integrity sha512-mrvPCtDjFLWmqygCx6LngWfA1hv6DH+iisEVYxRmCujstcMgzqi5UQdcKprxoO2Jx9st1fWVvDLi/tc6WHPGoA== dependencies: abstract-leveldown "3.0.0" async "2.6.1" @@ -6419,7 +6420,7 @@ ganache-core@2.5.1: ethereumjs-block "2.1.0" ethereumjs-tx "1.3.7" ethereumjs-util "5.2.0" - ethereumjs-vm "^2.6.0" + ethereumjs-vm "2.6.0" heap "0.2.6" level-sublevel "6.6.4" levelup "3.1.1" From 132eba6a81a704f1f0f90e53a66bd0211a2fcfa5 Mon Sep 17 00:00:00 2001 From: CruzMolina <7537712+CruzMolina@users.noreply.github.com> Date: Mon, 22 Apr 2019 09:48:19 -0700 Subject: [PATCH 2/5] update tests to match latest ganache-core behavior --- packages/truffle-contract/test/deploy.js | 4 ++-- packages/truffle-contract/test/errors.js | 11 ++++------- packages/truffle-contract/test/methods.js | 20 ++++++++++++++------ 3 files changed, 20 insertions(+), 15 deletions(-) diff --git a/packages/truffle-contract/test/deploy.js b/packages/truffle-contract/test/deploy.js index f3d891344a8..7186ee6b848 100644 --- a/packages/truffle-contract/test/deploy.js +++ b/packages/truffle-contract/test/deploy.js @@ -156,7 +156,7 @@ describe("Deployments", function() { await Example.new(2001); // Triggers error with a normal reason string assert.fail(); } catch (error) { - assert(error.message.includes("exceeds gas limit")); + assert(error.message.includes("check your gas limit")); assert(error.message.includes("reasonstring")); assert(error.receipt === undefined, "Expected no receipt"); assert(error.reason === "reasonstring"); @@ -168,7 +168,7 @@ describe("Deployments", function() { await Example.new(20001); // Triggers error with a long reason string assert.fail(); } catch (error) { - assert(error.message.includes("exceeds gas limit")); + assert(error.message.includes("check your gas limit")); assert( error.message.includes( "solidity storage is a fun lesson in endianness" diff --git a/packages/truffle-contract/test/errors.js b/packages/truffle-contract/test/errors.js index 2a91228c7c2..46307fc4b2b 100644 --- a/packages/truffle-contract/test/errors.js +++ b/packages/truffle-contract/test/errors.js @@ -32,7 +32,7 @@ describe("Client appends errors (vmErrorsOnRPCResponse)", function() { .catch(() => null); }); - it("should error w/gas limit error if constructor reverts", async function() { + it("should error w/ revert error if constructor reverts", async function() { try { await Example.new(13); // 13 fails a constructor require gate assert.fail(); @@ -42,10 +42,7 @@ describe("Client appends errors (vmErrorsOnRPCResponse)", function() { !e.message.includes("Reason"), "Should not include reason message" ); - assert( - e.message.includes("exceeds gas limit"), - "Error should be gas limit err" - ); + assert(e.message.includes("revert"), "Should include revert message"); } }); @@ -63,8 +60,8 @@ describe("Client appends errors (vmErrorsOnRPCResponse)", function() { "Error message should include reason" ); assert( - e.message.includes("exceeds gas limit"), - "Error should be gas limit err" + e.message.includes("revert reasonstring"), + "Error should be revert w/ reason" ); } }); diff --git a/packages/truffle-contract/test/methods.js b/packages/truffle-contract/test/methods.js index b5e206b3399..5757a864cb8 100644 --- a/packages/truffle-contract/test/methods.js +++ b/packages/truffle-contract/test/methods.js @@ -465,16 +465,18 @@ describe("Methods", function() { }); }); - describe("revert with reason (ganache only)", function() { - it("errors with receipt and revert message", async function() { + describe("error with reason (ganache only)", function() { + it("errors with receipt and revert reason", async function() { const example = await Example.new(1); try { await example.triggerRequireWithReasonError(); assert.fail(); } catch (e) { assert(e.reason === "reasonstring"); - assert(e.message.includes("reasonstring")); - assert(e.message.includes("revert")); + assert( + e.message.includes("consuming all gas"), + "Triggered require should consume all gas" + ); assert(e.receipt.status === false); } }); @@ -516,7 +518,10 @@ describe("Methods", function() { const example = await Example.new(1); const triggered = await example.fallbackTriggered(); - assert(triggered === false, "Fallback should not have been triggered yet"); + assert( + triggered === false, + "Fallback should not have been triggered yet" + ); await example.sendTransaction({ value: web3.utils.toWei("1", "ether") @@ -533,7 +538,10 @@ describe("Methods", function() { const example = await Example.new(1); const triggered = await example.fallbackTriggered(); - assert(triggered === false, "Fallback should not have been triggered yet"); + assert( + triggered === false, + "Fallback should not have been triggered yet" + ); await example.send(web3.utils.toWei("1", "ether")); From 4a2932cdf8996fcac7618b93414204c4915d51d7 Mon Sep 17 00:00:00 2001 From: CruzMolina <7537712+CruzMolina@users.noreply.github.com> Date: Mon, 22 Apr 2019 09:48:19 -0700 Subject: [PATCH 3/5] update truffle-contract tests to match latest ganache-core behavior --- packages/truffle-contract/test/deploy.js | 4 ++-- packages/truffle-contract/test/errors.js | 11 ++++------- packages/truffle-contract/test/methods.js | 20 ++++++++++++++------ 3 files changed, 20 insertions(+), 15 deletions(-) diff --git a/packages/truffle-contract/test/deploy.js b/packages/truffle-contract/test/deploy.js index f3d891344a8..7186ee6b848 100644 --- a/packages/truffle-contract/test/deploy.js +++ b/packages/truffle-contract/test/deploy.js @@ -156,7 +156,7 @@ describe("Deployments", function() { await Example.new(2001); // Triggers error with a normal reason string assert.fail(); } catch (error) { - assert(error.message.includes("exceeds gas limit")); + assert(error.message.includes("check your gas limit")); assert(error.message.includes("reasonstring")); assert(error.receipt === undefined, "Expected no receipt"); assert(error.reason === "reasonstring"); @@ -168,7 +168,7 @@ describe("Deployments", function() { await Example.new(20001); // Triggers error with a long reason string assert.fail(); } catch (error) { - assert(error.message.includes("exceeds gas limit")); + assert(error.message.includes("check your gas limit")); assert( error.message.includes( "solidity storage is a fun lesson in endianness" diff --git a/packages/truffle-contract/test/errors.js b/packages/truffle-contract/test/errors.js index 2a91228c7c2..46307fc4b2b 100644 --- a/packages/truffle-contract/test/errors.js +++ b/packages/truffle-contract/test/errors.js @@ -32,7 +32,7 @@ describe("Client appends errors (vmErrorsOnRPCResponse)", function() { .catch(() => null); }); - it("should error w/gas limit error if constructor reverts", async function() { + it("should error w/ revert error if constructor reverts", async function() { try { await Example.new(13); // 13 fails a constructor require gate assert.fail(); @@ -42,10 +42,7 @@ describe("Client appends errors (vmErrorsOnRPCResponse)", function() { !e.message.includes("Reason"), "Should not include reason message" ); - assert( - e.message.includes("exceeds gas limit"), - "Error should be gas limit err" - ); + assert(e.message.includes("revert"), "Should include revert message"); } }); @@ -63,8 +60,8 @@ describe("Client appends errors (vmErrorsOnRPCResponse)", function() { "Error message should include reason" ); assert( - e.message.includes("exceeds gas limit"), - "Error should be gas limit err" + e.message.includes("revert reasonstring"), + "Error should be revert w/ reason" ); } }); diff --git a/packages/truffle-contract/test/methods.js b/packages/truffle-contract/test/methods.js index b5e206b3399..5757a864cb8 100644 --- a/packages/truffle-contract/test/methods.js +++ b/packages/truffle-contract/test/methods.js @@ -465,16 +465,18 @@ describe("Methods", function() { }); }); - describe("revert with reason (ganache only)", function() { - it("errors with receipt and revert message", async function() { + describe("error with reason (ganache only)", function() { + it("errors with receipt and revert reason", async function() { const example = await Example.new(1); try { await example.triggerRequireWithReasonError(); assert.fail(); } catch (e) { assert(e.reason === "reasonstring"); - assert(e.message.includes("reasonstring")); - assert(e.message.includes("revert")); + assert( + e.message.includes("consuming all gas"), + "Triggered require should consume all gas" + ); assert(e.receipt.status === false); } }); @@ -516,7 +518,10 @@ describe("Methods", function() { const example = await Example.new(1); const triggered = await example.fallbackTriggered(); - assert(triggered === false, "Fallback should not have been triggered yet"); + assert( + triggered === false, + "Fallback should not have been triggered yet" + ); await example.sendTransaction({ value: web3.utils.toWei("1", "ether") @@ -533,7 +538,10 @@ describe("Methods", function() { const example = await Example.new(1); const triggered = await example.fallbackTriggered(); - assert(triggered === false, "Fallback should not have been triggered yet"); + assert( + triggered === false, + "Fallback should not have been triggered yet" + ); await example.send(web3.utils.toWei("1", "ether")); From 6f4c0da7c08dc2bef3b4d0261cf92600d3c8e976 Mon Sep 17 00:00:00 2001 From: CruzMolina <7537712+CruzMolina@users.noreply.github.com> Date: Mon, 22 Apr 2019 10:36:00 -0700 Subject: [PATCH 4/5] update truffle-deployer tests --- packages/truffle-deployer/test/errors.js | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/packages/truffle-deployer/test/errors.js b/packages/truffle-deployer/test/errors.js index 63cc18a025d..8630872ae92 100644 --- a/packages/truffle-deployer/test/errors.js +++ b/packages/truffle-deployer/test/errors.js @@ -172,6 +172,7 @@ describe("Error cases", function() { assert.fail(); } catch (err) { assert(err.message.includes("UsesExample")); + assert(err.message.includes("out of gas")); assert(err.message.includes("value you set")); assert(err.message.includes("Block limit")); assert(err.message.includes("Gas sent")); @@ -193,8 +194,8 @@ describe("Error cases", function() { assert.fail(); } catch (err) { assert(err.message.includes("Loops")); - assert(err.message.includes("out of gas")); - assert(err.message.includes("constructor")); + assert(err.message.includes("code couldn't be stored")); + assert(err.message.includes("check your gas limit")); } }); @@ -212,13 +213,12 @@ describe("Error cases", function() { assert.fail(); } catch (err) { assert(err.message.includes("Loops")); - assert(err.message.includes("out of gas")); - assert(err.message.includes("Gas sent")); - assert(err.message.includes("Block limit")); + assert(err.message.includes("code couldn't be stored")); + assert(err.message.includes("check your gas limit")); } }); - it("revert", async function() { + it("constructor revert", async function() { migrate = function() { deployer.deploy(ExampleRevert); }; @@ -229,11 +229,13 @@ describe("Error cases", function() { await deployer.start(); assert.fail(); } catch (err) { - assert(err.message.includes("revert")); + assert(err.message.includes("ExampleRevert")); + assert(err.message.includes("code couldn't be stored")); + assert(err.message.includes("check your gas limit")); } }); - it("assert", async function() { + it("failing constructor assert", async function() { migrate = function() { deployer.deploy(ExampleAssert); }; @@ -244,7 +246,9 @@ describe("Error cases", function() { await deployer.start(); assert.fail(); } catch (err) { - assert(err.message.includes("invalid opcode")); + assert(err.message.includes("ExampleAssert")); + assert(err.message.includes("code couldn't be stored")); + assert(err.message.includes("check your gas limit")); } }); From 9d2654e0c50d9ab4f4dd3671bc5f098386525916 Mon Sep 17 00:00:00 2001 From: CruzMolina <7537712+CruzMolina@users.noreply.github.com> Date: Mon, 22 Apr 2019 11:15:19 -0700 Subject: [PATCH 5/5] only install native solc on relevant jobs --- .travis.yml | 2 +- scripts/ci.sh | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index dbe14314fd7..6b95f88c275 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,7 +5,7 @@ language: node_js before_install: - sudo add-apt-repository --yes ppa:ethereum/ethereum - sudo apt-get update - - sudo apt-get install -y dpkg solc + - sudo apt-get install -y dpkg - npm list -g lerna --depth=0 || npm install -g lerna - npm install -g yarn diff --git a/scripts/ci.sh b/scripts/ci.sh index 0a93981c3f6..0a58b9c35de 100755 --- a/scripts/ci.sh +++ b/scripts/ci.sh @@ -42,7 +42,7 @@ elif [ "$GETH" = true ]; then elif [ "$PACKAGES" = true ]; then docker pull ethereum/solc:0.4.22 - sudo apt-get install -y snapd + sudo apt-get install -y snapd solc export PATH=$PATH:/snap/bin sudo snap install vyper --beta --devmode lerna run --scope truffle-* test --stream --concurrency=1 @@ -50,7 +50,7 @@ elif [ "$PACKAGES" = true ]; then elif [ "$COVERAGE" = true ]; then docker pull ethereum/solc:0.4.22 - sudo apt-get install -y jq snapd + sudo apt-get install -y jq snapd solc export PATH=$PATH:/snap/bin sudo snap install vyper --beta --devmode cd packages/truffle-debugger && npm run test:coverage && \