diff options
-rw-r--r-- | .circleci/config.yml | 99 | ||||
-rw-r--r-- | package.json | 2 | ||||
-rw-r--r-- | packages/0x.js/package.json | 9 | ||||
-rwxr-xr-x | packages/0x.js/scripts/test_umd.sh | 6 | ||||
-rw-r--r-- | packages/0x.js/src/globals.d.ts | 12 | ||||
-rw-r--r-- | packages/0x.js/src/order_watcher/event_watcher.ts | 4 | ||||
-rw-r--r-- | packages/0x.js/test/utils/constants.ts | 2 | ||||
-rw-r--r-- | packages/contracts/package.json | 3 | ||||
-rw-r--r-- | packages/dev-utils/src/rpc.ts | 2 | ||||
-rw-r--r-- | packages/tslint-config/tslint.json | 1 | ||||
-rw-r--r-- | packages/website/ts/components/eth_weth_conversion_button.tsx | 2 | ||||
-rw-r--r-- | packages/website/ts/components/generate_order/generate_order_form.tsx | 2 | ||||
-rw-r--r-- | packages/website/ts/components/inputs/allowance_toggle.tsx | 2 | ||||
-rw-r--r-- | packages/website/ts/components/token_balances.tsx | 2 | ||||
-rw-r--r-- | yarn.lock | 2 |
15 files changed, 112 insertions, 38 deletions
diff --git a/.circleci/config.yml b/.circleci/config.yml index 85b055571..d95940898 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -6,24 +6,117 @@ jobs: - image: circleci/node:6.12 environment: CONTRACTS_COMMIT_HASH: '9ed05f5' + working_directory: ~/repo steps: - checkout - run: echo 'export PATH=$HOME/CIRCLE_PROJECT_REPONAME/node_modules/.bin:$PATH' >> $BASH_ENV + - restore_cache: + key: dependency-cache-{{ checksum "package.json" }} - run: name: yarn - command: yarn + command: yarn --frozen-lockfile - save_cache: key: dependency-cache-{{ checksum "package.json" }} paths: - - ~/.cache/yarn + - ./node_modules - run: wget https://s3.amazonaws.com/testrpc-shapshots/${CONTRACTS_COMMIT_HASH}.zip - run: unzip ${CONTRACTS_COMMIT_HASH}.zip -d testrpc_snapshot - run: node ./node_modules/lerna/bin/lerna.js bootstrap - run: yarn lerna:run build + - save_cache: + key: repo-{{ .Environment.CIRCLE_SHA1 }} + paths: + - ~/repo + test-0xjs: + docker: + - image: circleci/node:6.12 + working_directory: ~/repo + steps: + - restore_cache: + keys: + - repo-{{ .Environment.CIRCLE_SHA1 }} - run: name: testrpc command: npm run testrpc -- --db testrpc_snapshot background: true - - run: yarn lerna:run test:circleci + - run: yarn lerna:run --scope 0x.js test:circleci + test-contracts: + docker: + - image: circleci/node:6.12 + working_directory: ~/repo + steps: + - restore_cache: + keys: + - repo-{{ .Environment.CIRCLE_SHA1 }} + - run: + name: testrpc + command: npm run testrpc -- --db testrpc_snapshot + background: true + - run: yarn lerna:run --scope contracts test:circleci:contracts + test-deployer: + docker: + - image: circleci/node:6.12 + working_directory: ~/repo + steps: + - restore_cache: + keys: + - repo-{{ .Environment.CIRCLE_SHA1 }} + - run: + name: testrpc + command: npm run testrpc -- --db testrpc_snapshot + background: true + - run: yarn lerna:run --scope contracts test:circleci:deployer + test-rest: + docker: + - image: circleci/node:6.12 + working_directory: ~/repo + steps: + - restore_cache: + keys: + - repo-{{ .Environment.CIRCLE_SHA1 }} + - run: + name: testrpc + command: npm run testrpc -- --db testrpc_snapshot + background: true + - run: yarn lerna:run --ignore contracts --ignore 0x.js --ignore subproviders test:circleci + lint: + working_directory: ~/repo + docker: + - image: circleci/node:6.12 + steps: + - restore_cache: + keys: + - repo-{{ .Environment.CIRCLE_SHA1 }} - run: yarn lerna:run lint + prettier: + working_directory: ~/repo + docker: + - image: circleci/node:6.12 + steps: + - restore_cache: + keys: + - repo-{{ .Environment.CIRCLE_SHA1 }} - run: yarn prettier:ci +workflows: + version: 2 + main: + jobs: + - build + - test-0xjs: + requires: + - build + - test-contracts: + requires: + - build + - test-deployer: + requires: + - build + - test-rest: + requires: + - build + - prettier: + requires: + - build + - lint: + requires: + - build diff --git a/package.json b/package.json index 597e61886..d0e6966cd 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ "devDependencies": { "@0xproject/utils": "^0.1.0", "async-child-process": "^1.1.1", - "ethereumjs-testrpc": "6.0.3", + "ethereumjs-testrpc": "^6.0.3", "lerna": "^2.5.1", "prettier": "1.9.2", "publish-release": "0xproject/publish-release", diff --git a/packages/0x.js/package.json b/packages/0x.js/package.json index 99da45ffb..1405e1bf7 100644 --- a/packages/0x.js/package.json +++ b/packages/0x.js/package.json @@ -14,21 +14,16 @@ "generate_contract_wrappers": "node ../abi-gen/lib/index.js --abiGlob 'src/artifacts/@(Exchange|Token|TokenTransferProxy|EtherToken|TokenRegistry|DummyToken).json' --templates contract_templates --output src/contract_wrappers/generated", "lint": "tslint --project . 'src/**/*.ts' 'test/**/*.ts'", - "test:circleci": - "run-s test:coverage report_test_coverage && if [ $CIRCLE_BRANCH = \"development\" ]; then yarn test:umd; fi", + "test:circleci": "run-s test:coverage report_test_coverage", "test": "run-s clean test:commonjs", - "test:umd": "./scripts/test_umd.sh", "test:coverage": "nyc npm run test --all", "report_test_coverage": "nyc report --reporter=text-lcov | coveralls", "update_contracts": "for i in ${npm_package_config_artifacts}; do copyfiles -u 4 ../contracts/build/contracts/$i.json ../0x.js/src/artifacts; done;", "clean": "shx rm -rf _bundles lib test_temp", - "build:umd:dev": "webpack", "build:umd:prod": "NODE_ENV=production webpack", "build:commonjs": "tsc && copyfiles -u 2 './src/artifacts/**/*.json' ./lib/src/artifacts;", "test:commonjs": "run-s build:commonjs run_mocha", - "pretest:umd": "run-s clean build:umd:dev build:commonjs", - "substitute_umd_bundle": "shx mv _bundles/* lib/src", "run_mocha": "mocha lib/test/**/*_test.js --timeout 10000 --bail --exit" }, "config": { @@ -88,11 +83,9 @@ "@0xproject/web3-wrapper": "^0.1.5", "bintrees": "^1.0.2", "bn.js": "^4.11.8", - "compare-versions": "^3.0.1", "ethereumjs-abi": "^0.6.4", "ethereumjs-blockstream": "^2.0.6", "ethereumjs-util": "^5.1.1", - "find-versions": "^2.0.0", "js-sha3": "^0.6.1", "lodash": "^4.17.4", "uuid": "^3.1.0", diff --git a/packages/0x.js/scripts/test_umd.sh b/packages/0x.js/scripts/test_umd.sh deleted file mode 100755 index e3eba088a..000000000 --- a/packages/0x.js/scripts/test_umd.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/env bash -# This script runs umd tests and cleans up after them while preserving the `return_code` for CI -# UMD tests should only be run after building the commonjs because they reuse some of the commonjs build artifacts -run-s substitute_umd_bundle run_mocha -return_code=$? -exit $return_code diff --git a/packages/0x.js/src/globals.d.ts b/packages/0x.js/src/globals.d.ts index ff8e00b69..4f4932b6e 100644 --- a/packages/0x.js/src/globals.d.ts +++ b/packages/0x.js/src/globals.d.ts @@ -25,18 +25,6 @@ declare module '*.json' { /* tslint:enable */ } -// find-version declarations -declare function findVersions(version: string): string[]; -declare module 'find-versions' { - export = findVersions; -} - -// compare-version declarations -declare function compareVersions(firstVersion: string, secondVersion: string): number; -declare module 'compare-versions' { - export = compareVersions; -} - declare module 'ethereumjs-abi' { const soliditySHA3: (argTypes: string[], args: any[]) => Buffer; } diff --git a/packages/0x.js/src/order_watcher/event_watcher.ts b/packages/0x.js/src/order_watcher/event_watcher.ts index 43a60957b..5d05bfb60 100644 --- a/packages/0x.js/src/order_watcher/event_watcher.ts +++ b/packages/0x.js/src/order_watcher/event_watcher.ts @@ -51,6 +51,10 @@ export class EventWatcher { } private async _pollForBlockchainEventsAsync(callback: EventWatcherCallback): Promise<void> { const pendingEvents = await this._getEventsAsync(); + if (_.isUndefined(pendingEvents)) { + // HACK: This should never happen, but happens frequently on CI due to a ganache bug + return; + } if (pendingEvents.length === 0) { // HACK: Sometimes when node rebuilds the pending block we get back the empty result. // We don't want to emit a lot of removal events and bring them back after a couple of miliseconds, diff --git a/packages/0x.js/test/utils/constants.ts b/packages/0x.js/test/utils/constants.ts index 7b6b2ee7b..a9e665c25 100644 --- a/packages/0x.js/test/utils/constants.ts +++ b/packages/0x.js/test/utils/constants.ts @@ -1,6 +1,6 @@ export const constants = { NULL_ADDRESS: '0x0000000000000000000000000000000000000000', - RPC_URL: 'http://localhost:8545/', + RPC_URL: 'http://localhost:8545', ROPSTEN_NETWORK_ID: 3, KOVAN_NETWORK_ID: 42, TESTRPC_NETWORK_ID: 50, diff --git a/packages/contracts/package.json b/packages/contracts/package.json index 2991201c3..1cf716f92 100644 --- a/packages/contracts/package.json +++ b/packages/contracts/package.json @@ -16,7 +16,8 @@ "migrate:truffle": "npm run build; truffle migrate", "migrate": "npm run build; node lib/deploy/cli.js migrate", "lint": "tslint --project . 'migrations/**/*.ts' 'test/**/*.ts' 'util/**/*.ts' 'deploy/**/*.ts'", - "test:circleci": "yarn test; yarn test:deployer", + "test:circleci:contracts": "yarn test", + "test:circleci:deployer": "yarn test:deployer", "test:deployer": "npm run build; mocha lib/deploy/test/*_test.js" }, "repository": { diff --git a/packages/dev-utils/src/rpc.ts b/packages/dev-utils/src/rpc.ts index cf6678f81..36f8b1ef9 100644 --- a/packages/dev-utils/src/rpc.ts +++ b/packages/dev-utils/src/rpc.ts @@ -41,7 +41,7 @@ export class RPC { method, params, }); - this._url += 1; + this._id += 1; return payload; } private async _sendAsync(payload: string): Promise<any> { diff --git a/packages/tslint-config/tslint.json b/packages/tslint-config/tslint.json index 486780de6..971588b08 100644 --- a/packages/tslint-config/tslint.json +++ b/packages/tslint-config/tslint.json @@ -60,6 +60,7 @@ "prefer-function-over-method": true, "promise-function-async": true, "quotemark": [true, "single", "avoid-escape", "jsx-double"], + "restrict-plus-operands": true, "semicolon": [true, "always"], "space-before-function-paren": [ true, diff --git a/packages/website/ts/components/eth_weth_conversion_button.tsx b/packages/website/ts/components/eth_weth_conversion_button.tsx index f2c505207..300e71f1f 100644 --- a/packages/website/ts/components/eth_weth_conversion_button.tsx +++ b/packages/website/ts/components/eth_weth_conversion_button.tsx @@ -105,7 +105,7 @@ export class EthWethConversionButton extends React.Component< } this.props.onConversionSuccessful(); } catch (err) { - const errMsg = '' + err; + const errMsg = `${err}`; if (_.includes(errMsg, BlockchainCallErrs.UserHasNoAssociatedAddresses)) { this.props.dispatcher.updateShouldBlockchainErrDialogBeOpen(true); } else if (!_.includes(errMsg, 'User denied transaction')) { diff --git a/packages/website/ts/components/generate_order/generate_order_form.tsx b/packages/website/ts/components/generate_order/generate_order_form.tsx index 3144fc3bd..3ae0d48a7 100644 --- a/packages/website/ts/components/generate_order/generate_order_form.tsx +++ b/packages/website/ts/components/generate_order/generate_order_form.tsx @@ -329,7 +329,7 @@ export class GenerateOrderForm extends React.Component<GenerateOrderFormProps, G ${validationResult.errors}`); } } catch (err) { - const errMsg = '' + err; + const errMsg = `${err}`; if (utils.didUserDenyWeb3Request(errMsg)) { globalErrMsg = 'User denied sign request'; } else { diff --git a/packages/website/ts/components/inputs/allowance_toggle.tsx b/packages/website/ts/components/inputs/allowance_toggle.tsx index 1be441e17..da46db4f4 100644 --- a/packages/website/ts/components/inputs/allowance_toggle.tsx +++ b/packages/website/ts/components/inputs/allowance_toggle.tsx @@ -77,7 +77,7 @@ export class AllowanceToggle extends React.Component<AllowanceToggleProps, Allow this.setState({ isSpinnerVisible: false, }); - const errMsg = '' + err; + const errMsg = `${err}`; if (_.includes(errMsg, 'User denied transaction')) { return; } diff --git a/packages/website/ts/components/token_balances.tsx b/packages/website/ts/components/token_balances.tsx index 112b3fe60..5e7b4e9f6 100644 --- a/packages/website/ts/components/token_balances.tsx +++ b/packages/website/ts/components/token_balances.tsx @@ -514,7 +514,7 @@ export class TokenBalances extends React.Component<TokenBalancesProps, TokenBala this.props.dispatcher.showFlashMessage(`Successfully minted ${amount.toString(10)} ${token.symbol}`); return true; } catch (err) { - const errMsg = '' + err; + const errMsg = `${err}`; if (_.includes(errMsg, BlockchainCallErrs.UserHasNoAssociatedAddresses)) { this.props.dispatcher.updateShouldBlockchainErrDialogBeOpen(true); return false; @@ -3184,7 +3184,7 @@ ethereumjs-blockstream@^2.0.6: source-map-support "0.4.14" uuid "3.0.1" -ethereumjs-testrpc@6.0.3: +ethereumjs-testrpc@^6.0.3: version "6.0.3" resolved "https://registry.yarnpkg.com/ethereumjs-testrpc/-/ethereumjs-testrpc-6.0.3.tgz#7a0b87bf3670f92f607f98fa6a78801d9741b124" dependencies: |