diff --git a/dapps/templates/boilerplate/test/contract_spec.js b/dapps/templates/boilerplate/test/contract_spec.js index 30c4cd5679..858d40e1fe 100644 --- a/dapps/templates/boilerplate/test/contract_spec.js +++ b/dapps/templates/boilerplate/test/contract_spec.js @@ -1,6 +1,6 @@ -/*global contract, it*/ +/*global artifacts, contract, it*/ /* -const SimpleStorage = require('Embark/contracts/SimpleStorage'); +const SimpleStorage = artifacts.require('SimpleStorage'); let accounts; diff --git a/dapps/templates/demo/test/simple_storage_spec.js b/dapps/templates/demo/test/simple_storage_spec.js index b633692980..5333d9e737 100644 --- a/dapps/templates/demo/test/simple_storage_spec.js +++ b/dapps/templates/demo/test/simple_storage_spec.js @@ -1,5 +1,5 @@ -/*global contract, config, it, assert, web3*/ -const SimpleStorage = require('Embark/contracts/SimpleStorage'); +/*global artifacts, contract, config, it, assert, web3*/ +const SimpleStorage = artifacts.require('SimpleStorage'); let accounts; diff --git a/dapps/templates/simple/test/contract_spec.js b/dapps/templates/simple/test/contract_spec.js index 30c4cd5679..858d40e1fe 100644 --- a/dapps/templates/simple/test/contract_spec.js +++ b/dapps/templates/simple/test/contract_spec.js @@ -1,6 +1,6 @@ -/*global contract, it*/ +/*global artifacts, contract, it*/ /* -const SimpleStorage = require('Embark/contracts/SimpleStorage'); +const SimpleStorage = artifacts.require('SimpleStorage'); let accounts; diff --git a/dapps/tests/app/test/another_storage_spec.js b/dapps/tests/app/test/another_storage_spec.js index 966b1053eb..8d7fdb3a45 100644 --- a/dapps/tests/app/test/another_storage_spec.js +++ b/dapps/tests/app/test/another_storage_spec.js @@ -1,7 +1,7 @@ -/*global contract, config, it, web3*/ +/*global artifacts, contract, config, it, web3*/ const assert = require('assert'); -const AnotherStorage = require('Embark/contracts/AnotherStorage'); -const SimpleStorage = require('Embark/contracts/SimpleStorage'); +const AnotherStorage = artifacts.require('AnotherStorage'); +const SimpleStorage = artifacts.require('SimpleStorage'); let accounts, defaultAccount; const numAddresses = 10; diff --git a/dapps/tests/app/test/array_references_spec.js b/dapps/tests/app/test/array_references_spec.js index 4aafc786d2..7188c3969b 100644 --- a/dapps/tests/app/test/array_references_spec.js +++ b/dapps/tests/app/test/array_references_spec.js @@ -1,7 +1,7 @@ -/*global contract, config, it, web3*/ +/*global artifacts, contract, config, it, web3*/ const assert = require('assert'); -const SomeContract = require('Embark/contracts/SomeContract'); -const MyToken2 = require('Embark/contracts/MyToken2'); +const SomeContract = artifacts.require('SomeContract'); +const MyToken2 = artifacts.require('MyToken2'); config({ contracts: { @@ -38,4 +38,3 @@ contract("SomeContract", function() { }); }); - diff --git a/dapps/tests/app/test/embarkJS_spec.js b/dapps/tests/app/test/embarkJS_spec.js index f4281e9434..3ecf538820 100644 --- a/dapps/tests/app/test/embarkJS_spec.js +++ b/dapps/tests/app/test/embarkJS_spec.js @@ -1,7 +1,7 @@ -/*global describe, it, web3, config*/ +/*global artifacts, describe, it, web3, config*/ const assert = require('assert'); -const SimpleStorage = require('Embark/contracts/SimpleStorage'); -const EmbarkJS = require('Embark/EmbarkJS'); +const SimpleStorage = artifacts.require('SimpleStorage'); +const EmbarkJS = artifacts.require('EmbarkJS'); config({ namesystem: { @@ -58,4 +58,3 @@ describe("EmbarkJS functions", function() { assert.strictEqual(parseInt(result, 10), 100); }); }); - diff --git a/dapps/tests/app/test/expiration_spec.js b/dapps/tests/app/test/expiration_spec.js index f09170832c..9d114e4aa6 100644 --- a/dapps/tests/app/test/expiration_spec.js +++ b/dapps/tests/app/test/expiration_spec.js @@ -1,5 +1,5 @@ -/*global contract, config, it, assert, mineAtTimestamp*/ -const Expiration = require('Embark/contracts/Expiration'); +/*global artifacts, contract, config, it, assert, mineAtTimestamp*/ +const Expiration = artifacts.require('Expiration'); const now = Math.floor(new Date().getTime()/1000.0); // Get unix epoch. The getTime method returns the time in milliseconds. config({ diff --git a/dapps/tests/app/test/interface_spec.js b/dapps/tests/app/test/interface_spec.js index cea91e759b..939b3ef22b 100644 --- a/dapps/tests/app/test/interface_spec.js +++ b/dapps/tests/app/test/interface_spec.js @@ -1,6 +1,6 @@ -/*global contract, config, it*/ +/*global artifacts, contract, config, it*/ const assert = require('assert'); -const AnotherStorage = require('Embark/contracts/AnotherStorage'); +const AnotherStorage = artifacts.require('AnotherStorage'); // FIXME this doesn't work and no idea how it ever worked because ERC20 is not defined anywhere // config({ @@ -22,4 +22,3 @@ contract("AnotherStorageWithInterface", function() { assert.strictEqual(result.toString(), '0x0000000000000000000000000000000000000000'); }); }); - diff --git a/dapps/tests/app/test/lib_test_spec.js b/dapps/tests/app/test/lib_test_spec.js index 9865e6f9c2..deb2627e24 100644 --- a/dapps/tests/app/test/lib_test_spec.js +++ b/dapps/tests/app/test/lib_test_spec.js @@ -1,6 +1,6 @@ -/*global contract, config, it*/ +/*global artifacts, contract, config, it*/ const assert = require('assert'); -const Test2 = require('Embark/contracts/Test2'); +const Test2 = artifacts.require('Test2'); config({ contracts: { diff --git a/dapps/tests/app/test/namesystem_spec.js b/dapps/tests/app/test/namesystem_spec.js index 9f98103e68..7f6d673a85 100644 --- a/dapps/tests/app/test/namesystem_spec.js +++ b/dapps/tests/app/test/namesystem_spec.js @@ -1,8 +1,8 @@ -/*global describe, it, config*/ +/*global artifacts, describe, it, config*/ const assert = require('assert'); -const MyToken = require('Embark/contracts/MyToken'); -const MyToken2 = require('Embark/contracts/MyToken2'); -const EmbarkJS = require('Embark/EmbarkJS'); +const MyToken = artifacts.require('MyToken'); +const MyToken2 = artifacts.require('MyToken2'); +const EmbarkJS = artifacts.require('EmbarkJS'); let accounts; @@ -55,4 +55,3 @@ describe("ENS functions", function() { assert.strictEqual(myToken2Name, 'MyToken2.embark.eth'); }); }); - diff --git a/dapps/tests/app/test/plugin_storage_spec.js b/dapps/tests/app/test/plugin_storage_spec.js index ef63d9b545..15be3c4caa 100644 --- a/dapps/tests/app/test/plugin_storage_spec.js +++ b/dapps/tests/app/test/plugin_storage_spec.js @@ -1,7 +1,7 @@ -/*global contract, config, it*/ +/*global artifacts, contract, config, it*/ const assert = require('assert'); -const PluginStorage = require('Embark/contracts/PluginStorage'); -const SimpleStorage = require('Embark/contracts/SimpleStorage'); +const PluginStorage = artifacts.require('PluginStorage'); +const SimpleStorage = artifacts.require('SimpleStorage'); config({ contracts: { diff --git a/dapps/tests/app/test/simple_storage_deploy_spec.js b/dapps/tests/app/test/simple_storage_deploy_spec.js index 6975294b2f..1927f0324b 100644 --- a/dapps/tests/app/test/simple_storage_deploy_spec.js +++ b/dapps/tests/app/test/simple_storage_deploy_spec.js @@ -1,6 +1,6 @@ -/*global contract, it, assert, before, web3*/ -const SimpleStorage = require('Embark/contracts/SimpleStorage'); -const {Utils} = require('Embark/EmbarkJS'); +/*global artifacts, contract, it, assert, before, web3*/ +const SimpleStorage = artifacts.require('SimpleStorage'); +const {Utils} = artifacts.require('EmbarkJS'); contract("SimpleStorage Deploy", function () { let simpleStorageInstance; diff --git a/dapps/tests/app/test/simple_storage_spec.js b/dapps/tests/app/test/simple_storage_spec.js index d369ae19e9..2ad11bf9ea 100644 --- a/dapps/tests/app/test/simple_storage_spec.js +++ b/dapps/tests/app/test/simple_storage_spec.js @@ -1,7 +1,7 @@ /*global contract, config, it, assert, web3*/ -const SimpleStorage = require('Embark/contracts/SimpleStorage'); +const SimpleStorage = artifacts.require('SimpleStorage'); let accounts; -const {Utils} = require('Embark/EmbarkJS'); +const {Utils} = artifacts.require('EmbarkJS'); config({ contracts: { diff --git a/dapps/tests/app/test/token_spec.js b/dapps/tests/app/test/token_spec.js index 7aa3492ded..b456f9c8df 100644 --- a/dapps/tests/app/test/token_spec.js +++ b/dapps/tests/app/test/token_spec.js @@ -1,11 +1,11 @@ -/*global describe, config, it, web3*/ +/*global artifacts, describe, config, it, web3*/ const assert = require('assert'); -const Token = require('Embark/contracts/Token'); -const MyToken = require('Embark/contracts/MyToken'); -const MyToken2 = require('Embark/contracts/MyToken2'); -const AlreadyDeployedToken = require('Embark/contracts/AlreadyDeployedToken'); -const Test = require('Embark/contracts/Test'); -const SomeContract = require('Embark/contracts/SomeContract'); +const Token = artifacts.require('Token'); +const MyToken = artifacts.require('MyToken'); +const MyToken2 = artifacts.require('MyToken2'); +const AlreadyDeployedToken = artifacts.require('AlreadyDeployedToken'); +const Test = artifacts.require('Test'); +const SomeContract = artifacts.require('SomeContract'); config({ namesystem: { diff --git a/dapps/tests/contracts/test/another_storage_spec.js b/dapps/tests/contracts/test/another_storage_spec.js index de800ae66b..bbadb5de55 100644 --- a/dapps/tests/contracts/test/another_storage_spec.js +++ b/dapps/tests/contracts/test/another_storage_spec.js @@ -1,7 +1,7 @@ -/*global contract, config, it*/ +/*global artifacts, contract, config, it*/ const assert = require('assert'); -const AnotherStorage = require('Embark/contracts/AnotherStorage'); -const SimpleStorage = require('Embark/contracts/SimpleStorage'); +const AnotherStorage = artifacts.require('AnotherStorage'); +const SimpleStorage = artifacts.require('SimpleStorage'); let accounts; config({ diff --git a/dapps/tests/contracts/test/array_references_spec.js b/dapps/tests/contracts/test/array_references_spec.js index e53f516b21..321fa4cc44 100644 --- a/dapps/tests/contracts/test/array_references_spec.js +++ b/dapps/tests/contracts/test/array_references_spec.js @@ -1,8 +1,8 @@ -/*global contract, config, it*/ +/*global artifacts, contract, config, it*/ const assert = require('assert'); -const SomeContract = require('Embark/contracts/SomeContract'); -const SimpleStorage = require('Embark/contracts/SimpleStorage'); -const MyToken2 = require('Embark/contracts/MyToken2'); +const SomeContract = artifacts.require('SomeContract'); +const SimpleStorage = artifacts.require('SimpleStorage'); +const MyToken2 = artifacts.require('MyToken2'); config({ contracts: { @@ -42,4 +42,3 @@ contract("SomeContract", function() { }); }); - diff --git a/dapps/tests/contracts/test/lib_test_spec.js b/dapps/tests/contracts/test/lib_test_spec.js index 9865e6f9c2..deb2627e24 100644 --- a/dapps/tests/contracts/test/lib_test_spec.js +++ b/dapps/tests/contracts/test/lib_test_spec.js @@ -1,6 +1,6 @@ -/*global contract, config, it*/ +/*global artifacts, contract, config, it*/ const assert = require('assert'); -const Test2 = require('Embark/contracts/Test2'); +const Test2 = artifacts.require('Test2'); config({ contracts: { diff --git a/dapps/tests/contracts/test/simple_storage_spec.js b/dapps/tests/contracts/test/simple_storage_spec.js index 79aa9635d8..86ced4e710 100644 --- a/dapps/tests/contracts/test/simple_storage_spec.js +++ b/dapps/tests/contracts/test/simple_storage_spec.js @@ -1,6 +1,6 @@ -/*global contract, config, it*/ +/*global artifacts, contract, config, it*/ const assert = require('assert'); -const SimpleStorage = require('Embark/contracts/SimpleStorage'); +const SimpleStorage = artifacts.require('SimpleStorage'); config({ contracts: { diff --git a/dapps/tests/contracts/test/token_spec.js b/dapps/tests/contracts/test/token_spec.js index f8d931064c..8835c4f70d 100644 --- a/dapps/tests/contracts/test/token_spec.js +++ b/dapps/tests/contracts/test/token_spec.js @@ -1,10 +1,10 @@ -/*global describe, config, it*/ +/*global artifacts, describe, config, it*/ const assert = require('assert'); -const Token = require('Embark/contracts/Token'); -const MyToken = require('Embark/contracts/MyToken'); -const MyToken2 = require('Embark/contracts/MyToken2'); -const AlreadyDeployedToken = require('Embark/contracts/AlreadyDeployedToken'); -const Test = require('Embark/contracts/Test'); +const Token = artifacts.require('Token'); +const MyToken = artifacts.require('MyToken'); +const MyToken2 = artifacts.require('MyToken2'); +const AlreadyDeployedToken = artifacts.require('AlreadyDeployedToken'); +const Test = artifacts.require('Test'); config({ contracts: { diff --git a/packages/plugins/mocha-tests/package.json b/packages/plugins/mocha-tests/package.json index 4f28d0adf9..a0a3ded7c8 100644 --- a/packages/plugins/mocha-tests/package.json +++ b/packages/plugins/mocha-tests/package.json @@ -50,6 +50,7 @@ "@babel/runtime-corejs3": "7.7.4", "@types/async": "3.0.3", "async": "3.1.0", + "colors": "1.4.0", "core-js": "3.4.3", "embark-i18n": "^5.1.1", "embark-utils": "^5.2.0-nightly.1", diff --git a/packages/plugins/mocha-tests/src/lib/index.js b/packages/plugins/mocha-tests/src/lib/index.js index fe6032a2bd..7d9da800d8 100644 --- a/packages/plugins/mocha-tests/src/lib/index.js +++ b/packages/plugins/mocha-tests/src/lib/index.js @@ -1,3 +1,4 @@ +import 'colors'; import {__} from 'embark-i18n'; const async = require('async'); @@ -31,6 +32,31 @@ class MochaTestRunner { ); } + static originalRequire = require('module').prototype.require; + + static requireArtifact(artifactName, compiledContracts) { + if (artifactName === 'EmbarkJS') return EmbarkJS; + + const instance = compiledContracts[artifactName]; + + if (!instance) { + compiledContracts[artifactName] = {}; + } + + if (!compiledContracts[artifactName].abiDefinition) { + return compiledContracts[artifactName]; + } + + try { + return Object.setPrototypeOf( + instance, + EmbarkJS.Blockchain.Contract(instance) + ); + } catch (e) { + return instance; + } + } + addFile(path) { if (!this.match(path)) { throw new Error(`invalid JavaScript test path: ${path}`); @@ -49,7 +75,6 @@ class MochaTestRunner { this.options = options; const Module = require("module"); - const originalRequire = require("module").prototype.require; let accounts = []; let compiledContracts = {}; @@ -185,29 +210,29 @@ class MochaTestRunner { return seriesCb(null, 0); } + let testRunner = this; + Module.prototype.require = function(req) { + if (["Embark/EmbarkJS", "EmbarkJS"].includes(req)) { + testRunner.logger.warn( + `${__('WARNING!')} ${__('Use')} ${`artifacts.require('EmbarkJS')`.cyan}, ${__('the syntax').yellow} ${`require('${req}')`.cyan} ${__('has been deprecated and will be removed in future versions').yellow}` + ); + return MochaTestRunner.requireArtifact("EmbarkJS"); + } + const prefix = "Embark/contracts/"; if (req.startsWith(prefix)) { - const contractClass = req.replace(prefix, ""); - const instance = compiledContracts[contractClass]; - - if (!instance) { - compiledContracts[contractClass] = {}; - } - if (!compiledContracts[contractClass].abiDefinition) { - return compiledContracts[contractClass]; - } - try { - return Object.setPrototypeOf(instance, EmbarkJS.Blockchain.Contract(instance)); - } catch (e) { - return instance; - } - } - if (req === "Embark/EmbarkJS") { - return EmbarkJS; + const artifactName = req.replace(prefix, ""); + testRunner.logger.warn( + `${__('WARNING!')} ${__('Use')} ${`artifacts.require('${artifactName}')`.cyan}, ${__('the syntax').yellow} ${`require('${req}')`.cyan} ${__('has been deprecated and will be removed in future versions').yellow}` + ); + return MochaTestRunner.requireArtifact( + artifactName, + compiledContracts + ); } - return originalRequire.apply(this, arguments); + return MochaTestRunner.originalRequire.call(this, req); }; const mocha = new Mocha(); @@ -222,11 +247,18 @@ class MochaTestRunner { global.config = config; }); + global.artifacts = { + require: (artifactName) => MochaTestRunner.requireArtifact( + artifactName, + compiledContracts + ) + }; + mocha.suite.timeout(TEST_TIMEOUT); mocha.addFile(file); mocha.run((failures) => { - Module.prototype.require = originalRequire; + Module.prototype.require = MochaTestRunner.originalRequire; seriesCb(null, failures); }); }); @@ -237,7 +269,7 @@ class MochaTestRunner { } ], (err) => { this.embark.config.plugins.runActionsForEvent('tests:finished', () => { - Module.prototype.require = originalRequire; + Module.prototype.require = MochaTestRunner.originalRequire; cb(err); });