Skip to content

Commit e6457d2

Browse files
authored
Merge pull request #6299 from hstove/feat/sip31-boot-contract-tests
feat: SIP-031 contract tests
2 parents 2ecc90d + 205986c commit e6457d2

File tree

13 files changed

+7163
-76
lines changed

13 files changed

+7163
-76
lines changed

.github/workflows/stacks-core-tests.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ jobs:
130130
id: clarinet_unit_test_v1
131131
uses: docker://hirosystems/clarinet:1.7.1
132132
with:
133-
args: test --manifest-path=./contrib/core-contract-tests/Clarinet.toml contrib/core-contract-tests/tests/bns/name_register_test.ts
133+
args: test --manifest-path=./contrib/core-contract-tests/Clarinet-v1.toml contrib/core-contract-tests/tests/bns/name_register_test.ts --deployment-plan-path=./deployments/v1.simnet-plan.yaml
134134

135135
check-tests:
136136
name: Check Tests
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
clarinet = "./Clarinet.toml"
2+
3+
# Set where you'd like TypeScript types output.
4+
[types]
5+
output = "tests/clarigen-types.ts"
6+
7+
# `types.after` - script to run after TypeScript types are generated.
8+
after = "npx prettier -w ./tests/clarigen-types.ts"
9+
10+
watch_folders = [
11+
"../../stackslib/src/chainstate/stacks/boot"
12+
]
13+
14+
# Set where you'd like generated contract docs
15+
# Generate docs by running `clarigen docs`
16+
[docs]
17+
output = "docs"
18+
19+
# `docs.after` - script to run after docs are generated.
20+
after = "npx -y prettier -w ./docs"
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
2+
[project]
3+
name = "core-contracts"
4+
5+
[repl]
6+
costs_version = 1
7+
8+
[contracts.bns]
9+
path = "../../stackslib/src/chainstate/stacks/boot/bns.clar"
10+
depends_on = []
11+
epoch = 2.4
12+
13+
[contracts.signers]
14+
path = "../../stackslib/src/chainstate/stacks/boot/signers.clar"
15+
depends_on = []
16+
clarity = 2
17+
epoch = 2.4
18+
19+
[contracts.signers-voting]
20+
path = "../../stackslib/src/chainstate/stacks/boot/signers-voting.clar"
21+
depends_on = []
22+
clarity = 2
23+
epoch = 2.4
24+
25+
[contracts.pox-4]
26+
path = "../../stackslib/src/chainstate/stacks/boot/pox-4.clar"
27+
clarity_version = 2
28+
epoch = 2.4
29+
depends_on = ["pox-mainnet"]
30+
31+
[contracts.pox-mainnet]
32+
path = "../../stackslib/src/chainstate/stacks/boot/pox-mainnet.clar"
33+
clarity_version = 2
34+
epoch = 2.4
35+
depends_on = []
36+
37+
[contracts.bns_test]
38+
path = "./tests/bns_test.clar"
39+
clarity_version = 2
40+
epoch = 2.4
41+
42+
[contracts.pox_4_test]
43+
path = "./tests/pox_4_test.clar"
44+
clarity_version = 2
45+
epoch = 2.4

contrib/core-contract-tests/Clarinet.toml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,16 @@ clarity_version = 2
3434
epoch = 2.4
3535
depends_on = []
3636

37+
[contracts.sip-031]
38+
path = "../../stackslib/src/chainstate/stacks/boot/sip-031.clar"
39+
clarity_version = 3
40+
epoch = 3.1
41+
42+
[contracts.sip-031-indirect]
43+
path = "contracts/sip-031-indirect.clar"
44+
clarity_version = 3
45+
epoch = 3.1
46+
3747
[contracts.bns_test]
3848
path = "./tests/bns_test.clar"
3949
clarity_version = 2
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
;; This is a wrapper contract to test calling `.sip-031`
2+
;; from an outside contract.
3+
4+
(define-public (update-recipient (new-recipient principal))
5+
(contract-call? 'ST1PQHQKV0RJXZFY1DGX8MNSNYVE3VGZJSRTPGZGM.sip-031
6+
update-recipient new-recipient
7+
)
8+
)
9+
10+
;; Helper function to transfer STX within tests
11+
(define-public (transfer-stx
12+
(amount uint)
13+
(recipient principal)
14+
)
15+
(stx-transfer? amount tx-sender recipient)
16+
)
17+
18+
;; Helper function to get the STX balance of an address
19+
(define-read-only (get-balance (addr principal))
20+
(stx-get-balance addr)
21+
)

