From 3275f1b06b6082d37de0413b6f52af2a05c4b0e6 Mon Sep 17 00:00:00 2001 From: Iuri Matias Date: Fri, 2 Feb 2018 17:57:33 -0500 Subject: [PATCH] refactor compiler: rejoin compileFile and compileFiles --- index.js | 10 +++------ src/compiler.js | 54 +++++++++++++-------------------------------- tests/testRunner.js | 2 +- 3 files changed, 19 insertions(+), 47 deletions(-) diff --git a/index.js b/index.js index a7ba1499ae..a9ca3245a6 100644 --- a/index.js +++ b/index.js @@ -7,14 +7,10 @@ let Compiler = require('./src/compiler.js') let Deployer = require('./src/deployer.js') let TestRunner = require('./src/testRunner.js') -var runTestFiles = function(filepath, is_directory, web3) { +var runTestFiles = function(filepath, isDirectory, web3) { async.waterfall([ function compile (next) { - if (is_directory) { - Compiler.compileFiles(filepath, next) - } else { - Compiler.compileFile(filepath, next) - } + Compiler.compileFileOrFiles(filepath, isDirectory, next) }, function deployAllContracts (compilationResult, next) { Deployer.deployAll(compilationResult, web3, function (err, contracts) { @@ -23,7 +19,7 @@ var runTestFiles = function(filepath, is_directory, web3) { } let contractsToTest = [] - if (is_directory) { + if (isDirectory) { fs.readdirSync(filepath).forEach(filename => { if (filename.indexOf('_test.sol') < 0) { return diff --git a/src/compiler.js b/src/compiler.js index 0db951a6b9..55d7f13147 100644 --- a/src/compiler.js +++ b/src/compiler.js @@ -6,49 +6,26 @@ let RemixCompiler = require('remix-solidity').Compiler // TODO: replace this with remix's own compiler code -function compileFile (filename, 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 - let filepath = path.dirname(filename) - fs.readdirSync(filepath).forEach(file => { - sources[file] = {content: fs.readFileSync(path.join(filepath, file)).toString()} - }) +function compileFileOrFiles (filename, isDirectory, cb) { + let compiler, filepath - 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()} - }) + 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 => { + sources[file] = {content: fs.readFileSync(path.join(filepath, file)).toString()} + }) + } async.waterfall([ function loadCompiler (next) { @@ -62,7 +39,7 @@ function compileFiles (directory, cb) { compiler.event.register('compilationFinished', this, function (success, data, source) { next(null, data) }) - compiler.compile(sources, directory) + compiler.compile(sources, filepath) } ], function (err, result) { cb(err, result.contracts) @@ -70,6 +47,5 @@ function compileFiles (directory, cb) { } module.exports = { - compileFile: compileFile, - compileFiles: compileFiles + compileFileOrFiles: compileFileOrFiles } diff --git a/tests/testRunner.js b/tests/testRunner.js index 8b1a76d375..065117f4c0 100644 --- a/tests/testRunner.js +++ b/tests/testRunner.js @@ -12,7 +12,7 @@ function compileAndDeploy (filename, callback) { async.waterfall([ function compile (next) { - Compiler.compileFile(filename, next) + Compiler.compileFileOrFiles(filename, false, next) }, function deployAllContracts (compilationResult, next) { Deployer.deployAll(compilationResult, web3, next)