diff options
author | Fabio Berger <me@fabioberger.com> | 2018-04-12 07:53:32 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-04-12 07:53:32 +0800 |
commit | c47fb8f9a83d409c092dd7449054fa16cf0fa1c9 (patch) | |
tree | 3e5e1b9f8e4588f811b203806ffde6864f0e09de /packages/contracts | |
parent | e8d4f6d5322930cf8618abcb9fea7c773a87ecd7 (diff) | |
parent | 27b915789efcacbeb0bfbe943f917c590cfaff4a (diff) | |
download | dexon-sol-tools-c47fb8f9a83d409c092dd7449054fa16cf0fa1c9.tar dexon-sol-tools-c47fb8f9a83d409c092dd7449054fa16cf0fa1c9.tar.gz dexon-sol-tools-c47fb8f9a83d409c092dd7449054fa16cf0fa1c9.tar.bz2 dexon-sol-tools-c47fb8f9a83d409c092dd7449054fa16cf0fa1c9.tar.lz dexon-sol-tools-c47fb8f9a83d409c092dd7449054fa16cf0fa1c9.tar.xz dexon-sol-tools-c47fb8f9a83d409c092dd7449054fa16cf0fa1c9.tar.zst dexon-sol-tools-c47fb8f9a83d409c092dd7449054fa16cf0fa1c9.zip |
Merge pull request #500 from 0xProject/removeMigrateStep
Run all tests against in-process Ganache
Diffstat (limited to 'packages/contracts')
-rw-r--r-- | packages/contracts/README.md | 11 | ||||
-rw-r--r-- | packages/contracts/migrations/config/multisig_sample.ts | 10 | ||||
-rw-r--r-- | packages/contracts/migrations/config/token_info.ts | 40 | ||||
-rw-r--r-- | packages/contracts/migrations/index.ts | 20 | ||||
-rw-r--r-- | packages/contracts/migrations/migrate.ts | 90 | ||||
-rw-r--r-- | packages/contracts/migrations/types.ts | 23 | ||||
-rw-r--r-- | packages/contracts/package.json | 7 | ||||
-rw-r--r-- | packages/contracts/test/multi_sig_with_time_lock.ts | 4 | ||||
-rw-r--r-- | packages/contracts/test/token_registry.ts | 6 | ||||
-rw-r--r-- | packages/contracts/test/utils/deployer.ts | 2 | ||||
-rw-r--r-- | packages/contracts/test/utils/web3_wrapper.ts | 5 | ||||
-rw-r--r-- | packages/contracts/util/constants.ts | 1 |
12 files changed, 12 insertions, 207 deletions
diff --git a/packages/contracts/README.md b/packages/contracts/README.md index 286ef019c..16e253549 100644 --- a/packages/contracts/README.md +++ b/packages/contracts/README.md @@ -72,17 +72,6 @@ yarn lint ### Run Tests -Before running the tests, you will need to spin up a [TestRPC](https://www.npmjs.com/package/ethereumjs-testrpc) instance. - -In a separate terminal, start TestRPC (a convenience command is provided as part of the [0x.js monorepo](https://github.com/0xProject/0x-monorepo)) - -```bash -cd ../.. -yarn testrpc -``` - -Then in your main terminal run - ```bash yarn test ``` diff --git a/packages/contracts/migrations/config/multisig_sample.ts b/packages/contracts/migrations/config/multisig_sample.ts deleted file mode 100644 index bc2502fca..000000000 --- a/packages/contracts/migrations/config/multisig_sample.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { MultiSigConfigByNetwork } from '../types'; - -// Make a copy of this file named `multisig.js` and input custom params as needed -export const multiSig: MultiSigConfigByNetwork = { - kovan: { - owners: [], - confirmationsRequired: 0, - secondsRequired: 0, - }, -}; diff --git a/packages/contracts/migrations/config/token_info.ts b/packages/contracts/migrations/config/token_info.ts deleted file mode 100644 index 5fd3db144..000000000 --- a/packages/contracts/migrations/config/token_info.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { constants } from '../../util/constants'; -import { Token } from '../types'; - -export const tokenInfo: Token[] = [ - { - name: 'Augur Reputation Token', - symbol: 'REP', - decimals: 18, - ipfsHash: constants.NULL_BYTES, - swarmHash: constants.NULL_BYTES, - }, - { - name: 'Digix DAO Token', - symbol: 'DGD', - decimals: 18, - ipfsHash: constants.NULL_BYTES, - swarmHash: constants.NULL_BYTES, - }, - { - name: 'Golem Network Token', - symbol: 'GNT', - decimals: 18, - ipfsHash: constants.NULL_BYTES, - swarmHash: constants.NULL_BYTES, - }, - { - name: 'MakerDAO', - symbol: 'MKR', - decimals: 18, - ipfsHash: constants.NULL_BYTES, - swarmHash: constants.NULL_BYTES, - }, - { - name: 'Melon Token', - symbol: 'MLN', - decimals: 18, - ipfsHash: constants.NULL_BYTES, - swarmHash: constants.NULL_BYTES, - }, -]; diff --git a/packages/contracts/migrations/index.ts b/packages/contracts/migrations/index.ts deleted file mode 100644 index 47ae7044d..000000000 --- a/packages/contracts/migrations/index.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { Deployer } from '@0xproject/deployer'; -import { devConstants } from '@0xproject/dev-utils'; -import * as path from 'path'; - -import { constants } from '../util/constants'; - -import { runMigrationsAsync } from './migrate'; - -const deployerOpts = { - artifactsDir: path.resolve('src', 'artifacts'), - jsonrpcUrl: devConstants.RPC_URL, - networkId: constants.TESTRPC_NETWORK_ID, - defaults: { - gas: devConstants.GAS_ESTIMATE, - }, -}; - -export const deployer = new Deployer(deployerOpts); - -runMigrationsAsync(deployer).catch(console.log); diff --git a/packages/contracts/migrations/migrate.ts b/packages/contracts/migrations/migrate.ts deleted file mode 100644 index cff8af0ab..000000000 --- a/packages/contracts/migrations/migrate.ts +++ /dev/null @@ -1,90 +0,0 @@ -import { Deployer } from '@0xproject/deployer'; -import { BigNumber } from '@0xproject/utils'; -import { Web3Wrapper } from '@0xproject/web3-wrapper'; -import * as _ from 'lodash'; - -import { constants } from '../util/constants'; -import { ContractName } from '../util/types'; - -import { tokenInfo } from './config/token_info'; - -/** - * Custom migrations should be defined in this function. This will be called with the CLI 'migrate' command. - * Migrations could be written to run in parallel, but if you want contract addresses to be created deterministically, - * the migration should be written to run synchronously. - * @param deployer Deployer instance. - */ -export const runMigrationsAsync = async (deployer: Deployer) => { - const web3Wrapper: Web3Wrapper = deployer.web3Wrapper; - const accounts: string[] = await web3Wrapper.getAvailableAddressesAsync(); - - const tokenTransferProxy = await deployer.deployAndSaveAsync(ContractName.TokenTransferProxy); - const zrxToken = await deployer.deployAndSaveAsync(ContractName.ZRXToken); - const etherToken = await deployer.deployAndSaveAsync(ContractName.EtherToken); - const tokenReg = await deployer.deployAndSaveAsync(ContractName.TokenRegistry); - - const exchangeArgs = [zrxToken.address, tokenTransferProxy.address]; - const owners = [accounts[0], accounts[1]]; - const confirmationsRequired = new BigNumber(2); - const secondsRequired = new BigNumber(0); - const multiSigArgs = [owners, confirmationsRequired, secondsRequired, tokenTransferProxy.address]; - const exchange = await deployer.deployAndSaveAsync(ContractName.Exchange, exchangeArgs); - const multiSig = await deployer.deployAndSaveAsync( - ContractName.MultiSigWalletWithTimeLockExceptRemoveAuthorizedAddress, - multiSigArgs, - ); - - const owner = accounts[0]; - await tokenTransferProxy.addAuthorizedAddress.sendTransactionAsync(exchange.address, { from: owner }); - await tokenTransferProxy.transferOwnership.sendTransactionAsync(multiSig.address, { from: owner }); - const addTokenGasEstimate = await tokenReg.addToken.estimateGasAsync( - zrxToken.address, - tokenInfo[0].name, - tokenInfo[0].symbol, - tokenInfo[0].decimals, - tokenInfo[0].ipfsHash, - tokenInfo[0].swarmHash, - { from: owner }, - ); - await tokenReg.addToken.sendTransactionAsync( - zrxToken.address, - '0x Protocol Token', - 'ZRX', - 18, - constants.NULL_BYTES, - constants.NULL_BYTES, - { - from: owner, - gas: addTokenGasEstimate, - }, - ); - await tokenReg.addToken.sendTransactionAsync( - etherToken.address, - 'Ether Token', - 'WETH', - 18, - constants.NULL_BYTES, - constants.NULL_BYTES, - { - from: owner, - gas: addTokenGasEstimate, - }, - ); - for (const token of tokenInfo) { - const totalSupply = new BigNumber(0); - const args = [token.name, token.symbol, token.decimals, totalSupply]; - const dummyToken = await deployer.deployAsync(ContractName.DummyToken, args); - await tokenReg.addToken.sendTransactionAsync( - dummyToken.address, - token.name, - token.symbol, - token.decimals, - token.ipfsHash, - token.swarmHash, - { - from: owner, - gas: addTokenGasEstimate, - }, - ); - } -}; diff --git a/packages/contracts/migrations/types.ts b/packages/contracts/migrations/types.ts deleted file mode 100644 index 58d1e5b4f..000000000 --- a/packages/contracts/migrations/types.ts +++ /dev/null @@ -1,23 +0,0 @@ -export interface MultiSigConfig { - owners: string[]; - confirmationsRequired: number; - secondsRequired: number; -} - -export interface MultiSigConfigByNetwork { - [networkName: string]: MultiSigConfig; -} - -export interface Token { - address?: string; - name: string; - symbol: string; - decimals: number; - ipfsHash: string; - swarmHash: string; -} - -export interface TokenInfoByNetwork { - development: Token[]; - live: Token[]; -} diff --git a/packages/contracts/package.json b/packages/contracts/package.json index 752a947df..ad338bd5f 100644 --- a/packages/contracts/package.json +++ b/packages/contracts/package.json @@ -10,16 +10,15 @@ "scripts": { "build:watch": "tsc -w", "prebuild": "run-s clean compile copy_artifacts generate_contract_wrappers", - "copy_artifacts": "copyfiles './src/artifacts/**/*' ./lib", + "copy_artifacts": "copyfiles -u 4 '../migrations/src/artifacts/**/*' ./lib/src/artifacts;", "build": "tsc", "test": "run-s build run_mocha", "test:coverage": "SOLIDITY_COVERAGE=true run-s build run_mocha coverage:report:text coverage:report:lcov", "run_mocha": "mocha 'lib/test/**/*.js' --timeout 100000 --bail --exit", "compile:comment": "Yarn workspaces do not link binaries correctly so we need to reference them directly https://github.com/yarnpkg/yarn/issues/3846", - "compile": "node ../deployer/lib/src/cli.js compile --contracts ${npm_package_config_contracts} --contract-dirs src/contracts --artifacts-dir src/artifacts", + "compile": "node ../deployer/lib/src/cli.js compile --contracts ${npm_package_config_contracts} --contract-dirs src/contracts --artifacts-dir ../migrations/src/artifacts", "clean": "shx rm -rf ./lib", "generate_contract_wrappers": "node ../abi-gen/lib/index.js --abis ${npm_package_config_abis} --template ../contract_templates/contract.handlebars --partials '../contract_templates/partials/**/*.handlebars' --output src/contract_wrappers/generated --backend ethers && prettier --write 'src/contract_wrappers/generated/**.ts'", - "migrate": "yarn build && yarn compile && node ./lib/migrations/index.js", "lint": "tslint --project . 'migrations/**/*.ts' 'test/**/*.ts' 'util/**/*.ts' 'deploy/**/*.ts'", "coverage:report:text": "istanbul report text", "coverage:report:html": "istanbul report html && open coverage/index.html", @@ -27,7 +26,7 @@ "test:circleci": "yarn test:coverage" }, "config": { - "abis": "src/artifacts/@(DummyToken|TokenTransferProxy|Exchange|TokenRegistry|MultiSigWallet|MultiSigWalletWithTimeLock|MultiSigWalletWithTimeLockExceptRemoveAuthorizedAddress|TokenRegistry|ZRXToken|Arbitrage|EtherDelta|AccountLevels).json", + "abis": "../migrations/src/artifacts/@(DummyToken|TokenTransferProxy|Exchange|TokenRegistry|MultiSigWallet|MultiSigWalletWithTimeLock|MultiSigWalletWithTimeLockExceptRemoveAuthorizedAddress|TokenRegistry|ZRXToken|Arbitrage|EtherDelta|AccountLevels).json", "contracts": "Exchange,DummyToken,ZRXToken,Token,WETH9,TokenTransferProxy,MultiSigWallet,MultiSigWalletWithTimeLock,MultiSigWalletWithTimeLockExceptRemoveAuthorizedAddress,MaliciousToken,TokenRegistry,Arbitrage,EtherDelta,AccountLevels" }, "repository": { diff --git a/packages/contracts/test/multi_sig_with_time_lock.ts b/packages/contracts/test/multi_sig_with_time_lock.ts index ea74d4c7f..b7604457f 100644 --- a/packages/contracts/test/multi_sig_with_time_lock.ts +++ b/packages/contracts/test/multi_sig_with_time_lock.ts @@ -46,7 +46,7 @@ describe('MultiSigWalletWithTimeLock', () => { describe('changeTimeLock', () => { describe('initially non-time-locked', async () => { - before('deploy a walet', async () => { + before('deploy a wallet', async () => { const multiSigInstance = await deployer.deployAsync(ContractName.MultiSigWalletWithTimeLock, [ owners, SIGNATURES_REQUIRED, @@ -143,7 +143,7 @@ describe('MultiSigWalletWithTimeLock', () => { }); }); describe('initially time-locked', async () => { - before('deploy a walet', async () => { + before('deploy a wallet', async () => { const multiSigInstance = await deployer.deployAsync(ContractName.MultiSigWalletWithTimeLock, [ owners, SIGNATURES_REQUIRED, diff --git a/packages/contracts/test/token_registry.ts b/packages/contracts/test/token_registry.ts index 12fc52dbc..4c404176b 100644 --- a/packages/contracts/test/token_registry.ts +++ b/packages/contracts/test/token_registry.ts @@ -1,6 +1,6 @@ import { ZeroEx } from '0x.js'; import { BlockchainLifecycle, devConstants, web3Factory } from '@0xproject/dev-utils'; -import { BigNumber } from '@0xproject/utils'; +import { BigNumber, NULL_BYTES } from '@0xproject/utils'; import { Web3Wrapper } from '@0xproject/web3-wrapper'; import * as chai from 'chai'; import ethUtil = require('ethereumjs-util'); @@ -66,8 +66,8 @@ describe('TokenRegistry', () => { name: '', symbol: '', decimals: 0, - ipfsHash: constants.NULL_BYTES, - swarmHash: constants.NULL_BYTES, + ipfsHash: NULL_BYTES, + swarmHash: NULL_BYTES, }; describe('addToken', () => { diff --git a/packages/contracts/test/utils/deployer.ts b/packages/contracts/test/utils/deployer.ts index 45f79a2a4..2f0951475 100644 --- a/packages/contracts/test/utils/deployer.ts +++ b/packages/contracts/test/utils/deployer.ts @@ -8,7 +8,7 @@ import { web3 } from './web3_wrapper'; const deployerOpts = { provider: web3.currentProvider, - artifactsDir: path.resolve('src', 'artifacts'), + artifactsDir: path.resolve('lib', 'src', 'artifacts'), networkId: constants.TESTRPC_NETWORK_ID, defaults: { gas: devConstants.GAS_ESTIMATE, diff --git a/packages/contracts/test/utils/web3_wrapper.ts b/packages/contracts/test/utils/web3_wrapper.ts index 1a711dad2..dd6f198c4 100644 --- a/packages/contracts/test/utils/web3_wrapper.ts +++ b/packages/contracts/test/utils/web3_wrapper.ts @@ -1,7 +1,8 @@ import { web3Factory } from '@0xproject/dev-utils'; +import { Provider } from '@0xproject/types'; import { Web3Wrapper } from '@0xproject/web3-wrapper'; -const web3ProviderConfig = { shouldUseInProcessGanache: true }; -export const web3 = web3Factory.create(web3ProviderConfig); +const providerConfigs = { shouldUseInProcessGanache: true }; +export const web3 = web3Factory.create(providerConfigs); export const provider = web3.currentProvider; export const web3Wrapper = new Web3Wrapper(provider); diff --git a/packages/contracts/util/constants.ts b/packages/contracts/util/constants.ts index 9bb090a2a..d1152e683 100644 --- a/packages/contracts/util/constants.ts +++ b/packages/contracts/util/constants.ts @@ -4,7 +4,6 @@ const DUMMY_TOKEN_DECIMALS = 18; const DUMMY_TOKEN_TOTAL_SUPPLY = 0; export const constants = { - NULL_BYTES: '0x', INVALID_OPCODE: 'invalid opcode', REVERT: 'revert', TESTRPC_NETWORK_ID: 50, |