git ssb

0+

wanderer🌟 / js-primea-hypervisor



Tree: 46f39d8aa42cae443b0c51d6740a51667aa77674

Files: 46f39d8aa42cae443b0c51d6740a51667aa77674 / tests / interfaceRunner.js

1808 bytesRaw
1const tape = require('tape')
2const fs = require('fs')
3const Graph = require('ipld-graph-builder')
4const Block = require('../deps/block')
5const U128 = require('fixed-bn.js').U128
6const Address = require('fixed-bn.js').Address
7// TODO remove fakeblockchain
8const fakeBlockChain = require('../fakeBlockChain.js')
9const Hypervisor = require('../hypervisor.js')
10const Message = require('primea-message')
11const common = require('../common')
12const EVMinterface = require('../EVMinterface.js')
13const IPFS = require('ipfs')
14
15const ipfs = new IPFS()
16const graph = new Graph(ipfs)
17
18const dir = `${__dirname}/interface`
19// get the test names
20let tests = fs.readdirSync(dir).filter((file) => file.endsWith('.wast'))
21// tests = ['address.js']
22
23ipfs.on('start', async () => {
24 runTests(tests)
25})
26
27function 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