From 7c16cfd4afef5804cdcdd391143415cee246d52a Mon Sep 17 00:00:00 2001 From: Omkara <0mkar@protonmail.com> Date: Mon, 4 Feb 2019 18:00:16 +0530 Subject: [PATCH] log transaction error --- remix-tests/package.json | 1 + remix-tests/src/deployer.js | 12 +++-- remix-tests/src/runTestSources.ts | 4 +- remix-tests/src/testRunner.ts | 8 ++-- remix-tests/tests/testRunner.ts | 77 ++++++++++++++++--------------- 5 files changed, 56 insertions(+), 46 deletions(-) diff --git a/remix-tests/package.json b/remix-tests/package.json index c6d2155b08..4f4c420be9 100644 --- a/remix-tests/package.json +++ b/remix-tests/package.json @@ -37,6 +37,7 @@ }, "homepage": "https://github.com/ethereum/remix-tests#readme", "dependencies": { + "@types/async": "^2.4.0", "async": "^2.6.0", "change-case": "^3.0.1", "colors": "^1.1.2", diff --git a/remix-tests/src/deployer.js b/remix-tests/src/deployer.js index d91438f697..a2bdc0a20e 100644 --- a/remix-tests/src/deployer.js +++ b/remix-tests/src/deployer.js @@ -69,7 +69,7 @@ function deployAll (compileResult, web3, callback) { callback(null, { result: { createdAddress: receipt.contractAddress } }) // TODO this will only work with JavaScriptV VM }).on('error', function (err) { - console.dir(err) + console.error(err) callback(err) }) }) @@ -79,9 +79,13 @@ function deployAll (compileResult, web3, callback) { let contract = compiledObject[contractName] let encodeDataFinalCallback = (error, contractDeployData) => { if (error) return nextEach(error) - let contractObject = new web3.eth.Contract(contract.abi) - let deployObject = contractObject.deploy({arguments: [], data: '0x' + contractDeployData.dataHex}) - deployRunner(deployObject, contractObject, contractName, contract.filename, (error) => { nextEach(error) }) + try { + let contractObject = new web3.eth.Contract(contract.abi) + let deployObject = contractObject.deploy({arguments: [], data: '0x' + contractDeployData.dataHex}) + deployRunner(deployObject, contractObject, contractName, contract.filename, (error) => { nextEach(error) }) + } catch (e) { + throw e + } } let encodeDataStepCallback = (msg) => { console.dir(msg) } diff --git a/remix-tests/src/runTestSources.ts b/remix-tests/src/runTestSources.ts index 1b38e1da66..89e8fc7580 100644 --- a/remix-tests/src/runTestSources.ts +++ b/remix-tests/src/runTestSources.ts @@ -1,4 +1,4 @@ -import async = require('async') +import async from 'async' require('colors') import Compiler = require('./compiler.js') @@ -115,4 +115,4 @@ function runTestSources(contractSources, testCallback, resultCallback, finalCall } ], finalCallback) } -export = runTestSources; \ No newline at end of file +export = runTestSources; diff --git a/remix-tests/src/testRunner.ts b/remix-tests/src/testRunner.ts index ef32e6c17f..93d07be88d 100644 --- a/remix-tests/src/testRunner.ts +++ b/remix-tests/src/testRunner.ts @@ -1,6 +1,6 @@ -import async = require('async'); -import changeCase = require('change-case'); -import Web3 = require('web3'); +import async from 'async' +import * as changeCase from 'change-case' +import Web3 from 'web3' function getFunctionFullName (signature, methodIdentifiers) { for (var method in methodIdentifiers) { @@ -144,4 +144,4 @@ function runTest (testName, testObject, contractDetails, opts, testCallback, res }) } -export = runTest \ No newline at end of file +export = runTest diff --git a/remix-tests/tests/testRunner.ts b/remix-tests/tests/testRunner.ts index 7008c10a2c..49356c4608 100644 --- a/remix-tests/tests/testRunner.ts +++ b/remix-tests/tests/testRunner.ts @@ -1,48 +1,53 @@ -import async = require('async') -import Web3 = require('web3') -import assert = require('assert') +import async from 'async' +import Web3 from 'web3' +import * as assert from 'assert' +import { Provider } from 'remix-simulator' let Compiler = require('../src/compiler.js') let Deployer = require('../src/deployer.js') let TestRunner = require('../src/testRunner.ts') -const Provider = require('remix-simulator').Provider interface Results { passingNum: number, failureNum: number, } -function compileAndDeploy (filename, callback) { +function compileAndDeploy (filename: string, callback: Function) { let web3 = new Web3() web3.setProvider(new Provider()) - let compilationData - let accounts + let compilationData: Object + let accounts: Object async.waterfall([ - function getAccountList (next) { - web3.eth.getAccounts((_err, _accounts) => { + function getAccountList (next: Function) { + web3.eth.getAccounts((_err: Error, _accounts: Object) => { accounts = _accounts next(_err) }) }, - function compile (next) { + function compile (next: Function) { Compiler.compileFileOrFiles(filename, false, {accounts}, next) }, function deployAllContracts (compilationResult, next) { - compilationData = compilationResult - Deployer.deployAll(compilationResult, web3, next) + try { + compilationData = compilationResult + Deployer.deployAll(compilationResult, web3, next) + next() + } catch(e) { + throw e + } } ], function (_err, contracts) { callback(null, compilationData, contracts, accounts) }) } - - + + describe('testRunner', function () { describe('#runTest', function() { describe('test with beforeAll', function () { let filename = 'tests/examples_1/simple_storage_test.sol' let tests:any[] = [], results:Results; - + before(function (done) { compileAndDeploy(filename, function (_err, compilationData, contracts, accounts) { var testCallback = function (test) { @@ -55,15 +60,15 @@ function compileAndDeploy (filename, callback) { TestRunner.runTest('MyTest', contracts.MyTest, compilationData[filename]['MyTest'], { accounts }, testCallback, resultsCallback) }) }) - + it('should 1 passing test', function () { assert.equal(results.passingNum, 2) }) - + it('should 1 failing test', function () { assert.equal(results.failureNum, 2) }) - + it('should returns 5 messages', function () { assert.deepEqual(tests, [ { type: 'contract', value: 'MyTest', filename: 'tests/examples_1/simple_storage_test.sol' }, @@ -74,11 +79,11 @@ function compileAndDeploy (filename, callback) { ]) }) }) - + describe('test with beforeEach', function () { let filename = 'tests/examples_2/simple_storage_test.sol' let tests:any[] = [], results:Results; - + before(function (done) { compileAndDeploy(filename, function (_err, compilationData, contracts, accounts) { var testCallback = function (test) { @@ -91,15 +96,15 @@ function compileAndDeploy (filename, callback) { TestRunner.runTest('MyTest', contracts.MyTest, compilationData[filename]['MyTest'], { accounts }, testCallback, resultsCallback) }) }) - + it('should 2 passing tests', function () { assert.equal(results.passingNum, 2) }) - + it('should 0 failing tests', function () { assert.equal(results.failureNum, 0) }) - + it('should returns 3 messages', function () { assert.deepEqual(tests, [ { type: 'contract', value: 'MyTest', filename: 'tests/examples_2/simple_storage_test.sol' }, @@ -108,7 +113,7 @@ function compileAndDeploy (filename, callback) { ]) }) }) - + // Test string equality describe('test string equality', function () { let filename = 'tests/examples_3/simple_string_test.sol' @@ -127,15 +132,15 @@ function compileAndDeploy (filename, callback) { TestRunner.runTest('StringTest2', contracts.StringTest2, compilationData[filename]['StringTest2'], { accounts }, testCallback, resultsCallback) }) }) - + it('should 2 passing tests', function () { assert.equal(results.passingNum, 2) }) - + it('should 1 failing tests', function () { assert.equal(results.failureNum, 1) }) - + it('should returns 3 messages', function () { assert.deepEqual(tests, [ { type: 'contract', value: 'StringTest', filename: 'tests/examples_3/simple_string_test.sol' }, @@ -145,12 +150,12 @@ function compileAndDeploy (filename, callback) { ]) }) }) - + // Test signed/unsigned integer weight describe('test number weight', function () { let filename = 'tests/number/number_test.sol' let tests:any[] = [], results:Results; - + before(function (done) { compileAndDeploy(filename, function (_err, compilationData, contracts, accounts) { var testCallback = function (test) { @@ -163,7 +168,7 @@ function compileAndDeploy (filename, callback) { TestRunner.runTest('IntegerTest', contracts.IntegerTest, compilationData[filename]['IntegerTest'], { accounts }, testCallback, resultsCallback) }) }) - + it('should have 6 passing tests', function () { assert.equal(results.passingNum, 6) }) @@ -171,12 +176,12 @@ function compileAndDeploy (filename, callback) { assert.equal(results.failureNum, 2) }) }) - + // Test Transaction with different sender describe('various sender', function () { let filename = 'tests/various_sender/sender_test.sol' let tests:any[] = [], results:Results; - + before(function (done) { compileAndDeploy(filename, function (_err, compilationData, contracts, accounts) { var testCallback = function (test) { @@ -186,12 +191,12 @@ function compileAndDeploy (filename, callback) { results = _results done() } - + TestRunner.runTest('SenderTest', contracts.SenderTest, compilationData[filename]['SenderTest'], { accounts }, testCallback, resultsCallback) - + }) }) - + it('should have 4 passing tests', function () { assert.equal(results.passingNum, 4) }) @@ -200,4 +205,4 @@ function compileAndDeploy (filename, callback) { }) }) }) - }) \ No newline at end of file + })