remix-project mirror
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
remix-project/remix-tests/dist/runTestSources.js

106 lines
4.2 KiB

"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
var async = require("async");
require('colors');
var Compiler = require("./compiler.js");
var Deployer = require("./deployer.js");
var runTest = require("./testRunner.js");
var Web3 = require("web3");
var remix_simulator_1 = __importDefault(require("remix-simulator"));
var createWeb3Provider = function () {
var web3 = new Web3();
web3.setProvider(new remix_simulator_1.default());
return web3;
};
function runTestSources(contractSources, testCallback, resultCallback, finalCallback, importFileCb, opts) {
opts = opts || {};
var web3 = opts.web3 || createWeb3Provider();
var accounts = opts.accounts || null;
async.waterfall([
function getAccountList(next) {
if (accounts)
return next();
web3.eth.getAccounts(function (_err, _accounts) {
accounts = _accounts;
next();
});
},
function compile(next) {
Compiler.compileContractSources(contractSources, importFileCb, next);
},
function deployAllContracts(compilationResult, next) {
Deployer.deployAll(compilationResult, web3, function (err, contracts) {
if (err) {
next(err);
}
next(null, compilationResult, contracts);
});
},
function determineTestContractsToRun(compilationResult, contracts, next) {
var contractsToTest = [];
var contractsToTestDetails = [];
var _loop_1 = function (filename) {
if (filename.indexOf('_test.sol') < 0) {
return "continue";
}
Object.keys(compilationResult[filename]).forEach(function (contractName) {
contractsToTestDetails.push(compilationResult[filename][contractName]);
contractsToTest.push(contractName);
});
};
for (var filename in compilationResult) {
_loop_1(filename);
}
next(null, contractsToTest, contractsToTestDetails, contracts);
},
function runTests(contractsToTest, contractsToTestDetails, contracts, next) {
var totalPassing = 0;
var totalFailing = 0;
var totalTime = 0;
var errors = [];
var _testCallback = function (result) {
if (result.type === 'testFailure') {
errors.push(result);
}
testCallback(result);
};
var _resultsCallback = function (_err, result, cb) {
resultCallback(_err, result, function () { });
totalPassing += result.passingNum;
totalFailing += result.failureNum;
totalTime += result.timePassed;
cb();
};
async.eachOfLimit(contractsToTest, 1, function (contractName, index, cb) {
runTest(contractName, contracts(contractName), contractsToTestDetails[index], { accounts: accounts }, _testCallback, function (err, result) {
if (err) {
return cb(err);
}
_resultsCallback(null, result, cb);
});
}, function (err) {
if (err) {
return next(err);
}
var finalResults = {
totalPassing: 0,
totalFailing: 0,
totalTime: 0,
errors: [],
};
finalResults.totalPassing = totalPassing || 0;
finalResults.totalFailing = totalFailing || 0;
finalResults.totalTime = totalTime || 0;
finalResults.errors = [];
errors.forEach(function (error, _index) {
finalResults.errors.push({ context: error.context, value: error.value, message: error.errMsg });
});
next(null, finalResults);
});
}
], finalCallback);
}
module.exports = runTestSources;
//# sourceMappingURL=runTestSources.js.map