aboutsummaryrefslogtreecommitdiffstats
path: root/packages/contracts/src/utils
diff options
context:
space:
mode:
authorFabio Berger <me@fabioberger.com>2018-06-19 18:35:32 +0800
committerFabio Berger <me@fabioberger.com>2018-06-19 18:35:32 +0800
commit08ea71cb243067d8f4a4b08b2ed83ee11225d494 (patch)
tree0b9e213e05a050ede2be9d11ed2e040dc0947a81 /packages/contracts/src/utils
parent0d0c1af7f741834f076a604b776d4542c4dbb6ec (diff)
parent0bfcf79e79b762a9fb98e90b8e6310c781cfae97 (diff)
downloaddexon-sol-tools-08ea71cb243067d8f4a4b08b2ed83ee11225d494.tar
dexon-sol-tools-08ea71cb243067d8f4a4b08b2ed83ee11225d494.tar.gz
dexon-sol-tools-08ea71cb243067d8f4a4b08b2ed83ee11225d494.tar.bz2
dexon-sol-tools-08ea71cb243067d8f4a4b08b2ed83ee11225d494.tar.lz
dexon-sol-tools-08ea71cb243067d8f4a4b08b2ed83ee11225d494.tar.xz
dexon-sol-tools-08ea71cb243067d8f4a4b08b2ed83ee11225d494.tar.zst
dexon-sol-tools-08ea71cb243067d8f4a4b08b2ed83ee11225d494.zip
Merge branch 'v2-prototype' into feature/combinatorial-testing
* v2-prototype: (40 commits) Increase number of columns in relayer grid for small screens Make isValidSignature public Make batchFill methods return FIllResults struct Remove remove_tags script Small fixes Use semver package instead of getNextPatchVersion Use semver library instead of semverUtils small fixes Show all errors of a given kind at once rather then throwing after the first instance is encountered fix package.json Add more prepublish checks remove remove_tags script Create a shared Image component Adjust version in changelog Update RelayerGridTile render logic to incorportate colors and logos Add max width to top bar Set max-width for LargeLayout Finish last onboarding step Finish set allowance step Add onboarding assets ...
Diffstat (limited to 'packages/contracts/src/utils')
-rw-r--r--packages/contracts/src/utils/revert_trace.ts21
-rw-r--r--packages/contracts/src/utils/web3_wrapper.ts15
2 files changed, 32 insertions, 4 deletions
diff --git a/packages/contracts/src/utils/revert_trace.ts b/packages/contracts/src/utils/revert_trace.ts
new file mode 100644
index 000000000..0bf8384bc
--- /dev/null
+++ b/packages/contracts/src/utils/revert_trace.ts
@@ -0,0 +1,21 @@
+import { devConstants } from '@0xproject/dev-utils';
+import { RevertTraceSubprovider, SolCompilerArtifactAdapter } from '@0xproject/sol-cov';
+import * as _ from 'lodash';
+
+let revertTraceSubprovider: RevertTraceSubprovider;
+
+export const revertTrace = {
+ getRevertTraceSubproviderSingleton(): RevertTraceSubprovider {
+ if (_.isUndefined(revertTraceSubprovider)) {
+ revertTraceSubprovider = revertTrace._getRevertTraceSubprovider();
+ }
+ return revertTraceSubprovider;
+ },
+ _getRevertTraceSubprovider(): RevertTraceSubprovider {
+ const defaultFromAddress = devConstants.TESTRPC_FIRST_ADDRESS;
+ const solCompilerArtifactAdapter = new SolCompilerArtifactAdapter();
+ const isVerbose = true;
+ const subprovider = new RevertTraceSubprovider(solCompilerArtifactAdapter, defaultFromAddress, isVerbose);
+ return subprovider;
+ },
+};
diff --git a/packages/contracts/src/utils/web3_wrapper.ts b/packages/contracts/src/utils/web3_wrapper.ts
index c475d96a9..c9d83a02d 100644
--- a/packages/contracts/src/utils/web3_wrapper.ts
+++ b/packages/contracts/src/utils/web3_wrapper.ts
@@ -2,9 +2,11 @@ import { devConstants, env, EnvVars, web3Factory } from '@0xproject/dev-utils';
import { prependSubprovider } from '@0xproject/subproviders';
import { logUtils } from '@0xproject/utils';
import { Web3Wrapper } from '@0xproject/web3-wrapper';
+import * as _ from 'lodash';
import { coverage } from './coverage';
import { profiler } from './profiler';
+import { revertTrace } from './revert_trace';
enum ProviderType {
Ganache = 'ganache',
@@ -48,10 +50,11 @@ const providerConfigs = testProvider === ProviderType.Ganache ? ganacheConfigs :
export const provider = web3Factory.getRpcProvider(providerConfigs);
const isCoverageEnabled = env.parseBoolean(EnvVars.SolidityCoverage);
const isProfilerEnabled = env.parseBoolean(EnvVars.SolidityProfiler);
-if (isCoverageEnabled && isProfilerEnabled) {
- throw new Error(
- `Unfortunately for now you can't enable both coverage and profiler at the same time. They both use coverage.json file and there is no way to configure that.`,
- );
+const isRevertTraceEnabled = env.parseBoolean(EnvVars.SolidityRevertTrace);
+const enabledSubproviderCount = _.filter([isCoverageEnabled, isProfilerEnabled, isRevertTraceEnabled], _.identity)
+ .length;
+if (enabledSubproviderCount > 1) {
+ throw new Error(`Only one of coverage, profiler, or revert trace subproviders can be enabled at a time`);
}
if (isCoverageEnabled) {
const coverageSubprovider = coverage.getCoverageSubproviderSingleton();
@@ -71,5 +74,9 @@ if (isProfilerEnabled) {
profilerSubprovider.stop();
prependSubprovider(provider, profilerSubprovider);
}
+if (isRevertTraceEnabled) {
+ const revertTraceSubprovider = revertTrace.getRevertTraceSubproviderSingleton();
+ prependSubprovider(provider, revertTraceSubprovider);
+}
export const web3Wrapper = new Web3Wrapper(provider);