66 PyEVMBackend ,
77)
88from eth_utils import (
9- function_abi_to_4byte_selector ,
109 to_bytes ,
1110)
1211
1918)
2019from web3 import Web3
2120from web3 .pm import (
22- SolidityReferenceRegistry ,
23- VyperReferenceRegistry ,
24- )
25- from web3 .tools import (
26- linker ,
21+ SimpleRegistry ,
2722)
2823from web3 .tools .pytest_ethereum .deployer import (
2924 Deployer ,
3025)
3126
32- VY_PACKAGE_ID_1 = to_bytes (hexstr = '0xd059e8a6ea5a8bbf8dd097a7b8922316dcb7f024e8220b56d3c9e7188a6a7640' ) # noqa: E501
33- VY_PACKAGE_ID_2 = to_bytes (hexstr = '0x6df709a85698ad921462b8979547e3a873e22e1c73b1cb691f9376847fb2d402' ) # noqa: E501
34- VY_PACKAGE_ID_3 = to_bytes (hexstr = '0x80e41a42e3b8c3af0ea51c3fd50d481eef1367dd9d3797ba93d35dcf60660882' ) # noqa: E501
35- VY_RELEASE_ID_1 = to_bytes (hexstr = '0x595e26f1b2247bacc57e32807f8059e0b0837dd9c47e6946994196bd29c9ca97' ) # noqa: E501
36- VY_RELEASE_ID_2 = to_bytes (hexstr = '0x04592cb9ced5413e1b09e87b089bf696a05efb76ee87c8c41259635fac6d938a' ) # noqa: E501
37- VY_RELEASE_ID_3 = to_bytes (hexstr = '0xa06dbc51f8891894778ce03dc23d706d228c99789595758bd3dcac3a93f47f0a' ) # noqa: E501
38- VY_RELEASE_ID_4 = to_bytes (hexstr = '0x9c6f87dda6435b2506e81206b39ed782a44b92d826c24ab02bbded321b86e2ad' ) # noqa: E501
3927SOL_PACKAGE_ID_1 = to_bytes (hexstr = '0x60c5112b61159e6b42d54d945078394e9d5fc9c6ff0f3df78977006f8bbc06d4' ) # noqa: E501
4028SOL_PACKAGE_ID_2 = to_bytes (hexstr = '0xdbcfb0bd7115bf659350d77bb22bb889ca8294f61b0ca480f8a47bb8fc904cc9' ) # noqa: E501
4129SOL_PACKAGE_ID_3 = to_bytes (hexstr = '0xf3e4002c48a7f8f3485d62988317849c175340b66517c3b2993f725643eba84b' ) # noqa: E501
42- SOL_RELEASE_ID_1 = to_bytes (hexstr = '0x73835668f71c7ae85cbdcdbb5a9905fa420ffe85a847d283fa9beefcd56cacc4 ' ) # noqa: E501
43- SOL_RELEASE_ID_2 = to_bytes (hexstr = '0xe5ef0292a3b36b6ac2be07ee92df61be15e0b9f102df32cbe3f0c012ef69d462 ' ) # noqa: E501
44- SOL_RELEASE_ID_3 = to_bytes (hexstr = '0x1280148e0af5c47e95b41df15734d0726c7320fc4cf21efe3923fb047b53899d ' ) # noqa: E501
45- SOL_RELEASE_ID_4 = to_bytes (hexstr = '0x7082e954e4fd6adf8a25c6cefe218f32ec66d8a197197f1d05aa67a65caf5111 ' ) # noqa: E501
30+ SOL_RELEASE_ID_1 = to_bytes (hexstr = '0x13414014c4f3c0ee41f1ede8e612e0377ae741f3abaa8d22e84e6b3759334fe9 ' ) # noqa: E501
31+ SOL_RELEASE_ID_2 = to_bytes (hexstr = '0x30cb63a88e721b461e294fa212af64f12e9500b3892e0e65fa70090ab63afb4d ' ) # noqa: E501
32+ SOL_RELEASE_ID_3 = to_bytes (hexstr = '0x73f5fafa3d9bd5080d9b27c092cd65fdbf7c8f982df4d5d0de22eb2cd56f4fcb ' ) # noqa: E501
33+ SOL_RELEASE_ID_4 = to_bytes (hexstr = '0x7fc4e4c04e1a4e5cba315f8fce216f8a77e1a1dd7c6539635555f95d1042667f ' ) # noqa: E501
4634
4735
4836def setup_w3 ():
@@ -59,118 +47,14 @@ def setup_w3():
5947 return w3
6048
6149
62- def solidity_registry_strategy ():
63- def set_authority (package ):
64- w3 = package .w3
65- authority = package .deployments .get_instance ("WhitelistAuthority" ).address
66- package_registry = package .deployments .get_instance ("PackageRegistry" )
67- package_db = package .deployments .get_instance ("PackageDB" )
68- release_db = package .deployments .get_instance ("ReleaseDB" )
69- txh_1 = package_registry .functions .setAuthority (authority ).transact ()
70- w3 .eth .waitForTransactionReceipt (txh_1 )
71- txh_2 = package_db .functions .setAuthority (authority ).transact ()
72- w3 .eth .waitForTransactionReceipt (txh_2 )
73- txh_3 = release_db .functions .setAuthority (authority ).transact ()
74- w3 .eth .waitForTransactionReceipt (txh_3 )
75-
76- def set_dependencies (package ):
77- w3 = package .w3
78- package_db = package .deployments .get_instance ("PackageDB" ).address
79- release_db = package .deployments .get_instance ("ReleaseDB" ).address
80- release_validator = package .deployments .get_instance ("ReleaseValidator" ).address
81- package_registry = package .deployments .get_instance ("PackageRegistry" )
82- txh_1 = package_registry .functions .setPackageDb (package_db ).transact ()
83- w3 .eth .waitForTransactionReceipt (txh_1 )
84- txh_2 = package_registry .functions .setReleaseDb (release_db ).transact ()
85- w3 .eth .waitForTransactionReceipt (txh_2 )
86- txh_3 = package_registry .functions .setReleaseValidator (
87- release_validator
88- ).transact ()
89- w3 .eth .waitForTransactionReceipt (txh_3 )
90-
91- def get_selector (deployments , contract , fn ):
92- function_abi = [
93- x for x in deployments .get_instance (contract ).abi if x ["name" ] == fn
94- ][0 ]
95- return function_abi_to_4byte_selector (function_abi )
96-
97- def set_permissions (package ):
98- w3 = package .w3
99- deployments = package .deployments
100- set_version = get_selector (deployments , "ReleaseDB" , "setVersion" )
101- set_release = get_selector (deployments , "ReleaseDB" , "setRelease" )
102- set_package = get_selector (deployments , "PackageDB" , "setPackage" )
103- set_package_owner = get_selector (deployments , "PackageDB" , "setPackageOwner" )
104- release = get_selector (deployments , "PackageRegistry" , "release" )
105- transfer_package_owner = get_selector (
106- deployments , "PackageRegistry" , "transferPackageOwner"
107- )
108- package_db = package .deployments .get_instance ("PackageDB" ).address
109- release_db = package .deployments .get_instance ("ReleaseDB" ).address
110- package_registry = package .deployments .get_instance ("PackageRegistry" ).address
111- authority = package .deployments .get_instance ("WhitelistAuthority" )
112- txh_1 = authority .functions .setCanCall (
113- package_registry , release_db , set_release , True
114- ).transact ()
115- w3 .eth .waitForTransactionReceipt (txh_1 )
116- txh_2 = authority .functions .setCanCall (
117- package_registry , package_db , set_package , True
118- ).transact ()
119- w3 .eth .waitForTransactionReceipt (txh_2 )
120- txh_3 = authority .functions .setCanCall (
121- package_registry , package_db , set_package_owner , True
122- ).transact ()
123- w3 .eth .waitForTransactionReceipt (txh_3 )
124- txh_4 = authority .functions .setAnyoneCanCall (
125- release_db , set_version , True
126- ).transact ()
127- w3 .eth .waitForTransactionReceipt (txh_4 )
128- txh_5 = authority .functions .setAnyoneCanCall (
129- package_registry , release , True
130- ).transact ()
131- w3 .eth .waitForTransactionReceipt (txh_5 )
132- txh_6 = authority .functions .setAnyoneCanCall (
133- package_registry , transfer_package_owner , True
134- ).transact ()
135- w3 .eth .waitForTransactionReceipt (txh_6 )
136-
137- strategy = linker .linker (
138- linker .deploy ("IndexedOrderedSetLib" ),
139- linker .link ("PackageDB" , "IndexedOrderedSetLib" ),
140- linker .link ("ReleaseDB" , "IndexedOrderedSetLib" ),
141- linker .deploy ("PackageRegistry" ),
142- linker .deploy ("WhitelistAuthority" ),
143- linker .deploy ("PackageDB" ),
144- linker .deploy ("ReleaseDB" ),
145- linker .deploy ("ReleaseValidator" ),
146- linker .run_python (set_authority ),
147- linker .run_python (set_dependencies ),
148- linker .run_python (set_permissions ),
149- )
150- return strategy
151-
152-
15350def sol_registry (w3 ):
154- manifest = json .loads ((ASSETS_DIR / "registry" / "1.0.0.json" ).read_text ())
155- strategy = solidity_registry_strategy ()
51+ manifest = json .loads ((ASSETS_DIR / "registry" / "2.0.0a1.json" ).read_text ())
15652 registry_package = Package (manifest , w3 )
15753 registry_deployer = Deployer (registry_package )
158- registry_deployer .register_strategy ("PackageRegistry" , strategy )
15954 deployed_registry_package = registry_deployer .deploy ("PackageRegistry" )
16055 assert isinstance (registry_package , Package )
16156 registry = deployed_registry_package .deployments .get_instance ("PackageRegistry" )
162- return SolidityReferenceRegistry (registry .address , w3 )
163-
164-
165- def vy_registry (w3 ):
166- registry_path = ASSETS_DIR / "vyper_registry"
167- manifest = json .loads ((registry_path / "0.1.0.json" ).read_text ().rstrip ('\n ' ))
168- registry_package = Package (manifest , w3 )
169- registry_deployer = Deployer (registry_package )
170- deployed_registry_package = registry_deployer .deploy ("registry" )
171- registry_instance = deployed_registry_package .deployments .get_instance ("registry" )
172- assert registry_instance .functions .owner ().call () == w3 .eth .defaultAccount
173- return VyperReferenceRegistry (registry_instance .address , w3 )
57+ return SimpleRegistry (registry .address , w3 )
17458
17559
17660def release_packages (registry ):
@@ -214,13 +98,9 @@ def release_packages(registry):
21498# Tests are written against the sample packages released in `release_packages()` above, if more
21599# tests are needed, they should take into account the releases that exist on a "loaded registry".
216100W3 = setup_w3 ()
217- FRESH_VY_REGISTRY = vy_registry (W3 )
218101FRESH_SOL_REGISTRY = sol_registry (W3 )
219- LOADED_VY_REGISTRY = release_packages (vy_registry (W3 ))
220102LOADED_SOL_REGISTRY = release_packages (sol_registry (W3 ))
221- VY_PKG_IDS = (VY_PACKAGE_ID_1 , VY_PACKAGE_ID_2 , VY_PACKAGE_ID_3 )
222103SOL_PKG_IDS = (SOL_PACKAGE_ID_1 , SOL_PACKAGE_ID_2 , SOL_PACKAGE_ID_3 )
223- VY_RLS_IDS = (VY_RELEASE_ID_1 , VY_RELEASE_ID_2 , VY_RELEASE_ID_3 , VY_RELEASE_ID_4 )
224104SOL_RLS_IDS = (SOL_RELEASE_ID_1 , SOL_RELEASE_ID_2 , SOL_RELEASE_ID_3 , SOL_RELEASE_ID_4 )
225105
226106
@@ -229,26 +109,11 @@ def w3():
229109 return W3
230110
231111
232- @pytest .fixture
233- def empty_vy_registry ():
234- return FRESH_VY_REGISTRY
235-
236-
237112@pytest .fixture
238113def empty_sol_registry ():
239114 return FRESH_SOL_REGISTRY
240115
241116
242- @pytest .fixture
243- def loaded_vy_registry ():
244- return LOADED_VY_REGISTRY , VY_PKG_IDS , VY_RLS_IDS
245-
246-
247117@pytest .fixture
248118def loaded_sol_registry ():
249119 return LOADED_SOL_REGISTRY , SOL_PKG_IDS , SOL_RLS_IDS
250-
251-
252- @pytest .fixture
253- def registry_getter (request ):
254- return request .getfixturevalue (request .param )
0 commit comments