Truffle plugin draft

truffle-plugin
cgewecke 5 years ago
parent 98d9b3906e
commit 5a7587ba15
  1. 23
      bin/exec.js
  2. 0
      dist/buidler.plugin.js
  3. 88
      dist/truffle.plugin.js
  4. 5
      truffle-plugin.json

@ -1,23 +0,0 @@
#!/usr/bin/env node
const App = require('./../lib/app.js');
const reqCwd = require('req-cwd');
const death = require('death');
const log = console.log;
const config = reqCwd.silent('./.solcover.js') || {};
const app = new App(config);
death((signal, err) => app.cleanUp(err));
app.generateCoverageEnvironment();
app.instrumentTarget();
app.launchTestrpc()
.then(() => {
app.runTestCommand();
app.generateReport();
})
.catch(err => log(err));

@ -0,0 +1,88 @@
/*
TruffleConfig Paths
===========================
build_directory /users/myPath/to/someProject/build
contracts_directory. /users/myPath/to/someProject/contracts
working_directory /users/myPath/to/someProject
contracts_build_directory /users/myPath/to/someProject/build/contracts
Compilation options override
----------------------------
build_directory /users/myPath/to/someProject/.coverageArtifacts
contracts_directory /users/myPath/to/someProject/.coverageContracts
Test options override
---------------------
contracts_directory, /users/myPath/to/someProject/.coverageContracts
contracts_build_directory, /users/myPath/to/someProject/.coverageArtifact/contracts
provider ganache.provider (w/ vm resolved)
logger add filter for unused variables...
Truffle Lib API
===============
load: const truffle = require("truffle") (or require("sc-truffle"))
compilation: await truffle.contracts.compile(config)
test: await truffle.test.run(config)
*/
const SolidityCoverage = require('./../lib/app.js');
module.exports = async (config) =>
let truffle;
try {
truffle = loadTruffleLibrary();
const coverageConfigPath = coveragePaths.config(config)
const coverageConfig = req.silent(coverageConfigPath) || {};
app.contractsDir = coveragePaths.contracts(config, coverageConfig);
const app = new SolidityCoverage(coverageConfig);
app.generateEnvironment();
app.instrument(config.contracts_directory);
// Compile instrumented sources / optimization off
config.contracts_directory = app.contractsDir;
config.build_directory = coveragePaths.artifacts.root(config, coverageConfig);
config.contracts_build_directory = coveragePaths.artifacts.contracts(config, coverageConfig);
config.compilers.solc.settings.optimization.enabled = false;
await truffle.contracts.compile(config);
// Test using compiled, instrumented sources
config.provider = await app.getCoverageProvider();
try {
await truffle.test.run(config)
} catch (err) {
app.testsErrored = true;
}
app.generateCoverage();
} catch(err){
return app.cleanUp(err);
}
return app.cleanUp();
}
// -------------------------------------- Helpers --------------------------------------------------
function loadTruffleLibrary(){
try { return require("truffle") } catch(err) {};
try { return require("sc-truffle")} catch(err) {};
throw new Error(utils.errors.NO_TRUFFLE_LIB)
}
const coveragePaths = {
contracts: (t, c) => path.join(path.dirname(t.contracts_directory), c.contractsDirName)),
config: (t) => path.join(t.working_directory, '.solcover.js'),
artifacts: {
root: (t, c) => path.join(path.dirname(t.build_directory), c.artifactsDirName),
contracts: (c, t) => path.join(c.build_directory, path.basename(t.contracts_build_directory))
}
}

@ -0,0 +1,5 @@
{
"commands": {
"coverage": "dist/truffle.plugin.js"
}
}
Loading…
Cancel
Save