Files: 46f39d8aa42cae443b0c51d6740a51667aa77674 / tests / interfaceRunner.js
1808 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') |
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: `/accounts/${envData.caller}/${common.PARENT}/${envData.address}/code` |
42 | }) |
43 | message.data = new Buffer(envData.callData.slice(2), 'hex') |
44 | message.value = new U128(envData.callValue) |
45 | message.gas = envData.gasLeft |
46 | message.block = block |
47 | message.blockchain = fakeBlockChain |
48 | |
49 | const results = await hypervisor.send(message) |
50 | t.equals(results.exception, undefined) |
51 | } |
52 | t.end() |
53 | process.exit() |
54 | }) |
55 | } |
56 |
Built with git-ssb-web