fix(@embark/core): ensure 0x0 address are extended to full zero addresses

This was a regression introduced in a web3 upgrade where `0x0` addresses where no longer
accepted as valid addresses and have to be replaced with full zero addresses.

This commit ensures that, if Embark apps still make use of `0x0` addresses in
their configs, they are properly replaced or extended to satisfy web3's APIs.

Fixes #956
This commit is contained in:
Pascal Precht 2018-11-14 10:35:13 +01:00 committed by Pascal Precht
parent 70a61c5965
commit d3f6b43986
5 changed files with 155 additions and 52 deletions

94
npm-shrinkwrap.json generated
View File

@ -3819,7 +3819,7 @@
"dependencies": { "dependencies": {
"colors": { "colors": {
"version": "1.0.3", "version": "1.0.3",
"resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", "resolved": "http://registry.npmjs.org/colors/-/colors-1.0.3.tgz",
"integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=" "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs="
} }
} }
@ -10892,8 +10892,7 @@
"pem-jwk": "^1.5.1", "pem-jwk": "^1.5.1",
"protons": "^1.0.1", "protons": "^1.0.1",
"rsa-pem-to-jwk": "^1.1.3", "rsa-pem-to-jwk": "^1.1.3",
"tweetnacl": "^1.0.0", "tweetnacl": "^1.0.0"
"webcrypto-shim": "github:dignifiedquire/webcrypto-shim#190bc9ec341375df6025b17ae12ddb2428ea49c8"
}, },
"dependencies": { "dependencies": {
"base-x": { "base-x": {
@ -10911,6 +10910,10 @@
"requires": { "requires": {
"base-x": "^3.0.2" "base-x": "^3.0.2"
} }
},
"webcrypto-shim": {
"version": "github:dignifiedquire/webcrypto-shim#190bc9ec341375df6025b17ae12ddb2428ea49c8",
"from": "github:dignifiedquire/webcrypto-shim#190bc9ec341375df6025b17ae12ddb2428ea49c8"
} }
} }
}, },
@ -12625,12 +12628,12 @@
}, },
"minimist": { "minimist": {
"version": "1.2.0", "version": "1.2.0",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
"integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ="
}, },
"node-notifier": { "node-notifier": {
"version": "4.6.1", "version": "4.6.1",
"resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-4.6.1.tgz", "resolved": "http://registry.npmjs.org/node-notifier/-/node-notifier-4.6.1.tgz",
"integrity": "sha1-BW0UJE89zBzq3+aK+c/wxUc6M/M=", "integrity": "sha1-BW0UJE89zBzq3+aK+c/wxUc6M/M=",
"requires": { "requires": {
"cli-usage": "^0.1.1", "cli-usage": "^0.1.1",
@ -15762,7 +15765,6 @@
"resolved": "https://registry.npmjs.org/web3/-/web3-0.20.6.tgz", "resolved": "https://registry.npmjs.org/web3/-/web3-0.20.6.tgz",
"integrity": "sha1-PpcwauAk+yThCj11yIQwJWIhUSA=", "integrity": "sha1-PpcwauAk+yThCj11yIQwJWIhUSA=",
"requires": { "requires": {
"bignumber.js": "git+https://github.com/frozeman/bignumber.js-nolookahead.git#57692b3ecfc98bbdd6b3a516cb2353652ea49934",
"crypto-js": "^3.1.4", "crypto-js": "^3.1.4",
"utf8": "^2.1.1", "utf8": "^2.1.1",
"xhr2": "*", "xhr2": "*",
@ -15771,7 +15773,7 @@
"dependencies": { "dependencies": {
"bignumber.js": { "bignumber.js": {
"version": "git+https://github.com/frozeman/bignumber.js-nolookahead.git#57692b3ecfc98bbdd6b3a516cb2353652ea49934", "version": "git+https://github.com/frozeman/bignumber.js-nolookahead.git#57692b3ecfc98bbdd6b3a516cb2353652ea49934",
"from": "git+https://github.com/frozeman/bignumber.js-nolookahead.git" "from": "git+https://github.com/frozeman/bignumber.js-nolookahead.git#57692b3ecfc98bbdd6b3a516cb2353652ea49934"
} }
} }
} }
@ -15803,7 +15805,7 @@
"dependencies": { "dependencies": {
"acorn": { "acorn": {
"version": "3.3.0", "version": "3.3.0",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", "resolved": "http://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz",
"integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=" "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo="
}, },
"ajv": { "ajv": {
@ -15822,7 +15824,7 @@
}, },
"ansi-escapes": { "ansi-escapes": {
"version": "1.4.0", "version": "1.4.0",
"resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", "resolved": "http://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz",
"integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=" "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4="
}, },
"ansi-styles": { "ansi-styles": {
@ -15832,7 +15834,7 @@
}, },
"chalk": { "chalk": {
"version": "1.1.3", "version": "1.1.3",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
"integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
"requires": { "requires": {
"ansi-styles": "^2.2.1", "ansi-styles": "^2.2.1",
@ -15860,7 +15862,7 @@
}, },
"doctrine": { "doctrine": {
"version": "1.5.0", "version": "1.5.0",
"resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", "resolved": "http://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz",
"integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=",
"requires": { "requires": {
"esutils": "^2.0.2", "esutils": "^2.0.2",
@ -15869,7 +15871,7 @@
}, },
"eslint": { "eslint": {
"version": "2.10.2", "version": "2.10.2",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-2.10.2.tgz", "resolved": "http://registry.npmjs.org/eslint/-/eslint-2.10.2.tgz",
"integrity": "sha1-sjCUgv7wQ9MgM2WjIShebM4Bw9c=", "integrity": "sha1-sjCUgv7wQ9MgM2WjIShebM4Bw9c=",
"requires": { "requires": {
"chalk": "^1.1.3", "chalk": "^1.1.3",
@ -15908,7 +15910,7 @@
}, },
"eslint-plugin-react": { "eslint-plugin-react": {
"version": "5.2.2", "version": "5.2.2",
"resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-5.2.2.tgz", "resolved": "http://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-5.2.2.tgz",
"integrity": "sha1-fbBo4fVIf2hx5N7vNqOBwwPqwWE=", "integrity": "sha1-fbBo4fVIf2hx5N7vNqOBwwPqwWE=",
"requires": { "requires": {
"doctrine": "^1.2.2", "doctrine": "^1.2.2",
@ -15917,7 +15919,7 @@
}, },
"espree": { "espree": {
"version": "3.1.4", "version": "3.1.4",
"resolved": "https://registry.npmjs.org/espree/-/espree-3.1.4.tgz", "resolved": "http://registry.npmjs.org/espree/-/espree-3.1.4.tgz",
"integrity": "sha1-BybXrIOvl6fISY2ps2OjYJ0qaKE=", "integrity": "sha1-BybXrIOvl6fISY2ps2OjYJ0qaKE=",
"requires": { "requires": {
"acorn": "^3.1.0", "acorn": "^3.1.0",
@ -15963,7 +15965,7 @@
}, },
"inquirer": { "inquirer": {
"version": "0.12.0", "version": "0.12.0",
"resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz", "resolved": "http://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz",
"integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=", "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=",
"requires": { "requires": {
"ansi-escapes": "^1.1.0", "ansi-escapes": "^1.1.0",
@ -15988,7 +15990,7 @@
}, },
"onetime": { "onetime": {
"version": "1.1.0", "version": "1.1.0",
"resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", "resolved": "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz",
"integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=" "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k="
}, },
"pluralize": { "pluralize": {
@ -15998,7 +16000,7 @@
}, },
"progress": { "progress": {
"version": "1.1.8", "version": "1.1.8",
"resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", "resolved": "http://registry.npmjs.org/progress/-/progress-1.1.8.tgz",
"integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=" "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74="
}, },
"restore-cursor": { "restore-cursor": {
@ -16025,17 +16027,17 @@
}, },
"shelljs": { "shelljs": {
"version": "0.6.1", "version": "0.6.1",
"resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.6.1.tgz", "resolved": "http://registry.npmjs.org/shelljs/-/shelljs-0.6.1.tgz",
"integrity": "sha1-7GIRvtGSBEIIj+D3Cyg3Iy7SyKg=" "integrity": "sha1-7GIRvtGSBEIIj+D3Cyg3Iy7SyKg="
}, },
"slice-ansi": { "slice-ansi": {
"version": "0.0.4", "version": "0.0.4",
"resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", "resolved": "http://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz",
"integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=" "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU="
}, },
"standard": { "standard": {
"version": "7.1.2", "version": "7.1.2",
"resolved": "https://registry.npmjs.org/standard/-/standard-7.1.2.tgz", "resolved": "http://registry.npmjs.org/standard/-/standard-7.1.2.tgz",
"integrity": "sha1-QBZu7sJAUGXRpPDj8VurxuJ0YH4=", "integrity": "sha1-QBZu7sJAUGXRpPDj8VurxuJ0YH4=",
"requires": { "requires": {
"eslint": "~2.10.2", "eslint": "~2.10.2",
@ -16059,7 +16061,7 @@
}, },
"table": { "table": {
"version": "3.8.3", "version": "3.8.3",
"resolved": "https://registry.npmjs.org/table/-/table-3.8.3.tgz", "resolved": "http://registry.npmjs.org/table/-/table-3.8.3.tgz",
"integrity": "sha1-K7xULw/amGGnVdOUf+/Ys/UThV8=", "integrity": "sha1-K7xULw/amGGnVdOUf+/Ys/UThV8=",
"requires": { "requires": {
"ajv": "^4.7.0", "ajv": "^4.7.0",
@ -16096,7 +16098,7 @@
}, },
"web3": { "web3": {
"version": "0.20.6", "version": "0.20.6",
"resolved": "https://registry.npmjs.org/web3/-/web3-0.20.6.tgz", "resolved": "http://registry.npmjs.org/web3/-/web3-0.20.6.tgz",
"integrity": "sha1-PpcwauAk+yThCj11yIQwJWIhUSA=", "integrity": "sha1-PpcwauAk+yThCj11yIQwJWIhUSA=",
"requires": { "requires": {
"bignumber.js": "git+https://github.com/frozeman/bignumber.js-nolookahead.git#57692b3ecfc98bbdd6b3a516cb2353652ea49934", "bignumber.js": "git+https://github.com/frozeman/bignumber.js-nolookahead.git#57692b3ecfc98bbdd6b3a516cb2353652ea49934",
@ -16805,6 +16807,14 @@
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz",
"integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=" "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU="
}, },
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"requires": {
"ms": "2.0.0"
}
},
"eth-lib": { "eth-lib": {
"version": "0.1.27", "version": "0.1.27",
"resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.1.27.tgz", "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.1.27.tgz",
@ -17057,28 +17067,17 @@
"integrity": "sha1-fecPG4Py3jZHZ3IVa+z+9uNRbrM=", "integrity": "sha1-fecPG4Py3jZHZ3IVa+z+9uNRbrM=",
"requires": { "requires": {
"underscore": "1.8.3", "underscore": "1.8.3",
"web3-core-helpers": "1.0.0-beta.34", "web3-core-helpers": "1.0.0-beta.34"
"websocket": "git://github.com/frozeman/WebSocket-Node.git#6c72925e3f8aaaea8dc8450f97627e85263999f2"
}, },
"dependencies": { "dependencies": {
"websocket": { "websocket": {
"version": "git://github.com/frozeman/WebSocket-Node.git#6c72925e3f8aaaea8dc8450f97627e85263999f2", "version": "git://github.com/frozeman/WebSocket-Node.git#6c72925e3f8aaaea8dc8450f97627e85263999f2",
"from": "git://github.com/frozeman/WebSocket-Node.git#browserifyCompatible", "from": "git://github.com/frozeman/WebSocket-Node.git#6c72925e3f8aaaea8dc8450f97627e85263999f2",
"requires": { "requires": {
"debug": "^2.2.0", "debug": "^2.2.0",
"nan": "^2.3.3", "nan": "^2.3.3",
"typedarray-to-buffer": "^3.1.2", "typedarray-to-buffer": "^3.1.2",
"yaeti": "^0.0.6" "yaeti": "^0.0.6"
},
"dependencies": {
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"requires": {
"ms": "2.0.0"
}
}
} }
} }
} }
@ -17112,6 +17111,7 @@
"version": "git://github.com/frozeman/WebSocket-Node.git#6c72925e3f8aaaea8dc8450f97627e85263999f2", "version": "git://github.com/frozeman/WebSocket-Node.git#6c72925e3f8aaaea8dc8450f97627e85263999f2",
"from": "git://github.com/frozeman/WebSocket-Node.git#browserifyCompatible", "from": "git://github.com/frozeman/WebSocket-Node.git#browserifyCompatible",
"requires": { "requires": {
"debug": "^2.2.0",
"nan": "^2.3.3", "nan": "^2.3.3",
"typedarray-to-buffer": "^3.1.2", "typedarray-to-buffer": "^3.1.2",
"yaeti": "^0.0.6" "yaeti": "^0.0.6"
@ -20921,8 +20921,19 @@
"integrity": "sha1-fecPG4Py3jZHZ3IVa+z+9uNRbrM=", "integrity": "sha1-fecPG4Py3jZHZ3IVa+z+9uNRbrM=",
"requires": { "requires": {
"underscore": "1.8.3", "underscore": "1.8.3",
"web3-core-helpers": "1.0.0-beta.34", "web3-core-helpers": "1.0.0-beta.34"
"websocket": "git://github.com/frozeman/WebSocket-Node.git#6c72925e3f8aaaea8dc8450f97627e85263999f2" },
"dependencies": {
"websocket": {
"version": "git://github.com/frozeman/WebSocket-Node.git#6c72925e3f8aaaea8dc8450f97627e85263999f2",
"from": "git://github.com/frozeman/WebSocket-Node.git#6c72925e3f8aaaea8dc8450f97627e85263999f2",
"requires": {
"debug": "^2.2.0",
"nan": "^2.3.3",
"typedarray-to-buffer": "^3.1.2",
"yaeti": "^0.0.6"
}
}
} }
}, },
"web3-shh": { "web3-shh": {
@ -21266,8 +21277,7 @@
"integrity": "sha1-bUZ4Geoi3foba6FJjTHZVU4rBt0=", "integrity": "sha1-bUZ4Geoi3foba6FJjTHZVU4rBt0=",
"requires": { "requires": {
"underscore": "1.8.3", "underscore": "1.8.3",
"web3-core-helpers": "1.0.0-beta.27", "web3-core-helpers": "1.0.0-beta.27"
"websocket": "git://github.com/frozeman/WebSocket-Node.git#6c72925e3f8aaaea8dc8450f97627e85263999f2"
}, },
"dependencies": { "dependencies": {
"debug": { "debug": {
@ -21285,7 +21295,7 @@
}, },
"websocket": { "websocket": {
"version": "git://github.com/frozeman/WebSocket-Node.git#6c72925e3f8aaaea8dc8450f97627e85263999f2", "version": "git://github.com/frozeman/WebSocket-Node.git#6c72925e3f8aaaea8dc8450f97627e85263999f2",
"from": "git://github.com/frozeman/WebSocket-Node.git#browserifyCompatible", "from": "git://github.com/frozeman/WebSocket-Node.git#6c72925e3f8aaaea8dc8450f97627e85263999f2",
"requires": { "requires": {
"debug": "^2.2.0", "debug": "^2.2.0",
"nan": "^2.3.3", "nan": "^2.3.3",
@ -21351,10 +21361,6 @@
} }
} }
}, },
"webcrypto-shim": {
"version": "github:dignifiedquire/webcrypto-shim#190bc9ec341375df6025b17ae12ddb2428ea49c8",
"from": "github:dignifiedquire/webcrypto-shim#master"
},
"webidl-conversions": { "webidl-conversions": {
"version": "4.0.2", "version": "4.0.2",
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz",

View File

@ -8,6 +8,7 @@ const web3 = require('web3');
const constants = require('../constants'); const constants = require('../constants');
const {canonicalHost, defaultHost} = require('../utils/host'); const {canonicalHost, defaultHost} = require('../utils/host');
const cloneDeep = require('lodash.clonedeep'); const cloneDeep = require('lodash.clonedeep');
import { extendZeroAddressShorthand, replaceZeroAddressShorthand } from '../utils/addressUtils';
const DEFAULT_CONFIG_PATH = 'config/'; const DEFAULT_CONFIG_PATH = 'config/';
const unitRegex = /([0-9]+) ([a-zA-Z]+)/; const unitRegex = /([0-9]+) ([a-zA-Z]+)/;
@ -299,16 +300,47 @@ Config.prototype.loadContractsConfigFile = function() {
} }
}); });
} }
Object.keys(newContractsConfig.contracts).forEach(contractName => { Object.keys(newContractsConfig.contracts).forEach(contractName => {
let gas = newContractsConfig.contracts[contractName].gas;
let gasPrice = newContractsConfig.contracts[contractName].gasPrice; const gas = newContractsConfig.contracts[contractName].gas;
if (gas && gas.match(unitRegex)) { const gasPrice = newContractsConfig.contracts[contractName].gasPrice;
newContractsConfig.contracts[contractName].gas = utils.getWeiBalanceFromString(gas, web3); const address = newContractsConfig.contracts[contractName].address;
} const args = newContractsConfig.contracts[contractName].args;
if (gasPrice && gasPrice.match(unitRegex)) { const onDeploy = newContractsConfig.contracts[contractName].onDeploy;
newContractsConfig.contracts[contractName].gasPrice = utils.getWeiBalanceFromString(gasPrice, web3);
} if (gas && gas.match(unitRegex)) {
newContractsConfig.contracts[contractName].gas = utils.getWeiBalanceFromString(gas, web3);
}
if (gasPrice && gasPrice.match(unitRegex)) {
newContractsConfig.contracts[contractName].gasPrice = utils.getWeiBalanceFromString(gasPrice, web3);
}
if (address) {
newContractsConfig.contracts[contractName].address = extendZeroAddressShorthand(address);
}
if (args && args.length) {
newContractsConfig.contracts[contractName].args = args.map(val => {
if (typeof val === 'string') {
return extendZeroAddressShorthand(val);
}
return val;
});
}
if (onDeploy && onDeploy.length) {
newContractsConfig.contracts[contractName].onDeploy = onDeploy.map(replaceZeroAddressShorthand);
}
}); });
const afterDeploy = newContractsConfig.contracts.afterDeploy;
if (afterDeploy && afterDeploy.length) {
newContractsConfig.contracts.afterDeploy = afterDeploy.map(replaceZeroAddressShorthand);
}
if (!deepEqual(newContractsConfig, this.contractsConfig)) { if (!deepEqual(newContractsConfig, this.contractsConfig)) {
this.contractsConfig = newContractsConfig; this.contractsConfig = newContractsConfig;
} }

View File

@ -0,0 +1,14 @@
const ZERO_ADDRESS_SHORTHAND_REGEX = /^0x0$/;
const ZERO_ADDRESS_SHORTHAND_SEARCH_REGEX = /'0x0'/g;
const ZERO_ADDRESS = "0x0000000000000000000000000000000000000000";
export function extendZeroAddressShorthand(value: string) {
if (value.match(ZERO_ADDRESS_SHORTHAND_REGEX) !== null) {
return ZERO_ADDRESS;
}
return value;
}
export function replaceZeroAddressShorthand(value: string) {
return value.replace(ZERO_ADDRESS_SHORTHAND_SEARCH_REGEX, `'${ZERO_ADDRESS}'`);
}

View File

@ -130,6 +130,38 @@ describe('embark.Config', function () {
assert.deepEqual(config.contractsConfig, expectedConfig); assert.deepEqual(config.contractsConfig, expectedConfig);
}); });
it('should replace occourences of `0x0` with full zero addresses', () => {
let expectedConfig = {
versions: {'web3': '1.0.0-beta', solc: '0.4.25'},
deployment: {host: 'localhost', port: 8545, type: 'rpc'},
dappConnection: ['$WEB3', 'localhost:8545'],
"gas": "auto",
"strategy": "implicit",
"contracts": {
"SimpleStorage": {
"args": [100, '0x0000000000000000000000000000000000000000'],
"address": '0x0000000000000000000000000000000000000000',
"onDeploy": [
"SimpleStorage.methods.changeAddress('0x0000000000000000000000000000000000000000')"
]
},
"afterDeploy": [
"SimpleStorage.methods.changeAddress('0x0000000000000000000000000000000000000000')",
"SimpleStorage.methods.changeAddress('$SomeToken')"
]
}
};
let zeroAddressconfig = new Config({
env: 'zeroaddress',
configDir: './dist/test/test1/config/',
events: new Events()
});
zeroAddressconfig.plugins = new Plugins({plugins: {}});
zeroAddressconfig.logger = new TestLogger({});
zeroAddressconfig.loadContractsConfigFile();
assert.deepEqual(zeroAddressconfig.contractsConfig, expectedConfig);
});
}); });
describe('#loadExternalContractsFiles', function () { describe('#loadExternalContractsFiles', function () {

View File

@ -9,6 +9,25 @@
} }
} }
}, },
"zeroaddress": {
"gas": "auto",
"contracts": {
"SimpleStorage": {
"address": "0x0",
"args": [
100,
"0x0"
],
"onDeploy": [
"SimpleStorage.methods.changeAddress('0x0')"
]
},
"afterDeploy": [
"SimpleStorage.methods.changeAddress('0x0')",
"SimpleStorage.methods.changeAddress('$SomeToken')"
]
}
},
"myenv": { "myenv": {
"gas": "400 Kwei", "gas": "400 Kwei",
"contracts": { "contracts": {