aboutsummaryrefslogtreecommitdiffstats
path: root/packages/deployer/test
diff options
context:
space:
mode:
authorBrandon Millman <brandon.millman@gmail.com>2018-03-30 01:02:46 +0800
committerBrandon Millman <brandon.millman@gmail.com>2018-03-30 01:02:46 +0800
commit665011174bab7cfc6ec53e0044d60e1463222aee (patch)
tree44bc55bd390044d6cbfe8e0f7dddb621a8be7249 /packages/deployer/test
parentd106079d9b69191d9cdc6d9323dbae3e4b45daf2 (diff)
parentc4dd9658e791a9f821ea3b6eb4326bcba53b081a (diff)
downloaddexon-sol-tools-665011174bab7cfc6ec53e0044d60e1463222aee.tar
dexon-sol-tools-665011174bab7cfc6ec53e0044d60e1463222aee.tar.gz
dexon-sol-tools-665011174bab7cfc6ec53e0044d60e1463222aee.tar.bz2
dexon-sol-tools-665011174bab7cfc6ec53e0044d60e1463222aee.tar.lz
dexon-sol-tools-665011174bab7cfc6ec53e0044d60e1463222aee.tar.xz
dexon-sol-tools-665011174bab7cfc6ec53e0044d60e1463222aee.tar.zst
dexon-sol-tools-665011174bab7cfc6ec53e0044d60e1463222aee.zip
Merge branch 'development' into feature/website/wallet-wrap
* development: (35 commits) Fix CHANGELOG Update Yarn.lock Standardize changelog dates and format Fix stubbing of a non-existent property Remove redundant cast Move common types out of web3 types Add monorepo_scripts to npmignore Add typeRoots Add clean-state tests Remove nested .gitignore files since `yarn publish` gets confused by them and ignores their contents on the top-level scope Remove WETH hack now that updated WETH address is in TokenRegistry Revert TokenRegistry address on Kovan Improve rounding error message Portal fill with mixed decimals Add error popover if TokenRegistry on network user is browsing on don't include the requisite default tokens for 0x Portal to function Set timeout for compiler tests Remove redundant types Add missing param comments Fix a comment Add a comment ...
Diffstat (limited to 'packages/deployer/test')
-rw-r--r--packages/deployer/test/compiler_test.ts47
-rw-r--r--packages/deployer/test/compiler_utils_test.ts74
-rw-r--r--packages/deployer/test/deployer_test.ts (renamed from packages/deployer/test/deploy_test.ts)77
-rw-r--r--packages/deployer/test/util/constants.ts2
4 files changed, 152 insertions, 48 deletions
diff --git a/packages/deployer/test/compiler_test.ts b/packages/deployer/test/compiler_test.ts
new file mode 100644
index 000000000..b03ae7935
--- /dev/null
+++ b/packages/deployer/test/compiler_test.ts
@@ -0,0 +1,47 @@
+import * as chai from 'chai';
+import 'mocha';
+
+import { Compiler } from '../src/compiler';
+import { fsWrapper } from '../src/utils/fs_wrapper';
+import { CompilerOptions, ContractArtifact, ContractNetworkData, DoneCallback } from '../src/utils/types';
+
+import { exchange_binary } from './fixtures/exchange_bin';
+import { constants } from './util/constants';
+
+const expect = chai.expect;
+
+describe('#Compiler', function() {
+ this.timeout(constants.timeoutMs);
+ const artifactsDir = `${__dirname}/fixtures/artifacts`;
+ const contractsDir = `${__dirname}/fixtures/contracts`;
+ const exchangeArtifactPath = `${artifactsDir}/Exchange.json`;
+ const compilerOpts: CompilerOptions = {
+ artifactsDir,
+ contractsDir,
+ networkId: constants.networkId,
+ optimizerEnabled: constants.optimizerEnabled,
+ specifiedContracts: new Set(constants.specifiedContracts),
+ };
+ const compiler = new Compiler(compilerOpts);
+ beforeEach((done: DoneCallback) => {
+ (async () => {
+ if (fsWrapper.doesPathExistSync(exchangeArtifactPath)) {
+ await fsWrapper.removeFileAsync(exchangeArtifactPath);
+ }
+ await compiler.compileAsync();
+ done();
+ })().catch(done);
+ });
+ it('should create an Exchange artifact with the correct unlinked binary', async () => {
+ const opts = {
+ encoding: 'utf8',
+ };
+ const exchangeArtifactString = await fsWrapper.readFileAsync(exchangeArtifactPath, opts);
+ const exchangeArtifact: ContractArtifact = JSON.parse(exchangeArtifactString);
+ const exchangeContractData: ContractNetworkData = exchangeArtifact.networks[constants.networkId];
+ // The last 43 bytes of the binaries are metadata which may not be equivalent
+ const unlinkedBinaryWithoutMetadata = exchangeContractData.bytecode.slice(0, -86);
+ const exchangeBinaryWithoutMetadata = exchange_binary.slice(0, -86);
+ expect(unlinkedBinaryWithoutMetadata).to.equal(exchangeBinaryWithoutMetadata);
+ });
+});
diff --git a/packages/deployer/test/compiler_utils_test.ts b/packages/deployer/test/compiler_utils_test.ts
new file mode 100644
index 000000000..1867177dc
--- /dev/null
+++ b/packages/deployer/test/compiler_utils_test.ts
@@ -0,0 +1,74 @@
+import * as chai from 'chai';
+import * as dirtyChai from 'dirty-chai';
+import 'mocha';
+
+import {
+ createArtifactsDirIfDoesNotExistAsync,
+ getNormalizedErrMsg,
+ parseDependencies,
+ parseSolidityVersionRange,
+} from '../src/utils/compiler';
+import { fsWrapper } from '../src/utils/fs_wrapper';
+
+chai.use(dirtyChai);
+const expect = chai.expect;
+
+describe('Compiler utils', () => {
+ describe('#getNormalizedErrorMessage', () => {
+ it('normalizes the error message', () => {
+ const errMsg = 'base/Token.sol:6:46: Warning: Unused local variable';
+ const normalizedErrMsg = getNormalizedErrMsg(errMsg);
+ expect(normalizedErrMsg).to.be.equal('Token.sol:6:46: Warning: Unused local variable');
+ });
+ });
+ describe('#createArtifactsDirIfDoesNotExistAsync', () => {
+ it('creates artifacts dir', async () => {
+ const artifactsDir = `${__dirname}/artifacts`;
+ expect(fsWrapper.doesPathExistSync(artifactsDir)).to.be.false();
+ await createArtifactsDirIfDoesNotExistAsync(artifactsDir);
+ expect(fsWrapper.doesPathExistSync(artifactsDir)).to.be.true();
+ fsWrapper.rmdirSync(artifactsDir);
+ expect(fsWrapper.doesPathExistSync(artifactsDir)).to.be.false();
+ });
+ });
+ describe('#parseSolidityVersionRange', () => {
+ it('correctly parses the version range', () => {
+ expect(parseSolidityVersionRange('pragma solidity ^0.0.1;')).to.be.equal('^0.0.1');
+ expect(parseSolidityVersionRange('\npragma solidity 0.0.1;')).to.be.equal('0.0.1');
+ expect(parseSolidityVersionRange('pragma solidity <=1.0.1;')).to.be.equal('<=1.0.1');
+ expect(parseSolidityVersionRange('pragma solidity ~1.0.1;')).to.be.equal('~1.0.1');
+ });
+ // TODO: For now that doesn't work. This will work after we switch to a grammar-based parser
+ it.skip('correctly parses the version range with comments', () => {
+ expect(parseSolidityVersionRange('// pragma solidity ~1.0.1;\npragma solidity ~1.0.2;')).to.be.equal(
+ '~1.0.2',
+ );
+ });
+ });
+ describe('#parseDependencies', () => {
+ it('correctly parses Exchange dependencies', async () => {
+ const exchangeSource = await fsWrapper.readFileAsync(`${__dirname}/fixtures/contracts/Exchange.sol`, {
+ encoding: 'utf8',
+ });
+ expect(parseDependencies(exchangeSource)).to.be.deep.equal([
+ 'TokenTransferProxy.sol',
+ 'Token.sol',
+ 'SafeMath.sol',
+ ]);
+ });
+ it('correctly parses TokenTransferProxy dependencies', async () => {
+ const exchangeSource = await fsWrapper.readFileAsync(
+ `${__dirname}/fixtures/contracts/TokenTransferProxy.sol`,
+ {
+ encoding: 'utf8',
+ },
+ );
+ expect(parseDependencies(exchangeSource)).to.be.deep.equal(['Token.sol', 'Ownable.sol']);
+ });
+ // TODO: For now that doesn't work. This will work after we switch to a grammar-based parser
+ it.skip('correctly parses commented out dependencies', async () => {
+ const contractWithCommentedOutDependencies = `// import "./TokenTransferProxy.sol";`;
+ expect(parseDependencies(contractWithCommentedOutDependencies)).to.be.deep.equal([]);
+ });
+ });
+});
diff --git a/packages/deployer/test/deploy_test.ts b/packages/deployer/test/deployer_test.ts
index 26ce337ef..9c34d74aa 100644
--- a/packages/deployer/test/deploy_test.ts
+++ b/packages/deployer/test/deployer_test.ts
@@ -10,55 +10,38 @@ import { constructor_args, exchange_binary } from './fixtures/exchange_bin';
import { constants } from './util/constants';
const expect = chai.expect;
-const artifactsDir = `${__dirname}/fixtures/artifacts`;
-const contractsDir = `${__dirname}/fixtures/contracts`;
-const exchangeArtifactPath = `${artifactsDir}/Exchange.json`;
-const compilerOpts: CompilerOptions = {
- artifactsDir,
- contractsDir,
- networkId: constants.networkId,
- optimizerEnabled: constants.optimizerEnabled,
- specifiedContracts: new Set(constants.specifiedContracts),
-};
-const compiler = new Compiler(compilerOpts);
-const deployerOpts = {
- artifactsDir,
- networkId: constants.networkId,
- jsonrpcUrl: constants.jsonrpcUrl,
- defaults: {
- gasPrice: constants.gasPrice,
- },
-};
-const deployer = new Deployer(deployerOpts);
-/* tslint:disable */
-beforeEach(function(done: DoneCallback) {
- this.timeout(constants.timeoutMs);
- (async () => {
- if (fsWrapper.doesPathExistSync(exchangeArtifactPath)) {
- await fsWrapper.removeFileAsync(exchangeArtifactPath);
- }
- await compiler.compileAllAsync();
- done();
- })().catch(done);
-});
-/* tslint:enable */
-
-describe('#Compiler', () => {
- it('should create an Exchange artifact with the correct unlinked binary', async () => {
- const opts = {
- encoding: 'utf8',
- };
- const exchangeArtifactString = await fsWrapper.readFileAsync(exchangeArtifactPath, opts);
- const exchangeArtifact: ContractArtifact = JSON.parse(exchangeArtifactString);
- const exchangeContractData: ContractNetworkData = exchangeArtifact.networks[constants.networkId];
- // The last 43 bytes of the binaries are metadata which may not be equivalent
- const unlinkedBinaryWithoutMetadata = exchangeContractData.bytecode.slice(0, -86);
- const exchangeBinaryWithoutMetadata = exchange_binary.slice(0, -86);
- expect(unlinkedBinaryWithoutMetadata).to.equal(exchangeBinaryWithoutMetadata);
- });
-});
describe('#Deployer', () => {
+ const artifactsDir = `${__dirname}/fixtures/artifacts`;
+ const contractsDir = `${__dirname}/fixtures/contracts`;
+ const exchangeArtifactPath = `${artifactsDir}/Exchange.json`;
+ const compilerOpts: CompilerOptions = {
+ artifactsDir,
+ contractsDir,
+ networkId: constants.networkId,
+ optimizerEnabled: constants.optimizerEnabled,
+ specifiedContracts: new Set(constants.specifiedContracts),
+ };
+ const compiler = new Compiler(compilerOpts);
+ const deployerOpts = {
+ artifactsDir,
+ networkId: constants.networkId,
+ jsonrpcUrl: constants.jsonrpcUrl,
+ defaults: {
+ gasPrice: constants.gasPrice,
+ },
+ };
+ const deployer = new Deployer(deployerOpts);
+ beforeEach(function(done: DoneCallback) {
+ this.timeout(constants.timeoutMs);
+ (async () => {
+ if (fsWrapper.doesPathExistSync(exchangeArtifactPath)) {
+ await fsWrapper.removeFileAsync(exchangeArtifactPath);
+ }
+ await compiler.compileAsync();
+ done();
+ })().catch(done);
+ });
describe('#deployAsync', () => {
it('should deploy the Exchange contract without updating the Exchange artifact', async () => {
const exchangeConstructorArgs = [constants.zrxTokenAddress, constants.tokenTransferProxyAddress];
diff --git a/packages/deployer/test/util/constants.ts b/packages/deployer/test/util/constants.ts
index 7b6960359..5d3aab47c 100644
--- a/packages/deployer/test/util/constants.ts
+++ b/packages/deployer/test/util/constants.ts
@@ -3,7 +3,7 @@ import { BigNumber } from '@0xproject/utils';
export const constants = {
networkId: 0,
jsonrpcUrl: 'http://localhost:8545',
- optimizerEnabled: 0,
+ optimizerEnabled: false,
gasPrice: new BigNumber(20000000000),
timeoutMs: 20000,
zrxTokenAddress: '0xe41d2489571d322189246dafa5ebde1f4699f498',