Coverage for tests/test_store.py: 100%
73 statements
« prev ^ index » next coverage.py v7.6.12, created at 2025-02-20 16:25 +0000
« prev ^ index » next coverage.py v7.6.12, created at 2025-02-20 16:25 +0000
1import unittest
3from wasmtime import *
6class TestStore(unittest.TestCase):
7 def test_smoke(self):
8 Store()
9 Store(Engine())
11 with Store() as store:
12 pass
14 store = Store()
15 store.close()
16 store.close()
17 with self.assertRaises(ValueError):
18 store.set_epoch_deadline(1)
20 def test_errors(self):
21 with self.assertRaises(TypeError):
22 Store(3) # type: ignore
24 def test_interrupt_handle(self):
25 config = Config()
26 config.epoch_interruption = True
27 engine = Engine(config)
28 engine.increment_epoch()
29 store = Store(engine)
30 store.set_epoch_deadline(1)
32 def test_interrupt_wasm(self):
33 config = Config()
34 config.epoch_interruption = True
35 engine = Engine(config)
36 store = Store(engine)
37 store.set_epoch_deadline(1)
39 module = Module(store.engine, """
40 (import "" "hit" (func $hit))
41 (import "" "interrupt" (func $interrupt))
42 (func $start
43 call $hit
44 call $interrupt
45 (loop br 0))
46 (start $start)
47 """)
48 interrupt = Func(store, FuncType([], []), lambda: engine.increment_epoch())
50 was_hit = False
52 def hit_callback():
53 nonlocal was_hit
54 was_hit = True
55 hit = Func(store, FuncType([], []), hit_callback)
57 with self.assertRaises(Trap):
58 Instance(store, module, [hit, interrupt])
59 self.assertTrue(was_hit)
61 def test_fuel(self):
62 store = Store()
64 with self.assertRaises(WasmtimeError):
65 store.set_fuel(1)
66 with self.assertRaises(WasmtimeError):
67 store.get_fuel()
69 config = Config()
70 config.consume_fuel = True
71 store = Store(Engine(config))
72 store.set_fuel(1)
73 assert(store.get_fuel() == 1)
74 store.set_fuel(2)
75 assert(store.get_fuel() == 2)
76 store.set_fuel(0)
77 assert(store.get_fuel() == 0)
79 def test_limits(self):
80 store = Store()
81 Memory(store, MemoryType(Limits(1, None)))
83 store = Store()
84 store.set_limits(memory_size=0)
85 with self.assertRaises(WasmtimeError):
86 Memory(store, MemoryType(Limits(1, None)))
87 store.set_limits(memory_size=100000)
88 Memory(store, MemoryType(Limits(1, None)))
90 store = Store()
91 store.set_limits(table_elements=1)
92 Table(store, TableType(ValType.funcref(), Limits(1, None)), None)
93 with self.assertRaises(WasmtimeError):
94 Table(store, TableType(ValType.funcref(), Limits(2, None)), None)
96 store = Store()
97 store.set_limits(memory_size=200000)
98 mem = Memory(store, MemoryType(Limits(1, None)))
99 mem.grow(store, 1)
100 with self.assertRaises(WasmtimeError):
101 mem.grow(store, 100)