const assert = require('assert'); const util = require('./../util/util.js'); const API = require('./../../lib/api.js'); const detect = require('detect-port'); const Ganache = require('ganache-cli'); describe('api', () => { let opts; beforeEach(() => opts = {silent: true}) it('getInstrumentationData', function(){ const api = new API(opts); const canonicalPath = 'statements/single.sol' const source = util.getCode(canonicalPath); api.instrument([{ source: source, canonicalPath: canonicalPath }]); const data = api.getInstrumentationData(); const hash = Object.keys(data)[0]; assert(data[hash].hits === 0); }); it('setInstrumentationData', function(){ let api = new API(opts); const canonicalPath = 'statements/single.sol' const source = util.getCode(canonicalPath); api.instrument([{ source: source, canonicalPath: canonicalPath }]); const cloneA = api.getInstrumentationData(); const hash = Object.keys(cloneA)[0]; // Verify cloning cloneA[hash].hits = 5; const cloneB = api.getInstrumentationData(); assert(cloneB[hash].hits === 0); // Verify setting api = new API(opts); api.instrument([{ source: source, canonicalPath: canonicalPath }]); api.setInstrumentationData(cloneA); const cloneC = api.getInstrumentationData(); assert(cloneC[hash].hits === 5); }); it('ganache: autoLaunchServer === false', async function(){ const api = new API(opts); const port = api.port; const server = await api.ganache(Ganache, false); assert(typeof port === 'number') assert(typeof server === 'object'); assert(typeof server.listen === 'function'); const freePort = await detect(port); assert(freePort === port); }); it('config: autoLaunchServer: false', async function(){ opts.autoLaunchServer = false; const api = new API(opts); const port = api.port; const server = await api.ganache(Ganache); assert(typeof port === 'number') assert(typeof server === 'object'); assert(typeof server.listen === 'function'); const freePort = await detect(port); assert(freePort === port); }) })