git ssb

0+

wanderer🌟 / js-primea-hypervisor



Tree: 3d425eb5e60c74393a2ae33abb20a5df794791b3

Files: 3d425eb5e60c74393a2ae33abb20a5df794791b3 / tests / interfaceRunner.js

1855 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/atomic')
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: `${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