From fa1db64a8ec74f81782e47d5bf97c86c50bfddb7 Mon Sep 17 00:00:00 2001 From: Jacob Evans Date: Mon, 1 Apr 2019 19:03:05 +0100 Subject: [PATCH] Add a test to keep artifact sizes down --- packages/contract-artifacts/package.json | 9 ++++- .../test/contract_artifacts_test.ts | 35 +++++++++++++++++++ packages/contract-artifacts/tsconfig.json | 2 +- 3 files changed, 44 insertions(+), 2 deletions(-) create mode 100644 packages/contract-artifacts/test/contract_artifacts_test.ts diff --git a/packages/contract-artifacts/package.json b/packages/contract-artifacts/package.json index e2ed257b23..6e2b6097a0 100644 --- a/packages/contract-artifacts/package.json +++ b/packages/contract-artifacts/package.json @@ -12,6 +12,8 @@ "scripts": { "build": "yarn tsc -b", "build:ci": "yarn build", + "test": "yarn run_mocha", + "run_mocha": "mocha --require source-map-support/register --require make-promises-safe lib/test/**/*_test.js --bail --exit", "clean": "shx rm -rf lib" }, "repository": { @@ -25,7 +27,12 @@ "homepage": "https://github.com/0xProject/0x-monorepo/packages/contract-artifacts/README.md", "devDependencies": { "shx": "^0.2.2", - "typescript": "3.0.1" + "typescript": "3.0.1", + "chai": "^4.0.1", + "dirty-chai": "^2.0.1", + "make-promises-safe": "^1.1.0", + "mocha": "^4.1.0", + "lodash": "^4.17.11" }, "publishConfig": { "access": "public" diff --git a/packages/contract-artifacts/test/contract_artifacts_test.ts b/packages/contract-artifacts/test/contract_artifacts_test.ts new file mode 100644 index 0000000000..29f379d3f1 --- /dev/null +++ b/packages/contract-artifacts/test/contract_artifacts_test.ts @@ -0,0 +1,35 @@ +import * as chai from 'chai'; +import * as dirtyChai from 'dirty-chai'; +import { get } from 'lodash'; +import 'mocha'; + +import * as artifacts from '../src/index'; + +chai.use(dirtyChai); + +const expect = chai.expect; + +describe('Contract Artifacts', () => { + const forbiddenProperties = [ + 'compilerOutput.evm.bytecode.sourceMap', + 'compilerOutput.evm.bytecode.opcodes', + 'sourceCodes', + 'sources', + 'compiler', + ]; + it('should not include forbidden attributes', () => { + const forbiddenPropertiesByArtifact: { [name: string]: string[] } = {}; + for (const [artifactName, artifact] of Object.entries(artifacts)) { + for (const forbiddenProperty of forbiddenProperties) { + const rejectedValue = get(artifact, forbiddenProperty); + if (rejectedValue) { + const previousForbidden = forbiddenPropertiesByArtifact[artifactName]; + forbiddenPropertiesByArtifact[artifactName] = previousForbidden + ? [...previousForbidden, forbiddenProperty] + : [forbiddenProperty]; + } + } + } + expect(forbiddenPropertiesByArtifact).to.be.eq({}); + }); +}); diff --git a/packages/contract-artifacts/tsconfig.json b/packages/contract-artifacts/tsconfig.json index c10e3b2fe4..03e8285cf0 100644 --- a/packages/contract-artifacts/tsconfig.json +++ b/packages/contract-artifacts/tsconfig.json @@ -5,7 +5,7 @@ "rootDir": ".", "resolveJsonModule": true }, - "include": ["./src/**/*"], + "include": ["./src/**/*", "./test/**/*"], "files": [ "./artifacts/AssetProxyOwner.json", "./artifacts/DutchAuction.json",