import pytest import capnp import os this_dir = os.path.dirname(__file__) @pytest.fixture def addressbook(): return capnp.load(os.path.join(this_dir, 'addressbook.capnp')) @pytest.fixture def foo(): return capnp.load(os.path.join(this_dir, 'foo.capnp')) @pytest.fixture def bar(): return capnp.load(os.path.join(this_dir, 'bar.capnp')) def test_basic_load(): capnp.load(os.path.join(this_dir, 'addressbook.capnp')) def test_constants(addressbook): assert addressbook.qux == 123 def test_classes(addressbook): assert addressbook.AddressBook assert addressbook.Person def test_import(foo, bar): m = capnp._MallocMessageBuilder() foo = m.init_root(foo.Foo) m2 = capnp._MallocMessageBuilder() bar = m2.init_root(bar.Bar) foo.name = 'foo' bar.foo = foo assert bar.foo.name == 'foo' def test_failed_import(): s = capnp.SchemaParser() s2 = capnp.SchemaParser() foo = s.load(os.path.join(this_dir, 'foo.capnp')) bar = s2.load(os.path.join(this_dir, 'bar.capnp')) m = capnp._MallocMessageBuilder() foo = m.init_root(foo.Foo) m2 = capnp._MallocMessageBuilder() bar = m2.init_root(bar.Bar) foo.name = 'foo' with pytest.raises(ValueError): bar.foo = foo