refactor compiler: rejoin compileFile and compileFiles

pull/7/head
Iuri Matias 7 years ago
parent 84a4d593a2
commit 3275f1b06b
  1. 10
      index.js
  2. 48
      src/compiler.js
  3. 2
      tests/testRunner.js

@ -7,14 +7,10 @@ let Compiler = require('./src/compiler.js')
let Deployer = require('./src/deployer.js') let Deployer = require('./src/deployer.js')
let TestRunner = require('./src/testRunner.js') let TestRunner = require('./src/testRunner.js')
var runTestFiles = function(filepath, is_directory, web3) { var runTestFiles = function(filepath, isDirectory, web3) {
async.waterfall([ async.waterfall([
function compile (next) { function compile (next) {
if (is_directory) { Compiler.compileFileOrFiles(filepath, isDirectory, next)
Compiler.compileFiles(filepath, next)
} else {
Compiler.compileFile(filepath, next)
}
}, },
function deployAllContracts (compilationResult, next) { function deployAllContracts (compilationResult, next) {
Deployer.deployAll(compilationResult, web3, function (err, contracts) { Deployer.deployAll(compilationResult, web3, function (err, contracts) {
@ -23,7 +19,7 @@ var runTestFiles = function(filepath, is_directory, web3) {
} }
let contractsToTest = [] let contractsToTest = []
if (is_directory) { if (isDirectory) {
fs.readdirSync(filepath).forEach(filename => { fs.readdirSync(filepath).forEach(filename => {
if (filename.indexOf('_test.sol') < 0) { if (filename.indexOf('_test.sol') < 0) {
return return

@ -6,50 +6,27 @@ let RemixCompiler = require('remix-solidity').Compiler
// TODO: replace this with remix's own compiler code // TODO: replace this with remix's own compiler code
function compileFile (filename, cb) { function compileFileOrFiles (filename, isDirectory, cb) {
let compiler let compiler, filepath
const sources = { const sources = {
'tests.sol': {content: fs.readFileSync('sol/tests.sol').toString()} 'tests.sol': {content: fs.readFileSync('sol/tests.sol').toString()}
} }
// TODO: for now assumes filepath dir contains all tests, later all this // TODO: for now assumes filepath dir contains all tests, later all this
// should be replaced with remix's & browser solidity compiler code // should be replaced with remix's & browser solidity compiler code
let filepath = path.dirname(filename) if (isDirectory) {
filepath = filename
fs.readdirSync(filename).forEach(file => {
sources[file] = {content: fs.readFileSync(path.join(filename, file)).toString()}
})
} else {
filepath = path.dirname(filename)
fs.readdirSync(filepath).forEach(file => { fs.readdirSync(filepath).forEach(file => {
sources[file] = {content: fs.readFileSync(path.join(filepath, file)).toString()} sources[file] = {content: fs.readFileSync(path.join(filepath, file)).toString()}
}) })
async.waterfall([
function loadCompiler (next) {
compiler = new RemixCompiler()
compiler.onInternalCompilerLoaded()
// compiler.event.register('compilerLoaded', this, function (version) {
next()
// });
},
function doCompilation (next) {
compiler.event.register('compilationFinished', this, function (success, data, source) {
next(null, data)
})
compiler.compile(sources, filepath)
}
], function (err, result) {
cb(err, result.contracts)
})
}
function compileFiles (directory, cb) {
let compiler
const sources = {
'tests.sol': {content: fs.readFileSync('sol/tests.sol').toString()}
} }
// TODO: for now assumes filepath dir contains all tests, later all this
// should be replaced with remix's & browser solidity compiler code
fs.readdirSync(directory).forEach(file => {
sources[file] = {content: fs.readFileSync(path.join(directory, file)).toString()}
})
async.waterfall([ async.waterfall([
function loadCompiler (next) { function loadCompiler (next) {
compiler = new RemixCompiler() compiler = new RemixCompiler()
@ -62,7 +39,7 @@ function compileFiles (directory, cb) {
compiler.event.register('compilationFinished', this, function (success, data, source) { compiler.event.register('compilationFinished', this, function (success, data, source) {
next(null, data) next(null, data)
}) })
compiler.compile(sources, directory) compiler.compile(sources, filepath)
} }
], function (err, result) { ], function (err, result) {
cb(err, result.contracts) cb(err, result.contracts)
@ -70,6 +47,5 @@ function compileFiles (directory, cb) {
} }
module.exports = { module.exports = {
compileFile: compileFile, compileFileOrFiles: compileFileOrFiles
compileFiles: compileFiles
} }

@ -12,7 +12,7 @@ function compileAndDeploy (filename, callback) {
async.waterfall([ async.waterfall([
function compile (next) { function compile (next) {
Compiler.compileFile(filename, next) Compiler.compileFileOrFiles(filename, false, next)
}, },
function deployAllContracts (compilationResult, next) { function deployAllContracts (compilationResult, next) {
Deployer.deployAll(compilationResult, web3, next) Deployer.deployAll(compilationResult, web3, next)

Loading…
Cancel
Save