From 01536e90e355b580502ea1f6da258d0f51f439c3 Mon Sep 17 00:00:00 2001 From: Piotr Szlachciak Date: Fri, 13 Mar 2020 14:03:32 +0100 Subject: [PATCH] Resolve solc version from semver string (#202) * Simplify e2e compiler tests * Resolve solc version from semver string --- waffle-compiler/package.json | 2 ++ waffle-compiler/src/compileSolcjs.ts | 26 ++++++++++++++ waffle-compiler/test/compiler/e2e.ts | 36 +++++++++++++------ .../test/projects/compilerOptions/config.json | 2 +- .../compilerOptions/config_docker.json | 2 +- .../test/projects/custom/config.js | 7 ---- .../test/projects/custom/config_combined.js | 20 ----------- .../test/projects/custom/config_docker.json | 8 ----- .../custom/config_docker_npmoutside.json | 8 ----- .../test/projects/custom/config_native.json | 7 ---- .../test/projects/custom/config_promise.js | 9 ----- .../custom_solidity_4/config_docker.json | 8 ----- .../custom_solidity_4/config_solcjs.json | 7 ---- .../projects/humanReadableAbi/config.json | 2 +- .../projects/humanReadableAbi/config2.json | 2 +- .../insideOut/main/config_docker.json | 2 +- .../invalidContracts/config_docker.json | 2 +- .../invalidContracts/config_solcjs.json | 2 +- .../projects/solidity4/config_docker.json | 8 +++++ .../projects/solidity4/config_solcjs.json | 7 ++++ .../solidity4/config_solcjs_commit.json | 7 ++++ .../custom_contracts/Custom.sol | 0 .../custom_contracts/MyLibrary.sol | 0 .../custom_contracts/sub/One.sol | 0 .../custom_contracts/sub/Two.sol | 0 .../openzeppelin-solidity/CustomSafeMath.sol | 0 .../openzeppelin-solidity/sub/ERC20.sol | 0 .../projects/solidity5/config_commonjs.js | 7 ++++ .../projects/solidity5/config_docker.json | 8 +++++ .../test/projects/solidity5/config_klab.json | 24 +++++++++++++ .../projects/solidity5/config_native.json | 7 ++++ .../test/projects/solidity5/config_promise.js | 7 ++++ .../projects/solidity5/config_solcjs.json | 7 ++++ .../solidity5/config_solcjs_commit.json | 7 ++++ .../custom_contracts/Custom.sol | 0 .../custom_contracts/MyLibrary.sol | 0 .../custom_contracts/sub/One.sol | 0 .../custom_contracts/sub/Two.sol | 0 .../openzeppelin-solidity/CustomSafeMath.sol | 0 .../openzeppelin-solidity/sub/ERC20.sol | 0 .../projects/solidity6/config_docker.json | 8 ++--- .../projects/solidity6/config_solcjs.json | 10 +++--- .../solidity6/config_solcjs_commit.json | 7 ++++ yarn.lock | 24 ++++++++++++- 44 files changed, 188 insertions(+), 102 deletions(-) delete mode 100644 waffle-compiler/test/projects/custom/config.js delete mode 100644 waffle-compiler/test/projects/custom/config_combined.js delete mode 100644 waffle-compiler/test/projects/custom/config_docker.json delete mode 100644 waffle-compiler/test/projects/custom/config_docker_npmoutside.json delete mode 100644 waffle-compiler/test/projects/custom/config_native.json delete mode 100644 waffle-compiler/test/projects/custom/config_promise.js delete mode 100644 waffle-compiler/test/projects/custom_solidity_4/config_docker.json delete mode 100644 waffle-compiler/test/projects/custom_solidity_4/config_solcjs.json create mode 100644 waffle-compiler/test/projects/solidity4/config_docker.json create mode 100644 waffle-compiler/test/projects/solidity4/config_solcjs.json create mode 100644 waffle-compiler/test/projects/solidity4/config_solcjs_commit.json rename waffle-compiler/test/projects/{custom_solidity_4 => solidity4}/custom_contracts/Custom.sol (100%) rename waffle-compiler/test/projects/{custom_solidity_4 => solidity4}/custom_contracts/MyLibrary.sol (100%) rename waffle-compiler/test/projects/{custom_solidity_4 => solidity4}/custom_contracts/sub/One.sol (100%) rename waffle-compiler/test/projects/{custom_solidity_4 => solidity4}/custom_contracts/sub/Two.sol (100%) rename waffle-compiler/test/projects/{custom_solidity_4 => solidity4}/custom_node_modules/openzeppelin-solidity/CustomSafeMath.sol (100%) rename waffle-compiler/test/projects/{custom_solidity_4 => solidity4}/custom_node_modules/openzeppelin-solidity/sub/ERC20.sol (100%) create mode 100644 waffle-compiler/test/projects/solidity5/config_commonjs.js create mode 100644 waffle-compiler/test/projects/solidity5/config_docker.json create mode 100644 waffle-compiler/test/projects/solidity5/config_klab.json create mode 100644 waffle-compiler/test/projects/solidity5/config_native.json create mode 100644 waffle-compiler/test/projects/solidity5/config_promise.js create mode 100644 waffle-compiler/test/projects/solidity5/config_solcjs.json create mode 100644 waffle-compiler/test/projects/solidity5/config_solcjs_commit.json rename waffle-compiler/test/projects/{custom => solidity5}/custom_contracts/Custom.sol (100%) rename waffle-compiler/test/projects/{custom => solidity5}/custom_contracts/MyLibrary.sol (100%) rename waffle-compiler/test/projects/{custom => solidity5}/custom_contracts/sub/One.sol (100%) rename waffle-compiler/test/projects/{custom => solidity5}/custom_contracts/sub/Two.sol (100%) rename waffle-compiler/test/projects/{custom => solidity5}/custom_node_modules/openzeppelin-solidity/CustomSafeMath.sol (100%) rename waffle-compiler/test/projects/{custom => solidity5}/custom_node_modules/openzeppelin-solidity/sub/ERC20.sol (100%) create mode 100644 waffle-compiler/test/projects/solidity6/config_solcjs_commit.json diff --git a/waffle-compiler/package.json b/waffle-compiler/package.json index 42a8b1009..03e67b809 100644 --- a/waffle-compiler/package.json +++ b/waffle-compiler/package.json @@ -38,7 +38,9 @@ "@resolver-engine/imports": "^0.3.3", "@resolver-engine/imports-fs": "^0.3.3", "@types/mkdirp": "^0.5.2", + "@types/node-fetch": "^2.5.5", "mkdirp": "^0.5.1", + "node-fetch": "^2.6.0", "solc": "^0.6.3" }, "devDependencies": { diff --git a/waffle-compiler/src/compileSolcjs.ts b/waffle-compiler/src/compileSolcjs.ts index 80b6b40e9..ba4fb02bf 100644 --- a/waffle-compiler/src/compileSolcjs.ts +++ b/waffle-compiler/src/compileSolcjs.ts @@ -4,19 +4,45 @@ import {readFileContent, isDirectory, relativePathToWorkingDir} from './utils'; import {Config} from './config'; import {buildInputObject} from './buildUitls'; import {ImportFile} from '@resolver-engine/imports'; +import fetch from 'node-fetch'; const loadRemoteVersion = promisify(solc.loadRemoteVersion); +const semverRegex = /^\d+\.\d+\.\d+$/; export async function loadCompiler(config: Config) { if (config.compilerVersion !== 'default') { if (isDirectory(config.compilerVersion)) { return require(relativePathToWorkingDir(config.compilerVersion)); + } else if (semverRegex.test(config.compilerVersion)) { + try { + const version = await resolveSemverVersion(config.compilerVersion); + return loadRemoteVersion(version); + } catch (e) { + throw new Error(`Error fetching version: ${config.compilerVersion}.`); + } } return loadRemoteVersion(config.compilerVersion); } return solc; } +async function resolveSemverVersion(version: string) { + const releases = await fetchReleases(); + const item: string = releases[version]; + return item.substring('soljson-'.length, item.length - '.js'.length); +} + +const VERSION_LIST_URL = 'https://ethereum.github.io/solc-bin/bin/list.json'; +let cache: any = undefined; +async function fetchReleases() { + if (!cache) { + const res = await fetch(VERSION_LIST_URL); + const {releases} = await res.json(); + cache = releases; + } + return cache; +} + export function compileSolcjs(config: Config) { return async function compile(sources: ImportFile[], findImports: (file: string) => any) { const solc = await loadCompiler(config); diff --git a/waffle-compiler/test/compiler/e2e.ts b/waffle-compiler/test/compiler/e2e.ts index d73ff8c35..4093ba5ad 100644 --- a/waffle-compiler/test/compiler/e2e.ts +++ b/waffle-compiler/test/compiler/e2e.ts @@ -1,6 +1,6 @@ import fs from 'fs'; import fsx from 'fs-extra'; -import {join, resolve} from 'path'; +import {join, resolve, dirname, basename} from 'path'; import {expect} from 'chai'; import {compileProject} from '../../src/compiler'; import {loadConfig} from '../../src/loadConfig'; @@ -10,15 +10,19 @@ import {MockProvider} from '@ethereum-waffle/provider'; import {ContractFactory} from 'ethers'; const configurations = [ - './test/projects/custom/config.js', - './test/projects/custom/config_native.json', - './test/projects/custom/config_docker.json', - './test/projects/custom/config_promise.js', - './test/projects/custom_solidity_4/config_solcjs.json', - './test/projects/custom_solidity_4/config_docker.json', - './test/projects/custom/config_combined.js', + './test/projects/solidity4/config_docker.json', + './test/projects/solidity4/config_solcjs.json', + './test/projects/solidity4/config_solcjs_commit.json', + './test/projects/solidity5/config_commonjs.js', + './test/projects/solidity5/config_docker.json', + './test/projects/solidity5/config_klab.json', + './test/projects/solidity5/config_native.json', + './test/projects/solidity5/config_promise.js', + './test/projects/solidity5/config_solcjs.json', + './test/projects/solidity5/config_solcjs_commit.json', + './test/projects/solidity6/config_docker.json', './test/projects/solidity6/config_solcjs.json', - './test/projects/solidity6/config_docker.json' + './test/projects/solidity6/config_solcjs_commit.json' ]; const artifacts = [ @@ -55,10 +59,20 @@ describe('E2E: Compiler integration', async () => { const configuration = await loadConfig(configurationPath) as any; const {name, outputDirectory} = configuration; - describe(name, () => { + describe(`E2E: ${name}`, () => { + const dir = process.cwd(); + before(async () => { + process.chdir(dirname(configurationPath)); fsx.removeSync(outputDirectory); - await compileProject(configurationPath); + }); + + it('compiles without errors', async () => { + await compileProject(basename(configurationPath)); + }); + + after(() => { + process.chdir(dir); }); it('produce output files', async () => { diff --git a/waffle-compiler/test/projects/compilerOptions/config.json b/waffle-compiler/test/projects/compilerOptions/config.json index 75b56e22c..244f92e83 100644 --- a/waffle-compiler/test/projects/compilerOptions/config.json +++ b/waffle-compiler/test/projects/compilerOptions/config.json @@ -2,5 +2,5 @@ "compilerOptions": { "evmVersion": "constantinople" }, - "compilerVersion": "v0.5.9+commit.e560f70d" + "compilerVersion": "0.5.9" } diff --git a/waffle-compiler/test/projects/compilerOptions/config_docker.json b/waffle-compiler/test/projects/compilerOptions/config_docker.json index a8de7c076..8a805f731 100644 --- a/waffle-compiler/test/projects/compilerOptions/config_docker.json +++ b/waffle-compiler/test/projects/compilerOptions/config_docker.json @@ -3,5 +3,5 @@ "evmVersion": "constantinople" }, "compilerType": "dockerized-solc", - "compilerVersion": "0.5.15" + "compilerVersion": "0.5.9" } diff --git a/waffle-compiler/test/projects/custom/config.js b/waffle-compiler/test/projects/custom/config.js deleted file mode 100644 index 7bf8727f2..000000000 --- a/waffle-compiler/test/projects/custom/config.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - name: "solidity 5, solcjs", - sourceDirectory: "./test/projects/custom/custom_contracts", - outputDirectory: "./test/projects/custom/custom_build", - nodeModulesDirectory: "./test/projects/custom/custom_node_modules", - compilerVersion: "v0.5.9+commit.e560f70d" -}; diff --git a/waffle-compiler/test/projects/custom/config_combined.js b/waffle-compiler/test/projects/custom/config_combined.js deleted file mode 100644 index 9761f5252..000000000 --- a/waffle-compiler/test/projects/custom/config_combined.js +++ /dev/null @@ -1,20 +0,0 @@ -module.exports = { - name: "KLAB friendly configuration", - sourceDirectory: "./test/projects/custom/custom_contracts", - outputDirectory: "./test/projects/custom/custom_build", - nodeModulesDirectory: "./test/projects/custom/custom_node_modules", - outputType: 'all', - compilerOptions: { - outputSelection: { - "*": { - "*": [ "evm.bytecode.object", "evm.deployedBytecode.object", - "abi" , - "evm.bytecode.sourceMap", "evm.deployedBytecode.sourceMap" ], - - "": [ "ast" ] - }, - } - }, - compilerVersion: "v0.5.9+commit.e560f70d" -}; - diff --git a/waffle-compiler/test/projects/custom/config_docker.json b/waffle-compiler/test/projects/custom/config_docker.json deleted file mode 100644 index 0b7a899cf..000000000 --- a/waffle-compiler/test/projects/custom/config_docker.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "solidity 5, dokerized solc", - "sourceDirectory": "./test/projects/custom/custom_contracts", - "outputDirectory": "./test/projects/custom/custom_build", - "nodeModulesDirectory": "./test/projects/custom/custom_node_modules", - "compilerType": "dockerized-solc", - "compilerVersion": "0.5.15" -} diff --git a/waffle-compiler/test/projects/custom/config_docker_npmoutside.json b/waffle-compiler/test/projects/custom/config_docker_npmoutside.json deleted file mode 100644 index 725dd2021..000000000 --- a/waffle-compiler/test/projects/custom/config_docker_npmoutside.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "solidity 5, dokerized solc, npm outside main directory", - "sourceDirectory": "./test/projects/custom/custom_contracts", - "outputDirectory": "./test/projects/custom/custom_build", - "nodeModulesDirectory": "../custom_node_modules", - "compilerType": "dockerized-solc", - "compilerVersion": "0.5.15" -} diff --git a/waffle-compiler/test/projects/custom/config_native.json b/waffle-compiler/test/projects/custom/config_native.json deleted file mode 100644 index 3aa8c329f..000000000 --- a/waffle-compiler/test/projects/custom/config_native.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "name": "solidity 5, native solc", - "sourceDirectory": "./test/projects/custom/custom_contracts", - "outputDirectory": "./test/projects/custom/custom_build", - "nodeModulesDirectory": "./test/projects/custom/custom_node_modules", - "compilerType": "native" -} diff --git a/waffle-compiler/test/projects/custom/config_promise.js b/waffle-compiler/test/projects/custom/config_promise.js deleted file mode 100644 index 7c5e5696a..000000000 --- a/waffle-compiler/test/projects/custom/config_promise.js +++ /dev/null @@ -1,9 +0,0 @@ -module.exports = new Promise((resolve, reject) => { - resolve({ - name: "solidity 5, promise returned solcjs config", - sourceDirectory: "./test/projects/custom/custom_contracts", - outputDirectory: "./test/projects/custom/custom_build", - nodeModulesDirectory: "./test/projects/custom/custom_node_modules", - compilerVersion: "v0.5.9+commit.e560f70d" - }); -}); diff --git a/waffle-compiler/test/projects/custom_solidity_4/config_docker.json b/waffle-compiler/test/projects/custom_solidity_4/config_docker.json deleted file mode 100644 index 10f135ce1..000000000 --- a/waffle-compiler/test/projects/custom_solidity_4/config_docker.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "solidity 4, dokerized solc", - "sourceDirectory": "./test/projects/custom_solidity_4/custom_contracts", - "outputDirectory": "./test/projects/custom_solidity_4/custom_build", - "nodeModulesDirectory": "./test/projects/custom_solidity_4/custom_node_modules", - "compilerType": "dockerized-solc", - "compilerVersion": "0.4.24" -} diff --git a/waffle-compiler/test/projects/custom_solidity_4/config_solcjs.json b/waffle-compiler/test/projects/custom_solidity_4/config_solcjs.json deleted file mode 100644 index 40954dd42..000000000 --- a/waffle-compiler/test/projects/custom_solidity_4/config_solcjs.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "name": "solidity 4, solcjs", - "sourceDirectory": "./test/projects/custom_solidity_4/custom_contracts", - "outputDirectory": "./test/projects/custom_solidity_4/custom_build", - "nodeModulesDirectory": "./test/projects/custom_solidity_4/custom_node_modules", - "compilerVersion": "v0.4.24+commit.e67f0147" -} diff --git a/waffle-compiler/test/projects/humanReadableAbi/config.json b/waffle-compiler/test/projects/humanReadableAbi/config.json index c6506a15d..604418089 100644 --- a/waffle-compiler/test/projects/humanReadableAbi/config.json +++ b/waffle-compiler/test/projects/humanReadableAbi/config.json @@ -1,4 +1,4 @@ { "outputHumanReadableAbi": true, - "compilerVersion": "v0.5.9+commit.e560f70d" + "compilerVersion": "0.5.9" } diff --git a/waffle-compiler/test/projects/humanReadableAbi/config2.json b/waffle-compiler/test/projects/humanReadableAbi/config2.json index 5dcbe1912..174000c12 100644 --- a/waffle-compiler/test/projects/humanReadableAbi/config2.json +++ b/waffle-compiler/test/projects/humanReadableAbi/config2.json @@ -1,3 +1,3 @@ { - "compilerVersion": "v0.5.9+commit.e560f70d" + "compilerVersion": "0.5.9" } diff --git a/waffle-compiler/test/projects/insideOut/main/config_docker.json b/waffle-compiler/test/projects/insideOut/main/config_docker.json index 82edf58a0..2639f661e 100644 --- a/waffle-compiler/test/projects/insideOut/main/config_docker.json +++ b/waffle-compiler/test/projects/insideOut/main/config_docker.json @@ -4,5 +4,5 @@ "outputDirectory": "../build/nested", "nodeModulesDirectory": "../modules", "compilerType": "dockerized-solc", - "compilerVersion": "0.5.15" + "compilerVersion": "0.5.9" } diff --git a/waffle-compiler/test/projects/invalidContracts/config_docker.json b/waffle-compiler/test/projects/invalidContracts/config_docker.json index b21b626f1..c419b91ec 100644 --- a/waffle-compiler/test/projects/invalidContracts/config_docker.json +++ b/waffle-compiler/test/projects/invalidContracts/config_docker.json @@ -4,5 +4,5 @@ "outputDirectory": "./test/projects/invalidContracts/custom_build", "nodeModulesDirectory": "./test/projects/invalidContracts/custom_node_modules", "compilerType": "dockerized-solc", - "compilerVersion": "0.5.15" + "compilerVersion": "0.5.9" } diff --git a/waffle-compiler/test/projects/invalidContracts/config_solcjs.json b/waffle-compiler/test/projects/invalidContracts/config_solcjs.json index 73dafe8ab..fca0b0b37 100644 --- a/waffle-compiler/test/projects/invalidContracts/config_solcjs.json +++ b/waffle-compiler/test/projects/invalidContracts/config_solcjs.json @@ -3,5 +3,5 @@ "sourceDirectory": "./test/projects/invalidContracts", "outputDirectory": "./test/projects/invalidContracts/custom_build", "nodeModulesDirectory": "./test/projects/invalidContracts/custom_node_modules", - "compilerVersion": "v0.5.9+commit.e560f70d" + "compilerVersion": "0.5.9" } diff --git a/waffle-compiler/test/projects/solidity4/config_docker.json b/waffle-compiler/test/projects/solidity4/config_docker.json new file mode 100644 index 000000000..4ddd8f7ac --- /dev/null +++ b/waffle-compiler/test/projects/solidity4/config_docker.json @@ -0,0 +1,8 @@ +{ + "name": "Solidity 4 - docker", + "sourceDirectory": "./custom_contracts", + "outputDirectory": "./custom_build", + "nodeModulesDirectory": "./custom_node_modules", + "compilerType": "dockerized-solc", + "compilerVersion": "0.4.24" +} diff --git a/waffle-compiler/test/projects/solidity4/config_solcjs.json b/waffle-compiler/test/projects/solidity4/config_solcjs.json new file mode 100644 index 000000000..9bd9ddc65 --- /dev/null +++ b/waffle-compiler/test/projects/solidity4/config_solcjs.json @@ -0,0 +1,7 @@ +{ + "name": "Solidity 4 - solcjs", + "sourceDirectory": "./custom_contracts", + "outputDirectory": "./custom_build", + "nodeModulesDirectory": "./custom_node_modules", + "compilerVersion": "0.4.24" +} diff --git a/waffle-compiler/test/projects/solidity4/config_solcjs_commit.json b/waffle-compiler/test/projects/solidity4/config_solcjs_commit.json new file mode 100644 index 000000000..3015a39bb --- /dev/null +++ b/waffle-compiler/test/projects/solidity4/config_solcjs_commit.json @@ -0,0 +1,7 @@ +{ + "name": "Solidity 4 - solcjs with commit version", + "sourceDirectory": "./custom_contracts", + "outputDirectory": "./custom_build", + "nodeModulesDirectory": "./custom_node_modules", + "compilerVersion": "v0.4.24+commit.e67f0147" +} diff --git a/waffle-compiler/test/projects/custom_solidity_4/custom_contracts/Custom.sol b/waffle-compiler/test/projects/solidity4/custom_contracts/Custom.sol similarity index 100% rename from waffle-compiler/test/projects/custom_solidity_4/custom_contracts/Custom.sol rename to waffle-compiler/test/projects/solidity4/custom_contracts/Custom.sol diff --git a/waffle-compiler/test/projects/custom_solidity_4/custom_contracts/MyLibrary.sol b/waffle-compiler/test/projects/solidity4/custom_contracts/MyLibrary.sol similarity index 100% rename from waffle-compiler/test/projects/custom_solidity_4/custom_contracts/MyLibrary.sol rename to waffle-compiler/test/projects/solidity4/custom_contracts/MyLibrary.sol diff --git a/waffle-compiler/test/projects/custom_solidity_4/custom_contracts/sub/One.sol b/waffle-compiler/test/projects/solidity4/custom_contracts/sub/One.sol similarity index 100% rename from waffle-compiler/test/projects/custom_solidity_4/custom_contracts/sub/One.sol rename to waffle-compiler/test/projects/solidity4/custom_contracts/sub/One.sol diff --git a/waffle-compiler/test/projects/custom_solidity_4/custom_contracts/sub/Two.sol b/waffle-compiler/test/projects/solidity4/custom_contracts/sub/Two.sol similarity index 100% rename from waffle-compiler/test/projects/custom_solidity_4/custom_contracts/sub/Two.sol rename to waffle-compiler/test/projects/solidity4/custom_contracts/sub/Two.sol diff --git a/waffle-compiler/test/projects/custom_solidity_4/custom_node_modules/openzeppelin-solidity/CustomSafeMath.sol b/waffle-compiler/test/projects/solidity4/custom_node_modules/openzeppelin-solidity/CustomSafeMath.sol similarity index 100% rename from waffle-compiler/test/projects/custom_solidity_4/custom_node_modules/openzeppelin-solidity/CustomSafeMath.sol rename to waffle-compiler/test/projects/solidity4/custom_node_modules/openzeppelin-solidity/CustomSafeMath.sol diff --git a/waffle-compiler/test/projects/custom_solidity_4/custom_node_modules/openzeppelin-solidity/sub/ERC20.sol b/waffle-compiler/test/projects/solidity4/custom_node_modules/openzeppelin-solidity/sub/ERC20.sol similarity index 100% rename from waffle-compiler/test/projects/custom_solidity_4/custom_node_modules/openzeppelin-solidity/sub/ERC20.sol rename to waffle-compiler/test/projects/solidity4/custom_node_modules/openzeppelin-solidity/sub/ERC20.sol diff --git a/waffle-compiler/test/projects/solidity5/config_commonjs.js b/waffle-compiler/test/projects/solidity5/config_commonjs.js new file mode 100644 index 000000000..441d36f39 --- /dev/null +++ b/waffle-compiler/test/projects/solidity5/config_commonjs.js @@ -0,0 +1,7 @@ +module.exports = { + name: 'Solidity 5 - commonjs', + sourceDirectory: './custom_contracts', + outputDirectory: './custom_build', + nodeModulesDirectory: './custom_node_modules', + compilerVersion: '0.5.9', +} diff --git a/waffle-compiler/test/projects/solidity5/config_docker.json b/waffle-compiler/test/projects/solidity5/config_docker.json new file mode 100644 index 000000000..ee3b4fe4e --- /dev/null +++ b/waffle-compiler/test/projects/solidity5/config_docker.json @@ -0,0 +1,8 @@ +{ + "name": "Solidity 5 - docker", + "sourceDirectory": "./custom_contracts", + "outputDirectory": "./custom_build", + "nodeModulesDirectory": "./custom_node_modules", + "compilerType": "dockerized-solc", + "compilerVersion": "0.5.9" +} diff --git a/waffle-compiler/test/projects/solidity5/config_klab.json b/waffle-compiler/test/projects/solidity5/config_klab.json new file mode 100644 index 000000000..1d86d9489 --- /dev/null +++ b/waffle-compiler/test/projects/solidity5/config_klab.json @@ -0,0 +1,24 @@ +{ + "name": "Solidity 5 - KLAB", + "sourceDirectory": "./custom_contracts", + "outputDirectory": "./custom_build", + "nodeModulesDirectory": "./custom_node_modules", + "outputType": "all", + "compilerOptions": { + "outputSelection": { + "*": { + "*": [ + "evm.bytecode.object", + "evm.deployedBytecode.object", + "abi", + "evm.bytecode.sourceMap", + "evm.deployedBytecode.sourceMap" + ], + "": [ + "ast" + ] + } + } + }, + "compilerVersion": "0.5.9" +} diff --git a/waffle-compiler/test/projects/solidity5/config_native.json b/waffle-compiler/test/projects/solidity5/config_native.json new file mode 100644 index 000000000..f7d50f9d7 --- /dev/null +++ b/waffle-compiler/test/projects/solidity5/config_native.json @@ -0,0 +1,7 @@ +{ + "name": "Solidity 5 - native", + "sourceDirectory": "./custom_contracts", + "outputDirectory": "./custom_build", + "nodeModulesDirectory": "./custom_node_modules", + "compilerType": "native" +} diff --git a/waffle-compiler/test/projects/solidity5/config_promise.js b/waffle-compiler/test/projects/solidity5/config_promise.js new file mode 100644 index 000000000..bde5343a6 --- /dev/null +++ b/waffle-compiler/test/projects/solidity5/config_promise.js @@ -0,0 +1,7 @@ +module.exports = Promise.resolve({ + name: 'Solidity 5 - promise', + sourceDirectory: './custom_contracts', + outputDirectory: './custom_build', + nodeModulesDirectory: './custom_node_modules', + compilerVersion: '0.5.9', +}) diff --git a/waffle-compiler/test/projects/solidity5/config_solcjs.json b/waffle-compiler/test/projects/solidity5/config_solcjs.json new file mode 100644 index 000000000..8a7734a34 --- /dev/null +++ b/waffle-compiler/test/projects/solidity5/config_solcjs.json @@ -0,0 +1,7 @@ +{ + "name": "Solidity 5 - solcjs", + "sourceDirectory": "./custom_contracts", + "outputDirectory": "./custom_build", + "nodeModulesDirectory": "./custom_node_modules", + "compilerVersion": "0.5.9" +} diff --git a/waffle-compiler/test/projects/solidity5/config_solcjs_commit.json b/waffle-compiler/test/projects/solidity5/config_solcjs_commit.json new file mode 100644 index 000000000..79f8de748 --- /dev/null +++ b/waffle-compiler/test/projects/solidity5/config_solcjs_commit.json @@ -0,0 +1,7 @@ +{ + "name": "Solidity 5 - solcjs with commit version", + "sourceDirectory": "./custom_contracts", + "outputDirectory": "./custom_build", + "nodeModulesDirectory": "./custom_node_modules", + "compilerVersion": "v0.5.9+commit.e560f70d" +} diff --git a/waffle-compiler/test/projects/custom/custom_contracts/Custom.sol b/waffle-compiler/test/projects/solidity5/custom_contracts/Custom.sol similarity index 100% rename from waffle-compiler/test/projects/custom/custom_contracts/Custom.sol rename to waffle-compiler/test/projects/solidity5/custom_contracts/Custom.sol diff --git a/waffle-compiler/test/projects/custom/custom_contracts/MyLibrary.sol b/waffle-compiler/test/projects/solidity5/custom_contracts/MyLibrary.sol similarity index 100% rename from waffle-compiler/test/projects/custom/custom_contracts/MyLibrary.sol rename to waffle-compiler/test/projects/solidity5/custom_contracts/MyLibrary.sol diff --git a/waffle-compiler/test/projects/custom/custom_contracts/sub/One.sol b/waffle-compiler/test/projects/solidity5/custom_contracts/sub/One.sol similarity index 100% rename from waffle-compiler/test/projects/custom/custom_contracts/sub/One.sol rename to waffle-compiler/test/projects/solidity5/custom_contracts/sub/One.sol diff --git a/waffle-compiler/test/projects/custom/custom_contracts/sub/Two.sol b/waffle-compiler/test/projects/solidity5/custom_contracts/sub/Two.sol similarity index 100% rename from waffle-compiler/test/projects/custom/custom_contracts/sub/Two.sol rename to waffle-compiler/test/projects/solidity5/custom_contracts/sub/Two.sol diff --git a/waffle-compiler/test/projects/custom/custom_node_modules/openzeppelin-solidity/CustomSafeMath.sol b/waffle-compiler/test/projects/solidity5/custom_node_modules/openzeppelin-solidity/CustomSafeMath.sol similarity index 100% rename from waffle-compiler/test/projects/custom/custom_node_modules/openzeppelin-solidity/CustomSafeMath.sol rename to waffle-compiler/test/projects/solidity5/custom_node_modules/openzeppelin-solidity/CustomSafeMath.sol diff --git a/waffle-compiler/test/projects/custom/custom_node_modules/openzeppelin-solidity/sub/ERC20.sol b/waffle-compiler/test/projects/solidity5/custom_node_modules/openzeppelin-solidity/sub/ERC20.sol similarity index 100% rename from waffle-compiler/test/projects/custom/custom_node_modules/openzeppelin-solidity/sub/ERC20.sol rename to waffle-compiler/test/projects/solidity5/custom_node_modules/openzeppelin-solidity/sub/ERC20.sol diff --git a/waffle-compiler/test/projects/solidity6/config_docker.json b/waffle-compiler/test/projects/solidity6/config_docker.json index 6cf5fcd60..247b08885 100644 --- a/waffle-compiler/test/projects/solidity6/config_docker.json +++ b/waffle-compiler/test/projects/solidity6/config_docker.json @@ -1,8 +1,8 @@ { - "name": "solidity 6, docker", - "sourceDirectory": "./test/projects/solidity6/custom_contracts", - "outputDirectory": "./test/projects/solidity6/custom_build", - "nodeModulesDirectory": "./test/projects/solidity6/custom_node_modules", + "name": "Solidity 6 - docker", + "sourceDirectory": "./custom_contracts", + "outputDirectory": "./custom_build", + "nodeModulesDirectory": "./custom_node_modules", "compilerType": "dockerized-solc", "compilerVersion": "0.6.2" } diff --git a/waffle-compiler/test/projects/solidity6/config_solcjs.json b/waffle-compiler/test/projects/solidity6/config_solcjs.json index 7911db064..9380d310f 100644 --- a/waffle-compiler/test/projects/solidity6/config_solcjs.json +++ b/waffle-compiler/test/projects/solidity6/config_solcjs.json @@ -1,7 +1,7 @@ { - "name": "solidity 6, solcjs", - "sourceDirectory": "./test/projects/solidity6/custom_contracts", - "outputDirectory": "./test/projects/solidity6/custom_build", - "nodeModulesDirectory": "./test/projects/solidity6/custom_node_modules", - "compilerVersion": "v0.6.2+commit.bacdbe57" + "name": "Solidity 6 - solcjs", + "sourceDirectory": "./custom_contracts", + "outputDirectory": "./custom_build", + "nodeModulesDirectory": "./custom_node_modules", + "compilerVersion": "0.6.2" } diff --git a/waffle-compiler/test/projects/solidity6/config_solcjs_commit.json b/waffle-compiler/test/projects/solidity6/config_solcjs_commit.json new file mode 100644 index 000000000..029447365 --- /dev/null +++ b/waffle-compiler/test/projects/solidity6/config_solcjs_commit.json @@ -0,0 +1,7 @@ +{ + "name": "Solidity 6 - solcjs with commit version", + "sourceDirectory": "./custom_contracts", + "outputDirectory": "./custom_build", + "nodeModulesDirectory": "./custom_node_modules", + "compilerVersion": "v0.6.2+commit.bacdbe57" +} diff --git a/yarn.lock b/yarn.lock index 7a87030ee..3f9763d0c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -199,6 +199,14 @@ resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-5.2.7.tgz#315d570ccb56c53452ff8638738df60726d5b6ea" integrity sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ== +"@types/node-fetch@^2.5.5": + version "2.5.5" + resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.5.5.tgz#cd264e20a81f4600a6c52864d38e7fef72485e92" + integrity sha512-IWwjsyYjGw+em3xTvWVQi5MgYKbRs0du57klfTaZkv/B24AEQ/p/IopNeqIYNy3EsfHOpg8ieQSDomPcsYMHpA== + dependencies: + "@types/node" "*" + form-data "^3.0.0" + "@types/node@*": version "12.7.2" resolved "https://registry.yarnpkg.com/@types/node/-/node-12.7.2.tgz#c4e63af5e8823ce9cc3f0b34f7b998c2171f0c44" @@ -1501,7 +1509,7 @@ color-name@1.1.3: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= -combined-stream@^1.0.6, combined-stream@~1.0.6: +combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== @@ -2789,6 +2797,15 @@ forever-agent@~0.6.1: resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= +form-data@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.0.tgz#31b7e39c85f1355b7139ee0c647cf0de7f83c682" + integrity sha512-CKMFDglpbMi6PyN+brwB9Q/GOw0eAnsrEZDgcsH5Krhz5Od/haKHAX0NmQfha2zPPz0JpWzA7GJHGSnvCRLWsg== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + form-data@~2.3.2: version "2.3.3" resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" @@ -4205,6 +4222,11 @@ node-fetch@2.1.2: resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.1.2.tgz#ab884e8e7e57e38a944753cec706f788d1768bb5" integrity sha1-q4hOjn5X44qUR1POxwb3iNF2i7U= +node-fetch@^2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd" + integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA== + node-fetch@~1.7.1: version "1.7.3" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef"