log transaction error

pull/5370/head
Omkara 6 years ago
parent 67c5852658
commit b4d88db199
  1. 1
      remix-tests/package.json
  2. 12
      remix-tests/src/deployer.js
  3. 4
      remix-tests/src/runTestSources.ts
  4. 8
      remix-tests/src/testRunner.ts
  5. 77
      remix-tests/tests/testRunner.ts

@ -37,6 +37,7 @@
}, },
"homepage": "https://github.com/ethereum/remix-tests#readme", "homepage": "https://github.com/ethereum/remix-tests#readme",
"dependencies": { "dependencies": {
"@types/async": "^2.4.0",
"async": "^2.6.0", "async": "^2.6.0",
"change-case": "^3.0.1", "change-case": "^3.0.1",
"colors": "^1.1.2", "colors": "^1.1.2",

@ -69,7 +69,7 @@ function deployAll (compileResult, web3, callback) {
callback(null, { result: { createdAddress: receipt.contractAddress } }) // TODO this will only work with JavaScriptV VM callback(null, { result: { createdAddress: receipt.contractAddress } }) // TODO this will only work with JavaScriptV VM
}).on('error', function (err) { }).on('error', function (err) {
console.dir(err) console.error(err)
callback(err) callback(err)
}) })
}) })
@ -79,9 +79,13 @@ function deployAll (compileResult, web3, callback) {
let contract = compiledObject[contractName] let contract = compiledObject[contractName]
let encodeDataFinalCallback = (error, contractDeployData) => { let encodeDataFinalCallback = (error, contractDeployData) => {
if (error) return nextEach(error) if (error) return nextEach(error)
let contractObject = new web3.eth.Contract(contract.abi) try {
let deployObject = contractObject.deploy({arguments: [], data: '0x' + contractDeployData.dataHex}) let contractObject = new web3.eth.Contract(contract.abi)
deployRunner(deployObject, contractObject, contractName, contract.filename, (error) => { nextEach(error) }) 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) } let encodeDataStepCallback = (msg) => { console.dir(msg) }

@ -1,4 +1,4 @@
import async = require('async') import async from 'async'
require('colors') require('colors')
import Compiler = require('./compiler.js') import Compiler = require('./compiler.js')
@ -115,4 +115,4 @@ function runTestSources(contractSources, testCallback, resultCallback, finalCall
} }
], finalCallback) ], finalCallback)
} }
export = runTestSources; export = runTestSources;

@ -1,6 +1,6 @@
import async = require('async'); import async from 'async'
import changeCase = require('change-case'); import * as changeCase from 'change-case'
import Web3 = require('web3'); import Web3 from 'web3'
function getFunctionFullName (signature, methodIdentifiers) { function getFunctionFullName (signature, methodIdentifiers) {
for (var method in methodIdentifiers) { for (var method in methodIdentifiers) {
@ -144,4 +144,4 @@ function runTest (testName, testObject, contractDetails, opts, testCallback, res
}) })
} }
export = runTest export = runTest

@ -1,48 +1,53 @@
import async = require('async') import async from 'async'
import Web3 = require('web3') import Web3 from 'web3'
import assert = require('assert') import * as assert from 'assert'
import { Provider } from 'remix-simulator'
let Compiler = require('../src/compiler.js') let Compiler = require('../src/compiler.js')
let Deployer = require('../src/deployer.js') let Deployer = require('../src/deployer.js')
let TestRunner = require('../src/testRunner.ts') let TestRunner = require('../src/testRunner.ts')
const Provider = require('remix-simulator').Provider
interface Results { interface Results {
passingNum: number, passingNum: number,
failureNum: number, failureNum: number,
} }
function compileAndDeploy (filename, callback) { function compileAndDeploy (filename: string, callback: Function) {
let web3 = new Web3() let web3 = new Web3()
web3.setProvider(new Provider()) web3.setProvider(new Provider())
let compilationData let compilationData: Object
let accounts let accounts: Object
async.waterfall([ async.waterfall([
function getAccountList (next) { function getAccountList (next: Function) {
web3.eth.getAccounts((_err, _accounts) => { web3.eth.getAccounts((_err: Error, _accounts: Object) => {
accounts = _accounts accounts = _accounts
next(_err) next(_err)
}) })
}, },
function compile (next) { function compile (next: Function) {
Compiler.compileFileOrFiles(filename, false, {accounts}, next) Compiler.compileFileOrFiles(filename, false, {accounts}, next)
}, },
function deployAllContracts (compilationResult, next) { function deployAllContracts (compilationResult, next) {
compilationData = compilationResult try {
Deployer.deployAll(compilationResult, web3, next) compilationData = compilationResult
Deployer.deployAll(compilationResult, web3, next)
next()
} catch(e) {
throw e
}
} }
], function (_err, contracts) { ], function (_err, contracts) {
callback(null, compilationData, contracts, accounts) callback(null, compilationData, contracts, accounts)
}) })
} }
describe('testRunner', function () { describe('testRunner', function () {
describe('#runTest', function() { describe('#runTest', function() {
describe('test with beforeAll', function () { describe('test with beforeAll', function () {
let filename = 'tests/examples_1/simple_storage_test.sol' let filename = 'tests/examples_1/simple_storage_test.sol'
let tests:any[] = [], results:Results; let tests:any[] = [], results:Results;
before(function (done) { before(function (done) {
compileAndDeploy(filename, function (_err, compilationData, contracts, accounts) { compileAndDeploy(filename, function (_err, compilationData, contracts, accounts) {
var testCallback = function (test) { var testCallback = function (test) {
@ -55,15 +60,15 @@ function compileAndDeploy (filename, callback) {
TestRunner.runTest('MyTest', contracts.MyTest, compilationData[filename]['MyTest'], { accounts }, testCallback, resultsCallback) TestRunner.runTest('MyTest', contracts.MyTest, compilationData[filename]['MyTest'], { accounts }, testCallback, resultsCallback)
}) })
}) })
it('should 1 passing test', function () { it('should 1 passing test', function () {
assert.equal(results.passingNum, 2) assert.equal(results.passingNum, 2)
}) })
it('should 1 failing test', function () { it('should 1 failing test', function () {
assert.equal(results.failureNum, 2) assert.equal(results.failureNum, 2)
}) })
it('should returns 5 messages', function () { it('should returns 5 messages', function () {
assert.deepEqual(tests, [ assert.deepEqual(tests, [
{ type: 'contract', value: 'MyTest', filename: 'tests/examples_1/simple_storage_test.sol' }, { 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 () { describe('test with beforeEach', function () {
let filename = 'tests/examples_2/simple_storage_test.sol' let filename = 'tests/examples_2/simple_storage_test.sol'
let tests:any[] = [], results:Results; let tests:any[] = [], results:Results;
before(function (done) { before(function (done) {
compileAndDeploy(filename, function (_err, compilationData, contracts, accounts) { compileAndDeploy(filename, function (_err, compilationData, contracts, accounts) {
var testCallback = function (test) { var testCallback = function (test) {
@ -91,15 +96,15 @@ function compileAndDeploy (filename, callback) {
TestRunner.runTest('MyTest', contracts.MyTest, compilationData[filename]['MyTest'], { accounts }, testCallback, resultsCallback) TestRunner.runTest('MyTest', contracts.MyTest, compilationData[filename]['MyTest'], { accounts }, testCallback, resultsCallback)
}) })
}) })
it('should 2 passing tests', function () { it('should 2 passing tests', function () {
assert.equal(results.passingNum, 2) assert.equal(results.passingNum, 2)
}) })
it('should 0 failing tests', function () { it('should 0 failing tests', function () {
assert.equal(results.failureNum, 0) assert.equal(results.failureNum, 0)
}) })
it('should returns 3 messages', function () { it('should returns 3 messages', function () {
assert.deepEqual(tests, [ assert.deepEqual(tests, [
{ type: 'contract', value: 'MyTest', filename: 'tests/examples_2/simple_storage_test.sol' }, { type: 'contract', value: 'MyTest', filename: 'tests/examples_2/simple_storage_test.sol' },
@ -108,7 +113,7 @@ function compileAndDeploy (filename, callback) {
]) ])
}) })
}) })
// Test string equality // Test string equality
describe('test string equality', function () { describe('test string equality', function () {
let filename = 'tests/examples_3/simple_string_test.sol' 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) TestRunner.runTest('StringTest2', contracts.StringTest2, compilationData[filename]['StringTest2'], { accounts }, testCallback, resultsCallback)
}) })
}) })
it('should 2 passing tests', function () { it('should 2 passing tests', function () {
assert.equal(results.passingNum, 2) assert.equal(results.passingNum, 2)
}) })
it('should 1 failing tests', function () { it('should 1 failing tests', function () {
assert.equal(results.failureNum, 1) assert.equal(results.failureNum, 1)
}) })
it('should returns 3 messages', function () { it('should returns 3 messages', function () {
assert.deepEqual(tests, [ assert.deepEqual(tests, [
{ type: 'contract', value: 'StringTest', filename: 'tests/examples_3/simple_string_test.sol' }, { 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 // Test signed/unsigned integer weight
describe('test number weight', function () { describe('test number weight', function () {
let filename = 'tests/number/number_test.sol' let filename = 'tests/number/number_test.sol'
let tests:any[] = [], results:Results; let tests:any[] = [], results:Results;
before(function (done) { before(function (done) {
compileAndDeploy(filename, function (_err, compilationData, contracts, accounts) { compileAndDeploy(filename, function (_err, compilationData, contracts, accounts) {
var testCallback = function (test) { var testCallback = function (test) {
@ -163,7 +168,7 @@ function compileAndDeploy (filename, callback) {
TestRunner.runTest('IntegerTest', contracts.IntegerTest, compilationData[filename]['IntegerTest'], { accounts }, testCallback, resultsCallback) TestRunner.runTest('IntegerTest', contracts.IntegerTest, compilationData[filename]['IntegerTest'], { accounts }, testCallback, resultsCallback)
}) })
}) })
it('should have 6 passing tests', function () { it('should have 6 passing tests', function () {
assert.equal(results.passingNum, 6) assert.equal(results.passingNum, 6)
}) })
@ -171,12 +176,12 @@ function compileAndDeploy (filename, callback) {
assert.equal(results.failureNum, 2) assert.equal(results.failureNum, 2)
}) })
}) })
// Test Transaction with different sender // Test Transaction with different sender
describe('various sender', function () { describe('various sender', function () {
let filename = 'tests/various_sender/sender_test.sol' let filename = 'tests/various_sender/sender_test.sol'
let tests:any[] = [], results:Results; let tests:any[] = [], results:Results;
before(function (done) { before(function (done) {
compileAndDeploy(filename, function (_err, compilationData, contracts, accounts) { compileAndDeploy(filename, function (_err, compilationData, contracts, accounts) {
var testCallback = function (test) { var testCallback = function (test) {
@ -186,12 +191,12 @@ function compileAndDeploy (filename, callback) {
results = _results results = _results
done() done()
} }
TestRunner.runTest('SenderTest', contracts.SenderTest, compilationData[filename]['SenderTest'], { accounts }, testCallback, resultsCallback) TestRunner.runTest('SenderTest', contracts.SenderTest, compilationData[filename]['SenderTest'], { accounts }, testCallback, resultsCallback)
}) })
}) })
it('should have 4 passing tests', function () { it('should have 4 passing tests', function () {
assert.equal(results.passingNum, 4) assert.equal(results.passingNum, 4)
}) })
@ -200,4 +205,4 @@ function compileAndDeploy (filename, callback) {
}) })
}) })
}) })
}) })

Loading…
Cancel
Save