contrib/core-contract-tests/deployments/default.simnet-plan.yaml

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,33 +7,43 @@ genesis:
77
- name: deployer
88
address: ST1PQHQKV0RJXZFY1DGX8MNSNYVE3VGZJSRTPGZGM
99
balance: "100000000000000"
10+
sbtc-balance: "1000000000"
1011
- name: wallet_1
1112
address: ST1SJ3DTE5DN7X54YDH5D64R3BCB6A2AG2ZQ8YPD5
1213
balance: "100000000000000"
14+
sbtc-balance: "1000000000"
1315
- name: wallet_2
1416
address: ST2CY5V39NHDPWSXMW9QDT3HC3GD6Q6XX4CFRK9AG
1517
balance: "100000000000000"
18+
sbtc-balance: "1000000000"
1619
- name: wallet_3
1720
address: ST2JHG361ZXG51QTKY2NQCVBPPRRE2KZB1HR05NNC
1821
balance: "100000000000000"
22+
sbtc-balance: "1000000000"
1923
- name: wallet_4
2024
address: ST2NEB84ASENDXKYGJPQW86YXQCEFEX2ZQPG87ND
2125
balance: "100000000000000"
26+
sbtc-balance: "1000000000"
2227
- name: wallet_5
2328
address: ST2REHHS5J3CERCRBEPMGH7921Q6PYKAADT7JP2VB
2429
balance: "100000000000000"
30+
sbtc-balance: "1000000000"
2531
- name: wallet_6
2632
address: ST3AM1A56AK2C1XAFJ4115ZSV26EB49BVQ10MGCS0
2733
balance: "100000000000000"
34+
sbtc-balance: "1000000000"
2835
- name: wallet_7
2936
address: ST3PF13W7Z0RRM42A8VZRVFQ75SV1K26RXEP8YGKJ
3037
balance: "100000000000000"
38+
sbtc-balance: "1000000000"
3139
- name: wallet_8
3240
address: ST3NBRSFKX28FQ2ZJ1MAKX58HKHSDGNV5N7R21XCP
3341
balance: "100000000000000"
42+
sbtc-balance: "1000000000"
3443
- name: wallet_9
3544
address: STNHKEPYEPJ8ET55ZZ0M5A34J0R3N5FM2CMMMAZ6
3645
balance: "100000000000000"
46+
sbtc-balance: "1000000000"
3747
contracts:
3848
- costs
3949
- pox
@@ -85,3 +95,16 @@ plan:
8595
path: "../../stackslib/src/chainstate/stacks/boot/signers-voting.clar"
8696
clarity-version: 2
8797
epoch: "2.4"
98+
- id: 1
99+
transactions:
100+
- emulated-contract-publish:
101+
contract-name: sip-031
102+
emulated-sender: ST1PQHQKV0RJXZFY1DGX8MNSNYVE3VGZJSRTPGZGM
103+
path: "../../stackslib/src/chainstate/stacks/boot/sip-031.clar"
104+
clarity-version: 3
105+
- emulated-contract-publish:
106+
contract-name: sip-031-indirect
107+
emulated-sender: ST1PQHQKV0RJXZFY1DGX8MNSNYVE3VGZJSRTPGZGM
108+
path: contracts/sip-031-indirect.clar
109+
clarity-version: 3
110+
epoch: "3.1"
Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
---
2+
id: 0
3+
name: "Simulated deployment, used as a default for `clarinet console`, `clarinet test` and `clarinet check`"
4+
network: simnet
5+
genesis:
6+
wallets:
7+
- name: deployer
8+
address: ST1PQHQKV0RJXZFY1DGX8MNSNYVE3VGZJSRTPGZGM
9+
balance: "100000000000000"
10+
sbtc-balance: "1000000000"
11+
- name: wallet_1
12+
address: ST1SJ3DTE5DN7X54YDH5D64R3BCB6A2AG2ZQ8YPD5
13+
balance: "100000000000000"
14+
sbtc-balance: "1000000000"
15+
- name: wallet_2
16+
address: ST2CY5V39NHDPWSXMW9QDT3HC3GD6Q6XX4CFRK9AG
17+
balance: "100000000000000"
18+
sbtc-balance: "1000000000"
19+
- name: wallet_3
20+
address: ST2JHG361ZXG51QTKY2NQCVBPPRRE2KZB1HR05NNC
21+
balance: "100000000000000"
22+
sbtc-balance: "1000000000"
23+
- name: wallet_4
24+
address: ST2NEB84ASENDXKYGJPQW86YXQCEFEX2ZQPG87ND
25+
balance: "100000000000000"
26+
sbtc-balance: "1000000000"
27+
- name: wallet_5
28+
address: ST2REHHS5J3CERCRBEPMGH7921Q6PYKAADT7JP2VB
29+
balance: "100000000000000"
30+
sbtc-balance: "1000000000"
31+
- name: wallet_6
32+
address: ST3AM1A56AK2C1XAFJ4115ZSV26EB49BVQ10MGCS0
33+
balance: "100000000000000"
34+
sbtc-balance: "1000000000"
35+
- name: wallet_7
36+
address: ST3PF13W7Z0RRM42A8VZRVFQ75SV1K26RXEP8YGKJ
37+
balance: "100000000000000"
38+
sbtc-balance: "1000000000"
39+
- name: wallet_8
40+
address: ST3NBRSFKX28FQ2ZJ1MAKX58HKHSDGNV5N7R21XCP
41+
balance: "100000000000000"
42+
sbtc-balance: "1000000000"
43+
- name: wallet_9
44+
address: STNHKEPYEPJ8ET55ZZ0M5A34J0R3N5FM2CMMMAZ6
45+
balance: "100000000000000"
46+
sbtc-balance: "1000000000"
47+
contracts:
48+
- costs
49+
- pox
50+
- pox-2
51+
- pox-3
52+
- pox-4
53+
- lockup
54+
- costs-2
55+
- costs-3
56+
- cost-voting
57+
- bns
58+
plan:
59+
batches:
60+
- id: 0
61+
transactions:
62+
- emulated-contract-publish:
63+
contract-name: bns
64+
emulated-sender: ST1PQHQKV0RJXZFY1DGX8MNSNYVE3VGZJSRTPGZGM
65+
path: "../../stackslib/src/chainstate/stacks/boot/bns.clar"
66+
clarity-version: 2
67+
- emulated-contract-publish:
68+
contract-name: bns_test
69+
emulated-sender: ST1PQHQKV0RJXZFY1DGX8MNSNYVE3VGZJSRTPGZGM
70+
path: "./tests/bns_test.clar"
71+
clarity-version: 2
72+
- emulated-contract-publish:
73+
contract-name: pox-4
74+
emulated-sender: ST1PQHQKV0RJXZFY1DGX8MNSNYVE3VGZJSRTPGZGM
75+
path: "../../stackslib/src/chainstate/stacks/boot/pox-4.clar"
76+
clarity-version: 2
77+
- emulated-contract-publish:
78+
contract-name: pox-mainnet
79+
emulated-sender: ST1PQHQKV0RJXZFY1DGX8MNSNYVE3VGZJSRTPGZGM
80+
path: "../../stackslib/src/chainstate/stacks/boot/pox-mainnet.clar"
81+
clarity-version: 2
82+
- emulated-contract-publish:
83+
contract-name: pox_4_test
84+
emulated-sender: ST1PQHQKV0RJXZFY1DGX8MNSNYVE3VGZJSRTPGZGM
85+
path: "./tests/pox_4_test.clar"
86+
clarity-version: 2
87+
- emulated-contract-publish:
88+
contract-name: signers
89+
emulated-sender: ST1PQHQKV0RJXZFY1DGX8MNSNYVE3VGZJSRTPGZGM
90+
path: "../../stackslib/src/chainstate/stacks/boot/signers.clar"
91+
clarity-version: 2
92+
- emulated-contract-publish:
93+
contract-name: signers-voting
94+
emulated-sender: ST1PQHQKV0RJXZFY1DGX8MNSNYVE3VGZJSRTPGZGM
95+
path: "../../stackslib/src/chainstate/stacks/boot/signers-voting.clar"
96+
clarity-version: 2
97+
epoch: "2.4"

0 commit comments

Comments
 (0)