refactor compiler: rejoin compileFile and compileFiles

pull/7/head
Iuri Matias 7 years ago
parent 84a4d593a2
commit 3275f1b06b
  1. 10
      index.js
  2. 54
      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 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

@ -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
}

@ -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)

Loading…
Cancel
Save