aboutsummaryrefslogtreecommitdiffstats
path: root/contracts/TESTING.md
diff options
context:
space:
mode:
authorLeonid Logvinov <logvinov.leon@gmail.com>2018-12-04 20:53:15 +0800
committerGitHub <noreply@github.com>2018-12-04 20:53:15 +0800
commit79f5e36edbd8a4483aac46032092dece95bb0b4c (patch)
treeb9c86a0badb2f1e82efa6354eede587368449a87 /contracts/TESTING.md
parenta1e985a1cac46ecbc54c7ef5b846fb5faf2bede2 (diff)
parenta87276341356e31e0712f42ada00ed5d55707a6b (diff)
downloaddexon-0x-contracts-79f5e36edbd8a4483aac46032092dece95bb0b4c.tar
dexon-0x-contracts-79f5e36edbd8a4483aac46032092dece95bb0b4c.tar.gz
dexon-0x-contracts-79f5e36edbd8a4483aac46032092dece95bb0b4c.tar.bz2
dexon-0x-contracts-79f5e36edbd8a4483aac46032092dece95bb0b4c.tar.lz
dexon-0x-contracts-79f5e36edbd8a4483aac46032092dece95bb0b4c.tar.xz
dexon-0x-contracts-79f5e36edbd8a4483aac46032092dece95bb0b4c.tar.zst
dexon-0x-contracts-79f5e36edbd8a4483aac46032092dece95bb0b4c.zip
Merge pull request #1311 from 0xProject/feature/contracts-monorepo-2
Contracts monorepo II
Diffstat (limited to 'contracts/TESTING.md')
-rw-r--r--contracts/TESTING.md48
1 files changed, 48 insertions, 0 deletions
diff --git a/contracts/TESTING.md b/contracts/TESTING.md
new file mode 100644
index 000000000..750b3c62c
--- /dev/null
+++ b/contracts/TESTING.md
@@ -0,0 +1,48 @@
+# Contracts testing options
+
+## Revert stack traces
+
+If you want to see helpful stack traces (incl. line number, code snippet) for smart contract reverts, run the tests with:
+
+```
+yarn test:trace
+```
+
+**Note:** This currently slows down the test runs and is therefore not enabled by default.
+
+## Backing Ethereum node
+
+By default, our tests run against an in-process [Ganache](https://github.com/trufflesuite/ganache-core) instance. In order to run the tests against [Geth](https://github.com/ethereum/go-ethereum), first follow the instructions in the README for the devnet package to start the devnet Geth node. Then run:
+
+```bash
+TEST_PROVIDER=geth yarn test
+```
+
+## Code coverage
+
+In order to see the Solidity code coverage output generated by `@0x/sol-cov`, run:
+
+```
+yarn test:coverage
+```
+
+## Gas profiler
+
+In order to profile the gas costs for a specific smart contract call/transaction, you can run the tests in `profiler` mode.
+
+**Note:** Traces emitted by ganache have incorrect gas costs so we recommend using Geth for profiling.
+
+```
+TEST_PROVIDER=geth yarn test:profiler
+```
+
+You'll see a warning that you need to explicitly enable and disable the profiler before and after the block of code you want to profile.
+
+```typescript
+import { profiler } from './utils/profiler';
+profiler.start();
+// Some call to a smart contract
+profiler.stop();
+```
+
+Without explicitly starting and stopping the profiler, the profiler output will be too busy, and therefore unusable.