@nomiclabs/buidler-truffle4
Version:
Truffle 4 Buidler compatibility plugin
69 lines • 3.48 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const task_names_1 = require("@nomiclabs/buidler/builtin-tasks/task-names");
const config_1 = require("@nomiclabs/buidler/config");
const glob_1 = require("@nomiclabs/buidler/internal/util/glob");
const plugins_1 = require("@nomiclabs/buidler/plugins");
const path_1 = require("path");
const artifacts_1 = require("./artifacts");
const fixture_1 = require("./fixture");
const provisioner_1 = require("./provisioner");
const task_names_2 = require("./task-names");
function default_1() {
config_1.usePlugin("@nomiclabs/buidler-web3-legacy");
let accounts;
config_1.extendEnvironment((env) => {
accounts = undefined;
env.artifacts = plugins_1.lazyObject(() => {
const provisioner = new provisioner_1.LazyTruffleContractProvisioner(env.web3, env.network.config, env.network.config.from);
return new artifacts_1.TruffleEnvironmentArtifacts(env.config.paths.artifacts, provisioner);
});
env.assert = plugins_1.lazyFunction(() => require("chai").assert);
env.expect = plugins_1.lazyFunction(() => require("chai").expect);
env.contract = (description, definition) => {
if (env.network.name === plugins_1.BUIDLEREVM_NETWORK_NAME) {
if (accounts === undefined) {
const { privateToAddress, bufferToHex } = require("ethereumjs-util");
const netConfig = env.network.config;
accounts = netConfig.accounts.map((acc) => bufferToHex(privateToAddress(acc.privateKey)));
}
}
else if (accounts === undefined) {
throw new plugins_1.BuidlerPluginError(`To run your tests that use Truffle's "contract()" function with the network "${env.network.name}", you need to use Buidler's CLI`);
}
describe(`Contract: ${description}`, () => {
before("Running truffle fixture if available", async function () {
await env.run(task_names_2.RUN_TRUFFLE_FIXTURE_TASK);
});
definition(accounts);
});
};
});
config_1.internalTask(task_names_1.TASK_TEST_SETUP_TEST_ENVIRONMENT, async (_, { pweb3, network }) => {
if (network.name !== plugins_1.BUIDLEREVM_NETWORK_NAME) {
accounts = await pweb3.eth.getAccounts();
}
});
config_1.internalTask(task_names_1.TASK_COMPILE_GET_SOURCE_PATHS, async (_, { config }, runSuper) => {
const sources = await runSuper();
const testSources = await glob_1.glob(path_1.join(config.paths.tests, "**", "*.sol"));
return [...sources, ...testSources];
});
let wasWarningShown = false;
config_1.internalTask(task_names_2.RUN_TRUFFLE_FIXTURE_TASK, async (_, env) => {
const paths = env.config.paths;
const hasFixture = await fixture_1.hasTruffleFixture(paths);
if (!wasWarningShown) {
if ((await fixture_1.hasMigrations(paths)) && !hasFixture) {
console.warn("Your project has Truffle migrations, which have to be turn into a fixture to run your tests with Buidler");
wasWarningShown = true;
}
}
if (hasFixture) {
const fixture = await fixture_1.getTruffleFixtureFunction(paths);
await fixture(env);
}
});
}
exports.default = default_1;
//# sourceMappingURL=index.js.map