Files: de08fdeeb9077d790c5ebdec0cfba0dee14b2e0b / tests / interfaceRunner.js
1855 bytesRaw
1 | const tape = require('tape') |
2 | const fs = require('fs') |
3 | const Graph = require('ipld-graph-builder') |
4 | const Block = require('../deps/block') |
5 | const U128 = require('fixed-bn.js').U128 |
6 | const Address = require('fixed-bn.js').Address |
7 | // TODO remove fakeblockchain |
8 | const fakeBlockChain = require('../fakeBlockChain.js') |
9 | const Hypervisor = require('../hypervisor.js') |
10 | const Message = require('primea-message/atomic') |
11 | const common = require('../common') |
12 | const EVMinterface = require('../EVMinterface.js') |
13 | const IPFS = require('ipfs') |
14 | |
15 | const ipfs = new IPFS() |
16 | const graph = new Graph(ipfs) |
17 | |
18 | const dir = `${__dirname}/interface` |
19 | // get the test names |
20 | let tests = fs.readdirSync(dir).filter((file) => file.endsWith('.wast')) |
21 | // tests = ['address.js'] |
22 | |
23 | ipfs.on('start', async () => { |
24 | runTests(tests) |
25 | }) |
26 | |
27 | function runTests (tests) { |
28 | tape('EVM interface tests', async(t) => { |
29 | for (let testName of tests) { |
30 | t.comment(testName) |
31 | testName = testName.split('.')[0] |
32 | const hypervisor = new Hypervisor(graph, {}, [EVMinterface]) |
33 | const envData = JSON.parse(fs.readFileSync(`${dir}/${testName}.json`).toString()) |
34 | const code = fs.readFileSync(`${dir}/${testName}.wasm`) |
35 | envData.state[envData.address].code = code |
36 | |
37 | const block = new Block() |
38 | block.header.coinbase = new Address(envData.coinbase) |
39 | |
40 | const message = new Message({ |
41 | to: `${envData.caller}/${common.PARENT}/${envData.address}/code`, |
42 | data: Buffer.from(envData.callData.slice(2), 'hex'), |
43 | value: new U128(envData.callValue), |
44 | gas: envData.gasLeft, |
45 | block: block, |
46 | blockchain: fakeBlockChain |
47 | }) |
48 | |
49 | try { |
50 | const results = await hypervisor.send('accounts', message) |
51 | t.equals(results.exception, undefined) |
52 | } catch (e) { |
53 | console.log(e) |
54 | } |
55 | } |
56 | t.end() |
57 | process.exit() |
58 | }) |
59 | } |
60 |
Built with git-ssb-web