@clarigen/test 1.0.0-next.9 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +94 -31
- package/dist/index.js +440 -5
- package/dist/index.mjs +443 -0
- package/package.json +22 -19
- package/dist/test.cjs.development.js +0 -1827
- package/dist/test.cjs.development.js.map +0 -1
- package/dist/test.cjs.production.min.js +0 -2
- package/dist/test.cjs.production.min.js.map +0 -1
- package/dist/test.esm.js +0 -1816
- package/dist/test.esm.js.map +0 -1
- package/dist/utils/clarity-cli-adapter.d.ts +0 -79
- package/dist/utils/index.d.ts +0 -4
- package/dist/utils/pure.d.ts +0 -44
- package/dist/utils/util-contract.d.ts +0 -12
package/dist/index.d.ts
CHANGED
|
@@ -1,31 +1,94 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
}
|
|
1
|
+
import { CoreNodeEvent, ResultAssets, Project, AllContracts, DeploymentsForContracts, ProjectFactory, Contracts, ContractFactory, ContractCall, Response, ContractCalls, ContractInstances, ResponseOk, ResponseErr } from '@clarigen/core';
|
|
2
|
+
import { Costs, ClarinetAccount, NativeClarityBinProvider, ClarinetAccounts } from '@clarigen/native-bin';
|
|
3
|
+
export { Allocation, createClarityBin, evalJson, executeJson } from '@clarigen/native-bin';
|
|
4
|
+
import { ClarityValue, ResponseCV } from 'micro-stacks/clarity';
|
|
5
|
+
import { StacksNetworkVersion } from 'micro-stacks/crypto';
|
|
6
|
+
import { IntegerType } from 'micro-stacks/common';
|
|
7
|
+
|
|
8
|
+
interface ReadOnlyResult<T> {
|
|
9
|
+
value: T;
|
|
10
|
+
clarityValue: ClarityValue;
|
|
11
|
+
logs: string[];
|
|
12
|
+
costs: Costs;
|
|
13
|
+
}
|
|
14
|
+
interface PublicResultBase<T> {
|
|
15
|
+
value: T;
|
|
16
|
+
response: ResponseCV;
|
|
17
|
+
isOk: boolean;
|
|
18
|
+
logs: string[];
|
|
19
|
+
costs: Costs;
|
|
20
|
+
}
|
|
21
|
+
interface PublicResultErr<T> extends PublicResultBase<T> {
|
|
22
|
+
value: T;
|
|
23
|
+
isOk: false;
|
|
24
|
+
}
|
|
25
|
+
interface PublicResultOk<T> extends PublicResultBase<T> {
|
|
26
|
+
value: T;
|
|
27
|
+
isOk: true;
|
|
28
|
+
events: CoreNodeEvent[];
|
|
29
|
+
assets: ResultAssets;
|
|
30
|
+
prints: any[];
|
|
31
|
+
}
|
|
32
|
+
declare type PublicResult<R> = PublicResultOk<R> | PublicResultErr<R>;
|
|
33
|
+
|
|
34
|
+
declare type Account = Omit<ClarinetAccount, 'balance'> & {
|
|
35
|
+
balance: number;
|
|
36
|
+
};
|
|
37
|
+
interface Simnet {
|
|
38
|
+
accounts: {
|
|
39
|
+
deployer: Account;
|
|
40
|
+
[key: string]: Account;
|
|
41
|
+
};
|
|
42
|
+
deployment: {
|
|
43
|
+
identifier: string;
|
|
44
|
+
file: string;
|
|
45
|
+
}[];
|
|
46
|
+
}
|
|
47
|
+
declare function testFactory<P extends Project<C, D>, C extends AllContracts, D extends DeploymentsForContracts<C>>(project: P): ProjectFactory<P, 'simnet'>;
|
|
48
|
+
|
|
49
|
+
declare type Provider = NativeClarityBinProvider | {
|
|
50
|
+
clarityBin: NativeClarityBinProvider;
|
|
51
|
+
};
|
|
52
|
+
declare function getBlockHeight(provider: Provider): Promise<bigint>;
|
|
53
|
+
declare function mineBlocks(_blocks: IntegerType, provider: Provider): Promise<void>;
|
|
54
|
+
declare function getStxBalance(provider: Provider, account: string): Promise<bigint>;
|
|
55
|
+
|
|
56
|
+
declare function setupCoverage(dir: string): Promise<string>;
|
|
57
|
+
declare function finishCoverage(provider: NativeClarityBinProvider, dir: string): Promise<void>;
|
|
58
|
+
|
|
59
|
+
declare function makeRandomAddress(version?: StacksNetworkVersion): string;
|
|
60
|
+
|
|
61
|
+
interface FromContractsOptions {
|
|
62
|
+
accounts?: ClarinetAccounts;
|
|
63
|
+
clarityBin?: NativeClarityBinProvider;
|
|
64
|
+
coverageFolder?: string;
|
|
65
|
+
clarinetPath?: string;
|
|
66
|
+
}
|
|
67
|
+
interface FromContracts<T extends Contracts<any>> {
|
|
68
|
+
deployed: ContractInstances<T>;
|
|
69
|
+
provider: TestProvider;
|
|
70
|
+
}
|
|
71
|
+
declare type OkType<T> = T extends ResponseOk<infer Ok, unknown> ? Ok : never;
|
|
72
|
+
declare type ErrType<T> = T extends ResponseErr<unknown, infer Err> ? Err : never;
|
|
73
|
+
declare class TestProvider {
|
|
74
|
+
clarityBin: NativeClarityBinProvider;
|
|
75
|
+
coverageFolder?: string;
|
|
76
|
+
constructor(clarityBin: NativeClarityBinProvider);
|
|
77
|
+
static fromContracts<T extends Contracts<any>>(contracts: T, options?: FromContractsOptions): Promise<FromContracts<T>>;
|
|
78
|
+
static fromProject(simnet: Simnet, options?: FromContractsOptions): Promise<TestProvider>;
|
|
79
|
+
static fromFactory(contracts: ContractFactory<AllContracts>, options?: FromContractsOptions): Promise<TestProvider>;
|
|
80
|
+
ro<T>(tx: ContractCall<T>): Promise<ReadOnlyResult<T>>;
|
|
81
|
+
rov<T>(tx: ContractCall<T>): Promise<T>;
|
|
82
|
+
roOk<R extends Response<unknown, unknown>>(tx: ContractCall<R>): Promise<ReadOnlyResult<OkType<R>>>;
|
|
83
|
+
roErr<R extends Response<unknown, unknown>>(tx: ContractCall<R>): Promise<ReadOnlyResult<ErrType<R>>>;
|
|
84
|
+
rovOk<R extends Response<unknown, unknown>>(tx: ContractCall<R>): Promise<OkType<R>>;
|
|
85
|
+
rovErr<R extends Response<unknown, unknown>>(tx: ContractCall<R>): Promise<ErrType<R>>;
|
|
86
|
+
tx<R extends Response<unknown, unknown>>(tx: ContractCall<R>, senderAddress: string): Promise<PublicResult<R>>;
|
|
87
|
+
txOk<R extends Response<unknown, unknown>>(tx: ContractCall<R>, senderAddress: string): Promise<PublicResultOk<OkType<R>>>;
|
|
88
|
+
txErr<R extends Response<unknown, unknown>>(tx: ContractCall<R>, senderAddress: string): Promise<PublicResultErr<ErrType<R>>>;
|
|
89
|
+
evalCode<T>(code: string, contractAddress?: string): Promise<ReadOnlyResult<T>>;
|
|
90
|
+
eval<T>(code: string, contractAddress?: string): Promise<T>;
|
|
91
|
+
mapGet<T extends ContractCalls.Map<any, Val>, Val>(map: T): Promise<Val | null>;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
export { PublicResultErr, PublicResultOk, ReadOnlyResult, Simnet, TestProvider, finishCoverage, getBlockHeight, getStxBalance, makeRandomAddress, mineBlocks, setupCoverage, testFactory };
|
package/dist/index.js
CHANGED
|
@@ -1,8 +1,443 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});var __defProp = Object.defineProperty;
|
|
2
|
+
var __defProps = Object.defineProperties;
|
|
3
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
4
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
7
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
8
|
+
var __spreadValues = (a, b) => {
|
|
9
|
+
for (var prop in b || (b = {}))
|
|
10
|
+
if (__hasOwnProp.call(b, prop))
|
|
11
|
+
__defNormalProp(a, prop, b[prop]);
|
|
12
|
+
if (__getOwnPropSymbols)
|
|
13
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
14
|
+
if (__propIsEnum.call(b, prop))
|
|
15
|
+
__defNormalProp(a, prop, b[prop]);
|
|
16
|
+
}
|
|
17
|
+
return a;
|
|
18
|
+
};
|
|
19
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
1
20
|
|
|
2
|
-
|
|
21
|
+
// src/index.ts
|
|
3
22
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
var _nativebin = require('@clarigen/native-bin');
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
var _core = require('@clarigen/core');
|
|
31
|
+
|
|
32
|
+
// src/utils/index.ts
|
|
33
|
+
var _crypto = require('micro-stacks/crypto');
|
|
34
|
+
var _transactions = require('micro-stacks/transactions');
|
|
35
|
+
|
|
36
|
+
// src/utils/util-contract.ts
|
|
37
|
+
var _clarity = require('micro-stacks/clarity');
|
|
38
|
+
var _path = require('path');
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
var _common = require('micro-stacks/common');
|
|
42
|
+
var UTIL_CONTRACT_ID = "ST000000000000000000002AMW42H.clarigen-test-utils";
|
|
43
|
+
async function deployUtilContract(clarityBin) {
|
|
44
|
+
let contractFilePath = _path.join.call(void 0, __dirname, "..", "..", "contracts", "test-utils.clar");
|
|
45
|
+
if (__dirname.includes("dist")) {
|
|
46
|
+
contractFilePath = _path.join.call(void 0, __dirname, "..", "contracts", "test-utils.clar");
|
|
47
|
+
}
|
|
48
|
+
await _nativebin.deployContract.call(void 0, {
|
|
49
|
+
contractIdentifier: UTIL_CONTRACT_ID,
|
|
50
|
+
provider: clarityBin,
|
|
51
|
+
contractFilePath
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
function getBin(provider) {
|
|
55
|
+
return "clarityBin" in provider ? provider.clarityBin : provider;
|
|
56
|
+
}
|
|
57
|
+
async function getBlockHeight(provider) {
|
|
58
|
+
const bin = getBin(provider);
|
|
59
|
+
const { output_serialized } = await _nativebin.evalJson.call(void 0, {
|
|
60
|
+
contractAddress: UTIL_CONTRACT_ID,
|
|
61
|
+
functionName: "get-block-height",
|
|
62
|
+
args: [],
|
|
63
|
+
provider: bin
|
|
64
|
+
});
|
|
65
|
+
const outputCV = _clarity.hexToCV.call(void 0, output_serialized);
|
|
66
|
+
const blockHeight = _core.cvToValue.call(void 0, outputCV);
|
|
67
|
+
return blockHeight;
|
|
68
|
+
}
|
|
69
|
+
async function mineBlock(provider) {
|
|
70
|
+
const bin = getBin(provider);
|
|
71
|
+
await _nativebin.executeJson.call(void 0, {
|
|
72
|
+
contractAddress: UTIL_CONTRACT_ID,
|
|
73
|
+
functionName: "mine-block",
|
|
74
|
+
args: [],
|
|
75
|
+
provider: bin,
|
|
76
|
+
senderAddress: "ST000000000000000000002AMW42H"
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
async function mineBlocks(_blocks, provider) {
|
|
80
|
+
const blocks = _common.intToBigInt.call(void 0, _blocks);
|
|
81
|
+
for (let index = 0; index < blocks; index++) {
|
|
82
|
+
await mineBlock(provider);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
async function getStxBalance(provider, account) {
|
|
86
|
+
const bin = getBin(provider);
|
|
87
|
+
const { output_serialized } = await _nativebin.evalJson.call(void 0, {
|
|
88
|
+
contractAddress: UTIL_CONTRACT_ID,
|
|
89
|
+
functionName: "get-stx-balance",
|
|
90
|
+
args: [`'${account}`],
|
|
91
|
+
provider: bin
|
|
92
|
+
});
|
|
93
|
+
const outputCV = _clarity.hexToCV.call(void 0, output_serialized);
|
|
94
|
+
const balance = _core.cvToValue.call(void 0, outputCV);
|
|
95
|
+
return balance;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
// src/utils/coverage.ts
|
|
99
|
+
var _promises = require('fs/promises');
|
|
100
|
+
|
|
101
|
+
async function setupCoverage(dir) {
|
|
102
|
+
const dirName = _path.resolve.call(void 0, process.cwd(), "coverage");
|
|
103
|
+
try {
|
|
104
|
+
await _promises.mkdir.call(void 0, dirName);
|
|
105
|
+
} catch (error) {
|
|
106
|
+
}
|
|
107
|
+
const files = await _promises.readdir.call(void 0, dirName);
|
|
108
|
+
const removals = files.map((file) => {
|
|
109
|
+
return _promises.unlink.call(void 0, _path.join.call(void 0, dirName, file));
|
|
110
|
+
});
|
|
111
|
+
await Promise.all(removals);
|
|
112
|
+
return dirName;
|
|
8
113
|
}
|
|
114
|
+
async function finishCoverage(provider, dir) {
|
|
115
|
+
const lcovFile = _path.join.call(void 0, dir, "clarigen.lcov");
|
|
116
|
+
await provider.runCommand(["make_lcov", dir, lcovFile]);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
// src/utils/index.ts
|
|
120
|
+
function makeRandomAddress(version = _crypto.StacksNetworkVersion.testnetP2PKH) {
|
|
121
|
+
const privateKey = _transactions.makeRandomPrivKey.call(void 0, );
|
|
122
|
+
const publicKey = _transactions.getPublicKeyFromStacksPrivateKey.call(void 0, privateKey);
|
|
123
|
+
const address = _crypto.publicKeyToStxAddress.call(void 0, publicKey.data, version);
|
|
124
|
+
return address;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
// src/utils/pure.ts
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
function getPrints(events) {
|
|
147
|
+
return _core.filterEvents.call(void 0, events, _core.CoreNodeEventType.ContractEvent).map((e) => {
|
|
148
|
+
const hex = e.contract_event.raw_value;
|
|
149
|
+
const cv = _clarity.hexToCV.call(void 0, hex);
|
|
150
|
+
return _core.cvToValue.call(void 0, cv);
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
function formatArguments(args) {
|
|
154
|
+
return args.map((arg) => _core.cvToString.call(void 0, arg));
|
|
155
|
+
}
|
|
156
|
+
function getIdentifier(tx2) {
|
|
157
|
+
return `${tx2.contractAddress}.${tx2.contractName}`;
|
|
158
|
+
}
|
|
159
|
+
function getLogs(stderr) {
|
|
160
|
+
if (stderr === "")
|
|
161
|
+
return [];
|
|
162
|
+
return stderr.split("\n").map((line) => line.slice(62));
|
|
163
|
+
}
|
|
164
|
+
function makeEvalResult(result) {
|
|
165
|
+
const resultCV = _clarity.hexToCV.call(void 0, result.output_serialized);
|
|
166
|
+
const value = _core.cvToValue.call(void 0, resultCV, true);
|
|
167
|
+
return {
|
|
168
|
+
value,
|
|
169
|
+
clarityValue: resultCV,
|
|
170
|
+
logs: getLogs(result.stderr),
|
|
171
|
+
costs: result.costs
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
async function ro({
|
|
175
|
+
tx: tx2,
|
|
176
|
+
bin,
|
|
177
|
+
coverageFolder
|
|
178
|
+
}) {
|
|
179
|
+
const result = await _nativebin.evalJson.call(void 0, {
|
|
180
|
+
functionName: tx2.function.name,
|
|
181
|
+
args: formatArguments(tx2.functionArgs),
|
|
182
|
+
contractAddress: getIdentifier(tx2),
|
|
183
|
+
provider: bin,
|
|
184
|
+
coverageFolder
|
|
185
|
+
});
|
|
186
|
+
return makeEvalResult(result);
|
|
187
|
+
}
|
|
188
|
+
async function evalCode({
|
|
189
|
+
contractAddress,
|
|
190
|
+
code,
|
|
191
|
+
bin,
|
|
192
|
+
coverageFolder
|
|
193
|
+
}) {
|
|
194
|
+
const result = await _nativebin.evalRaw.call(void 0, {
|
|
195
|
+
contractAddress,
|
|
196
|
+
code,
|
|
197
|
+
provider: bin,
|
|
198
|
+
coverageFolder
|
|
199
|
+
});
|
|
200
|
+
return makeEvalResult(result);
|
|
201
|
+
}
|
|
202
|
+
async function tx({
|
|
203
|
+
tx: tx2,
|
|
204
|
+
senderAddress,
|
|
205
|
+
bin,
|
|
206
|
+
coverageFolder
|
|
207
|
+
}) {
|
|
208
|
+
const result = await _nativebin.executeJson.call(void 0, {
|
|
209
|
+
contractAddress: getIdentifier(tx2),
|
|
210
|
+
senderAddress,
|
|
211
|
+
provider: bin,
|
|
212
|
+
functionName: tx2.function.name,
|
|
213
|
+
args: formatArguments(tx2.functionArgs),
|
|
214
|
+
coverageFolder
|
|
215
|
+
});
|
|
216
|
+
const resultCV = _clarity.hexToCV.call(void 0, result.output_serialized);
|
|
217
|
+
const value = _core.cvToValue.call(void 0, resultCV);
|
|
218
|
+
const resp = result.success ? _core.ok.call(void 0, value) : _core.err.call(void 0, value);
|
|
219
|
+
const baseReturn = {
|
|
220
|
+
logs: getLogs(result.stderr),
|
|
221
|
+
costs: result.costs,
|
|
222
|
+
value: resp
|
|
223
|
+
};
|
|
224
|
+
if (result.success) {
|
|
225
|
+
return __spreadProps(__spreadValues({}, baseReturn), {
|
|
226
|
+
isOk: true,
|
|
227
|
+
response: _clarity.responseOkCV.call(void 0, resultCV),
|
|
228
|
+
assets: result.assets,
|
|
229
|
+
events: result.events,
|
|
230
|
+
prints: getPrints(result.events)
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
return __spreadProps(__spreadValues({}, baseReturn), {
|
|
234
|
+
isOk: false,
|
|
235
|
+
response: _clarity.responseErrorCV.call(void 0, resultCV)
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
async function mapGet({
|
|
239
|
+
map,
|
|
240
|
+
bin
|
|
241
|
+
}) {
|
|
242
|
+
const code = `(map-get? ${map.map.name} ${_core.cvToString.call(void 0, map.key)})`;
|
|
243
|
+
const result = await evalCode({
|
|
244
|
+
contractAddress: getIdentifier(map),
|
|
245
|
+
code,
|
|
246
|
+
bin
|
|
247
|
+
});
|
|
248
|
+
return result.value;
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
// src/index.ts
|
|
252
|
+
|
|
253
|
+
|
|
254
|
+
// src/utils/test-factory.ts
|
|
255
|
+
|
|
256
|
+
|
|
257
|
+
|
|
258
|
+
function testFactory(project) {
|
|
259
|
+
return _core.projectFactory.call(void 0, project, "simnet");
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
// src/index.ts
|
|
263
|
+
|
|
264
|
+
var TestProvider = class {
|
|
265
|
+
constructor(clarityBin) {
|
|
266
|
+
this.clarityBin = clarityBin;
|
|
267
|
+
}
|
|
268
|
+
static async fromContracts(contracts, options = {}) {
|
|
269
|
+
const clarityBin = options.clarityBin || await _nativebin.createClarityBin.call(void 0, {
|
|
270
|
+
allocations: options.accounts
|
|
271
|
+
});
|
|
272
|
+
const instances = {};
|
|
273
|
+
let coverageFolder = options.coverageFolder;
|
|
274
|
+
if (process.env.CLARIGEN_COVERAGE) {
|
|
275
|
+
coverageFolder = _path.resolve.call(void 0, process.cwd(), "coverage");
|
|
276
|
+
}
|
|
277
|
+
await deployUtilContract(clarityBin);
|
|
278
|
+
for (const k in contracts) {
|
|
279
|
+
if (Object.prototype.hasOwnProperty.call(contracts, k)) {
|
|
280
|
+
const contract = contracts[k];
|
|
281
|
+
const identifier = _core.getContractIdentifier.call(void 0, contract);
|
|
282
|
+
await _nativebin.deployContract.call(void 0, {
|
|
283
|
+
contractIdentifier: identifier,
|
|
284
|
+
contractFilePath: contract.contractFile,
|
|
285
|
+
provider: clarityBin,
|
|
286
|
+
coverageFolder
|
|
287
|
+
});
|
|
288
|
+
const instance = contract.contract(contract.address, contract.name);
|
|
289
|
+
instances[k] = {
|
|
290
|
+
identifier: _core.getContractIdentifier.call(void 0, contract),
|
|
291
|
+
contract: instance
|
|
292
|
+
};
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
const provider = new this(clarityBin);
|
|
296
|
+
provider.coverageFolder = coverageFolder;
|
|
297
|
+
return {
|
|
298
|
+
deployed: instances,
|
|
299
|
+
provider
|
|
300
|
+
};
|
|
301
|
+
}
|
|
302
|
+
static async fromProject(simnet, options = {}) {
|
|
303
|
+
const allocations = Object.fromEntries(Object.entries(simnet.accounts).map(([name, account]) => {
|
|
304
|
+
return [name, __spreadProps(__spreadValues({}, account), { balance: BigInt(account.balance) })];
|
|
305
|
+
}));
|
|
306
|
+
const clarityBin = options.clarityBin || await _nativebin.createClarityBin.call(void 0, {
|
|
307
|
+
allocations
|
|
308
|
+
});
|
|
309
|
+
let coverageFolder = options.coverageFolder;
|
|
310
|
+
if (process.env.CLARIGEN_COVERAGE) {
|
|
311
|
+
coverageFolder = _path.resolve.call(void 0, process.cwd(), "coverage");
|
|
312
|
+
}
|
|
313
|
+
await deployUtilContract(clarityBin);
|
|
314
|
+
for (const contract of simnet.deployment) {
|
|
315
|
+
let contractFilePath = contract.file;
|
|
316
|
+
if (options.clarinetPath) {
|
|
317
|
+
contractFilePath = _path.resolve.call(void 0, process.cwd(), options.clarinetPath, contractFilePath);
|
|
318
|
+
}
|
|
319
|
+
await _nativebin.deployContract.call(void 0, {
|
|
320
|
+
contractIdentifier: contract.identifier,
|
|
321
|
+
contractFilePath,
|
|
322
|
+
provider: clarityBin,
|
|
323
|
+
coverageFolder
|
|
324
|
+
});
|
|
325
|
+
}
|
|
326
|
+
const provider = new this(clarityBin);
|
|
327
|
+
provider.coverageFolder = coverageFolder;
|
|
328
|
+
return provider;
|
|
329
|
+
}
|
|
330
|
+
static async fromFactory(contracts, options = {}) {
|
|
331
|
+
const clarityBin = options.clarityBin || await _nativebin.createClarityBin.call(void 0, {
|
|
332
|
+
allocations: options.accounts
|
|
333
|
+
});
|
|
334
|
+
let coverageFolder = options.coverageFolder;
|
|
335
|
+
if (process.env.CLARIGEN_COVERAGE) {
|
|
336
|
+
coverageFolder = _path.resolve.call(void 0, process.cwd(), "coverage");
|
|
337
|
+
}
|
|
338
|
+
await deployUtilContract(clarityBin);
|
|
339
|
+
for (const k in contracts) {
|
|
340
|
+
if (Object.prototype.hasOwnProperty.call(contracts, k)) {
|
|
341
|
+
const contract = contracts[k];
|
|
342
|
+
let contractFilePath = contract.contractFile;
|
|
343
|
+
if (options.clarinetPath) {
|
|
344
|
+
contractFilePath = _path.resolve.call(void 0, process.cwd(), options.clarinetPath, contractFilePath);
|
|
345
|
+
}
|
|
346
|
+
if (typeof contractFilePath === "undefined") {
|
|
347
|
+
throw new Error("Cannot setup @clarigen/test - missing contract file.");
|
|
348
|
+
}
|
|
349
|
+
await _nativebin.deployContract.call(void 0, {
|
|
350
|
+
contractIdentifier: contract.identifier,
|
|
351
|
+
contractFilePath,
|
|
352
|
+
provider: clarityBin,
|
|
353
|
+
coverageFolder
|
|
354
|
+
});
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
const provider = new this(clarityBin);
|
|
358
|
+
provider.coverageFolder = coverageFolder;
|
|
359
|
+
return provider;
|
|
360
|
+
}
|
|
361
|
+
ro(tx2) {
|
|
362
|
+
return ro({ tx: tx2, bin: this.clarityBin, coverageFolder: this.coverageFolder });
|
|
363
|
+
}
|
|
364
|
+
async rov(tx2) {
|
|
365
|
+
const result = await this.ro(tx2);
|
|
366
|
+
return result.value;
|
|
367
|
+
}
|
|
368
|
+
async roOk(tx2) {
|
|
369
|
+
const result = await this.ro(tx2);
|
|
370
|
+
const value = _core.expectOk.call(void 0, result.value);
|
|
371
|
+
return __spreadProps(__spreadValues({}, result), {
|
|
372
|
+
value
|
|
373
|
+
});
|
|
374
|
+
}
|
|
375
|
+
async roErr(tx2) {
|
|
376
|
+
const result = await this.ro(tx2);
|
|
377
|
+
const value = _core.expectErr.call(void 0, result.value);
|
|
378
|
+
return __spreadProps(__spreadValues({}, result), {
|
|
379
|
+
value
|
|
380
|
+
});
|
|
381
|
+
}
|
|
382
|
+
async rovOk(tx2) {
|
|
383
|
+
return (await this.roOk(tx2)).value;
|
|
384
|
+
}
|
|
385
|
+
async rovErr(tx2) {
|
|
386
|
+
return (await this.roErr(tx2)).value;
|
|
387
|
+
}
|
|
388
|
+
tx(tx2, senderAddress) {
|
|
389
|
+
return tx({
|
|
390
|
+
tx: tx2,
|
|
391
|
+
senderAddress,
|
|
392
|
+
bin: this.clarityBin,
|
|
393
|
+
coverageFolder: this.coverageFolder
|
|
394
|
+
});
|
|
395
|
+
}
|
|
396
|
+
async txOk(tx2, senderAddress) {
|
|
397
|
+
const result = await this.tx(tx2, senderAddress);
|
|
398
|
+
const value = _core.expectOk.call(void 0, result.value);
|
|
399
|
+
if (!result.isOk)
|
|
400
|
+
throw new Error(`Expected OK, received error: ${String(result.value)}`);
|
|
401
|
+
return __spreadProps(__spreadValues({}, result), {
|
|
402
|
+
value
|
|
403
|
+
});
|
|
404
|
+
}
|
|
405
|
+
async txErr(tx2, senderAddress) {
|
|
406
|
+
const result = await this.tx(tx2, senderAddress);
|
|
407
|
+
const value = _core.expectErr.call(void 0, result.value);
|
|
408
|
+
if (result.isOk)
|
|
409
|
+
throw new Error(`Expected Err, received ok: ${String(result.value)}`);
|
|
410
|
+
return __spreadProps(__spreadValues({}, result), {
|
|
411
|
+
value
|
|
412
|
+
});
|
|
413
|
+
}
|
|
414
|
+
evalCode(code, contractAddress = UTIL_CONTRACT_ID) {
|
|
415
|
+
return evalCode({
|
|
416
|
+
contractAddress,
|
|
417
|
+
code,
|
|
418
|
+
bin: this.clarityBin,
|
|
419
|
+
coverageFolder: this.coverageFolder
|
|
420
|
+
});
|
|
421
|
+
}
|
|
422
|
+
async eval(code, contractAddress = UTIL_CONTRACT_ID) {
|
|
423
|
+
const result = await this.evalCode(code, contractAddress);
|
|
424
|
+
return result.value;
|
|
425
|
+
}
|
|
426
|
+
mapGet(map) {
|
|
427
|
+
return mapGet({ map, bin: this.clarityBin });
|
|
428
|
+
}
|
|
429
|
+
};
|
|
430
|
+
|
|
431
|
+
|
|
432
|
+
|
|
433
|
+
|
|
434
|
+
|
|
435
|
+
|
|
436
|
+
|
|
437
|
+
|
|
438
|
+
|
|
439
|
+
|
|
440
|
+
|
|
441
|
+
|
|
442
|
+
|
|
443
|
+
exports.Allocation = _nativebin.Allocation; exports.TestProvider = TestProvider; exports.createClarityBin = _nativebin.createClarityBin; exports.evalJson = _nativebin.evalJson; exports.executeJson = _nativebin.executeJson; exports.finishCoverage = finishCoverage; exports.getBlockHeight = getBlockHeight; exports.getStxBalance = getStxBalance; exports.makeRandomAddress = makeRandomAddress; exports.mineBlocks = mineBlocks; exports.setupCoverage = setupCoverage; exports.testFactory = testFactory;
|