movehat 0.1.7 โ 0.1.9
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/README.md +6 -3
- package/dist/cli.js +16 -6
- package/dist/cli.js.map +1 -1
- package/dist/commands/compile.d.ts +5 -0
- package/dist/commands/compile.d.ts.map +1 -1
- package/dist/commands/compile.js +1 -1
- package/dist/commands/compile.js.map +1 -1
- package/dist/commands/test.d.ts +5 -2
- package/dist/commands/test.d.ts.map +1 -1
- package/dist/commands/test.js +160 -40
- package/dist/commands/test.js.map +1 -1
- package/dist/helpers/setup.d.ts.map +1 -1
- package/dist/helpers/setup.js +4 -2
- package/dist/helpers/setup.js.map +1 -1
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +22 -7
- package/dist/runtime.js.map +1 -1
- package/dist/templates/README.md +16 -18
- package/dist/templates/tests/Counter.test.ts +17 -5
- package/package.json +1 -1
- package/src/cli.ts +16 -6
- package/src/commands/compile.ts +1 -1
- package/src/commands/test.ts +173 -44
- package/src/helpers/setup.ts +3 -1
- package/src/runtime.ts +24 -6
- package/src/templates/README.md +16 -18
- package/src/templates/tests/Counter.test.ts +17 -5
package/README.md
CHANGED
|
@@ -320,9 +320,12 @@ console.log(`Value: ${parseInt(value)}`);
|
|
|
320
320
|
## Available Commands
|
|
321
321
|
|
|
322
322
|
```bash
|
|
323
|
-
npx movehat compile
|
|
324
|
-
npx movehat
|
|
325
|
-
npx movehat test
|
|
323
|
+
npx movehat compile # Compile Move contracts
|
|
324
|
+
npx movehat test # Interactive menu to choose test type
|
|
325
|
+
npx movehat test --move # Run only Move unit tests (fast)
|
|
326
|
+
npx movehat test --ts # Run only TypeScript tests (starts local node)
|
|
327
|
+
npx movehat test --all # Run all tests (Move + TypeScript)
|
|
328
|
+
npx movehat run scripts/... # Run deployment scripts
|
|
326
329
|
```
|
|
327
330
|
|
|
328
331
|
## System Requirements
|
package/dist/cli.js
CHANGED
|
@@ -70,12 +70,22 @@ program
|
|
|
70
70
|
.action(runCommand);
|
|
71
71
|
program
|
|
72
72
|
.command('test')
|
|
73
|
-
.description('Run
|
|
74
|
-
.option('--move
|
|
75
|
-
.option('--ts
|
|
76
|
-
.option('--
|
|
77
|
-
.option('--
|
|
78
|
-
.
|
|
73
|
+
.description('Run tests (interactive menu if no flags provided)')
|
|
74
|
+
.option('--move', 'Run only Move unit tests (fast, no node required)')
|
|
75
|
+
.option('--ts', 'Run only TypeScript integration tests (starts local node)')
|
|
76
|
+
.option('--all', 'Run all tests (Move + TypeScript)')
|
|
77
|
+
.option('--watch', 'Run TypeScript tests in watch mode (implies --ts)')
|
|
78
|
+
.option('--filter <pattern>', 'Filter Move tests by name pattern')
|
|
79
|
+
// Legacy flags for backward compatibility
|
|
80
|
+
.option('--move-only', 'Alias for --move (deprecated)')
|
|
81
|
+
.option('--ts-only', 'Alias for --ts (deprecated)')
|
|
82
|
+
.action((options) => {
|
|
83
|
+
// --watch implies --ts
|
|
84
|
+
if (options.watch && !options.ts && !options.all) {
|
|
85
|
+
options.ts = true;
|
|
86
|
+
}
|
|
87
|
+
testCommand(options);
|
|
88
|
+
});
|
|
79
89
|
program
|
|
80
90
|
.command('test:move')
|
|
81
91
|
.description('Run Move unit tests')
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../src/commands/compile.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../src/commands/compile.ts"],"names":[],"mappings":"AAwCA;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CA2BlE;AAoBD;;;;;;;;;;;;GAYG;AACH,wBAA8B,cAAc,kBAyF3C"}
|
package/dist/commands/compile.js
CHANGED
|
@@ -36,7 +36,7 @@ function findMoveFiles(dir, maxDepth = 10, currentDepth = 0) {
|
|
|
36
36
|
* Extract named addresses used in Move files
|
|
37
37
|
* Looks for patterns like: module <address>::<module_name>
|
|
38
38
|
*/
|
|
39
|
-
function extractNamedAddresses(moveDir) {
|
|
39
|
+
export function extractNamedAddresses(moveDir) {
|
|
40
40
|
const addresses = new Set();
|
|
41
41
|
const moveFiles = findMoveFiles(moveDir);
|
|
42
42
|
for (const file of moveFiles) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compile.js","sourceRoot":"","sources":["../../src/commands/compile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAExC;;;;;GAKG;AACH,SAAS,aAAa,CAAC,GAAW,EAAE,WAAmB,EAAE,EAAE,eAAuB,CAAC;IACjF,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,kDAAkD;IAClD,IAAI,YAAY,GAAG,QAAQ,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAE7D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAE5C,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,kEAAkE;YAClE,IAAI,KAAK,CAAC,cAAc,EAAE,EAAE,CAAC;gBAC3B,SAAS;YACX,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC;QACrE,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACxC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,
|
|
1
|
+
{"version":3,"file":"compile.js","sourceRoot":"","sources":["../../src/commands/compile.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/test.d.ts
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
interface TestOptions {
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
move?: boolean;
|
|
3
|
+
ts?: boolean;
|
|
4
|
+
all?: boolean;
|
|
4
5
|
watch?: boolean;
|
|
5
6
|
filter?: string;
|
|
7
|
+
moveOnly?: boolean;
|
|
8
|
+
tsOnly?: boolean;
|
|
6
9
|
}
|
|
7
10
|
export default function testCommand(options?: TestOptions): Promise<void>;
|
|
8
11
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../src/commands/test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../src/commands/test.ts"],"names":[],"mappings":"AAOA,UAAU,WAAW;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAID,wBAA8B,WAAW,CAAC,OAAO,GAAE,WAAgB,iBAuClE"}
|
package/dist/commands/test.js
CHANGED
|
@@ -1,70 +1,190 @@
|
|
|
1
1
|
import { spawn } from "child_process";
|
|
2
2
|
import { join } from "path";
|
|
3
3
|
import { existsSync } from "fs";
|
|
4
|
+
import prompts from "prompts";
|
|
4
5
|
import { runMoveTests } from "../helpers/move-tests.js";
|
|
6
|
+
import { logger, colors, symbols } from "../ui/index.js";
|
|
5
7
|
export default async function testCommand(options = {}) {
|
|
6
|
-
// Handle
|
|
7
|
-
if (options.moveOnly)
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
// Handle legacy flags
|
|
9
|
+
if (options.moveOnly)
|
|
10
|
+
options.move = true;
|
|
11
|
+
if (options.tsOnly)
|
|
12
|
+
options.ts = true;
|
|
13
|
+
// Determine test type from flags
|
|
14
|
+
let testType;
|
|
15
|
+
if (options.all) {
|
|
16
|
+
testType = "all";
|
|
17
|
+
}
|
|
18
|
+
else if (options.move && options.ts) {
|
|
19
|
+
testType = "all";
|
|
20
|
+
}
|
|
21
|
+
else if (options.move) {
|
|
22
|
+
testType = "move";
|
|
23
|
+
}
|
|
24
|
+
else if (options.ts) {
|
|
25
|
+
testType = "ts";
|
|
26
|
+
}
|
|
27
|
+
// If no flags provided, show interactive menu
|
|
28
|
+
if (!testType) {
|
|
29
|
+
testType = await showTestMenu();
|
|
30
|
+
if (!testType) {
|
|
31
|
+
// User cancelled
|
|
32
|
+
process.exit(0);
|
|
12
33
|
}
|
|
13
|
-
return runMoveTestsSync(options.filter);
|
|
14
34
|
}
|
|
15
|
-
//
|
|
16
|
-
|
|
17
|
-
|
|
35
|
+
// Execute based on test type
|
|
36
|
+
switch (testType) {
|
|
37
|
+
case "move":
|
|
38
|
+
await runMoveTestsOnly(options.filter);
|
|
39
|
+
break;
|
|
40
|
+
case "ts":
|
|
41
|
+
await runTypeScriptTestsOnly(options.watch);
|
|
42
|
+
break;
|
|
43
|
+
case "all":
|
|
44
|
+
await runAllTests(options.filter);
|
|
45
|
+
break;
|
|
18
46
|
}
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Show interactive menu to select test type
|
|
50
|
+
*/
|
|
51
|
+
async function showTestMenu() {
|
|
52
|
+
logger.newline();
|
|
53
|
+
const response = await prompts({
|
|
54
|
+
type: "select",
|
|
55
|
+
name: "testType",
|
|
56
|
+
message: "What tests do you want to run?",
|
|
57
|
+
choices: [
|
|
58
|
+
{
|
|
59
|
+
title: `${colors.success("Move unit tests")} ${colors.muted("(fast, no node required)")}`,
|
|
60
|
+
value: "move",
|
|
61
|
+
description: "Run #[test] functions in your Move contracts",
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
title: `${colors.info("TypeScript integration tests")} ${colors.muted("(starts local node)")}`,
|
|
65
|
+
value: "ts",
|
|
66
|
+
description: "Run .test.ts files with a local Movement node",
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
title: `${colors.brand("All tests")} ${colors.muted("(Move + TypeScript)")}`,
|
|
70
|
+
value: "all",
|
|
71
|
+
description: "Run both Move and TypeScript tests sequentially",
|
|
72
|
+
},
|
|
73
|
+
],
|
|
74
|
+
initial: 0,
|
|
75
|
+
});
|
|
76
|
+
return response.testType;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Run only Move unit tests
|
|
80
|
+
*/
|
|
81
|
+
async function runMoveTestsOnly(filter) {
|
|
82
|
+
logger.newline();
|
|
83
|
+
console.log(colors.bold("Move Unit Tests"));
|
|
84
|
+
console.log(colors.muted("โ".repeat(50)));
|
|
85
|
+
logger.newline();
|
|
23
86
|
try {
|
|
24
|
-
await
|
|
25
|
-
|
|
87
|
+
await runMoveTests({
|
|
88
|
+
filter,
|
|
89
|
+
skipIfMissing: false, // Fail if no Move directory
|
|
90
|
+
});
|
|
26
91
|
}
|
|
27
92
|
catch (error) {
|
|
28
|
-
|
|
29
|
-
|
|
93
|
+
logger.newline();
|
|
94
|
+
logger.error("Move tests failed");
|
|
30
95
|
process.exit(1);
|
|
31
96
|
}
|
|
32
|
-
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Run only TypeScript integration tests
|
|
100
|
+
*/
|
|
101
|
+
async function runTypeScriptTestsOnly(watch = false) {
|
|
102
|
+
logger.newline();
|
|
103
|
+
console.log(colors.bold("TypeScript Integration Tests"));
|
|
104
|
+
console.log(colors.muted("โ".repeat(50)));
|
|
105
|
+
if (!watch) {
|
|
106
|
+
logger.newline();
|
|
107
|
+
logger.info("This will start a local Movement node for testing");
|
|
108
|
+
logger.newline();
|
|
109
|
+
}
|
|
33
110
|
try {
|
|
34
|
-
await runTypeScriptTests(
|
|
35
|
-
|
|
36
|
-
|
|
111
|
+
await runTypeScriptTests(watch);
|
|
112
|
+
if (!watch) {
|
|
113
|
+
logger.newline();
|
|
114
|
+
logger.success("TypeScript tests passed");
|
|
115
|
+
}
|
|
37
116
|
}
|
|
38
117
|
catch (error) {
|
|
39
|
-
|
|
118
|
+
logger.newline();
|
|
40
119
|
const message = error instanceof Error ? error.message : String(error);
|
|
41
|
-
|
|
120
|
+
logger.error(message);
|
|
42
121
|
process.exit(1);
|
|
43
122
|
}
|
|
44
123
|
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
124
|
+
/**
|
|
125
|
+
* Run all tests (Move + TypeScript)
|
|
126
|
+
*/
|
|
127
|
+
async function runAllTests(filter) {
|
|
128
|
+
logger.newline();
|
|
129
|
+
console.log(colors.bold("Running All Tests"));
|
|
130
|
+
console.log(colors.muted("โ".repeat(50)));
|
|
131
|
+
// Section 1: Move Tests
|
|
132
|
+
logger.newline();
|
|
133
|
+
console.log(`${colors.brandBright("1.")} ${colors.bold("Move Unit Tests")}`);
|
|
134
|
+
console.log(colors.muted("โ".repeat(50)));
|
|
135
|
+
logger.newline();
|
|
136
|
+
try {
|
|
137
|
+
await runMoveTests({
|
|
138
|
+
filter,
|
|
139
|
+
skipIfMissing: true, // Gracefully skip if no Move directory
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
catch (error) {
|
|
143
|
+
logger.newline();
|
|
144
|
+
logger.error("Move tests failed");
|
|
145
|
+
console.log(colors.muted("โ".repeat(50)));
|
|
146
|
+
process.exit(1);
|
|
147
|
+
}
|
|
148
|
+
// Section 2: TypeScript Tests
|
|
149
|
+
logger.newline();
|
|
150
|
+
console.log(colors.muted("โ".repeat(50)));
|
|
151
|
+
logger.newline();
|
|
152
|
+
console.log(`${colors.brandBright("2.")} ${colors.bold("TypeScript Integration Tests")}`);
|
|
153
|
+
console.log(colors.muted("โ".repeat(50)));
|
|
154
|
+
logger.newline();
|
|
155
|
+
try {
|
|
156
|
+
await runTypeScriptTests(false);
|
|
157
|
+
logger.newline();
|
|
158
|
+
console.log(colors.muted("โ".repeat(50)));
|
|
159
|
+
logger.newline();
|
|
160
|
+
logger.success("All tests passed!");
|
|
161
|
+
logger.newline();
|
|
162
|
+
}
|
|
163
|
+
catch (error) {
|
|
164
|
+
logger.newline();
|
|
165
|
+
console.log(colors.muted("โ".repeat(50)));
|
|
166
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
167
|
+
logger.error(message);
|
|
168
|
+
process.exit(1);
|
|
169
|
+
}
|
|
52
170
|
}
|
|
171
|
+
/**
|
|
172
|
+
* Run TypeScript tests using Mocha
|
|
173
|
+
*/
|
|
53
174
|
function runTypeScriptTests(watch = false) {
|
|
54
175
|
return new Promise((resolve, reject) => {
|
|
55
|
-
console.log("2. TypeScript Integration Tests");
|
|
56
|
-
console.log("-" + "-".repeat(60) + "\n");
|
|
57
176
|
const testDir = join(process.cwd(), "tests");
|
|
58
177
|
if (!existsSync(testDir)) {
|
|
59
|
-
console.log(
|
|
60
|
-
console.log("
|
|
178
|
+
console.log(`${colors.muted(symbols.info)} No TypeScript tests found ${colors.muted("(tests/ directory not found)")}`);
|
|
179
|
+
console.log(` ${colors.muted("Skipping TypeScript tests...")}`);
|
|
180
|
+
logger.newline();
|
|
61
181
|
resolve();
|
|
62
182
|
return;
|
|
63
183
|
}
|
|
64
184
|
const mochaPath = join(process.cwd(), "node_modules", ".bin", "mocha");
|
|
65
185
|
if (!existsSync(mochaPath)) {
|
|
66
|
-
|
|
67
|
-
console.
|
|
186
|
+
logger.error("Mocha not found in project dependencies");
|
|
187
|
+
console.log(` ${colors.muted("Install it with:")} ${colors.info("npm install --save-dev mocha")}`);
|
|
68
188
|
reject(new Error("Mocha not found"));
|
|
69
189
|
return;
|
|
70
190
|
}
|
|
@@ -77,14 +197,14 @@ function runTypeScriptTests(watch = false) {
|
|
|
77
197
|
});
|
|
78
198
|
// In watch mode, Mocha never exits, so resolve immediately
|
|
79
199
|
if (watch) {
|
|
80
|
-
console.log(
|
|
200
|
+
console.log(`${colors.info(symbols.info)} Watch mode active. Press Ctrl+C to exit.`);
|
|
201
|
+
logger.newline();
|
|
81
202
|
resolve();
|
|
82
203
|
return;
|
|
83
204
|
}
|
|
84
205
|
// Non-watch mode: wait for exit
|
|
85
206
|
child.on("exit", (code) => {
|
|
86
207
|
if (code === 0) {
|
|
87
|
-
console.log("\nโ TypeScript tests passed");
|
|
88
208
|
resolve();
|
|
89
209
|
}
|
|
90
210
|
else {
|
|
@@ -93,7 +213,7 @@ function runTypeScriptTests(watch = false) {
|
|
|
93
213
|
}
|
|
94
214
|
});
|
|
95
215
|
child.on("error", (error) => {
|
|
96
|
-
|
|
216
|
+
logger.error(`Failed to run TypeScript tests: ${error.message}`);
|
|
97
217
|
reject(error);
|
|
98
218
|
});
|
|
99
219
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test.js","sourceRoot":"","sources":["../../src/commands/test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,IAAI,
|
|
1
|
+
{"version":3,"file":"test.js","sourceRoot":"","sources":["../../src/commands/test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/helpers/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,KAAK,EAIN,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGnD,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,aAAa,CAAC;CACvB;AAED,wBAAsB,oBAAoB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/helpers/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,KAAK,EAIN,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGnD,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,aAAa,CAAC;CACvB;AAED,wBAAsB,oBAAoB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CA4BzF;AAED,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C"}
|
package/dist/helpers/setup.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Aptos, AptosConfig, } from "@aptos-labs/ts-sdk";
|
|
1
|
+
import { Aptos, AptosConfig, Network, } from "@aptos-labs/ts-sdk";
|
|
2
2
|
import { loadUserConfig, resolveNetworkConfig } from "../core/config.js";
|
|
3
3
|
import { AccountManager } from "../core/AccountManager.js";
|
|
4
4
|
export async function setupTestEnvironment(networkName) {
|
|
@@ -6,8 +6,10 @@ export async function setupTestEnvironment(networkName) {
|
|
|
6
6
|
const userConfig = await loadUserConfig();
|
|
7
7
|
const network = networkName || process.env.MH_CLI_NETWORK;
|
|
8
8
|
const config = await resolveNetworkConfig(userConfig, network);
|
|
9
|
+
// Movement Network uses custom chain IDs, so we need to use Network.CUSTOM
|
|
10
|
+
// and let the SDK fetch the actual chainId from the node
|
|
9
11
|
const aptosConfig = new AptosConfig({
|
|
10
|
-
network:
|
|
12
|
+
network: Network.CUSTOM,
|
|
11
13
|
fullnode: config.rpc,
|
|
12
14
|
});
|
|
13
15
|
const aptos = new Aptos(aptosConfig);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/helpers/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,EACL,WAAW,
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/helpers/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,EACL,WAAW,EAEX,OAAO,GACR,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAEzE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAQ3D,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,WAAoB;IAC7D,+CAA+C;IAC/C,MAAM,UAAU,GAAG,MAAM,cAAc,EAAE,CAAC;IAC1C,MAAM,OAAO,GAAG,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;IAC1D,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAE/D,2EAA2E;IAC3E,yDAAyD;IACzD,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC;QAClC,OAAO,EAAE,OAAO,CAAC,MAAM;QACvB,QAAQ,EAAE,MAAM,CAAC,GAAG;KACrB,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;IAErC,oCAAoC;IACpC,MAAM,OAAO,GAAG,cAAc,CAAC,yBAAyB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAE5E,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;IACxC,OAAO,CAAC,GAAG,CAAC,eAAe,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAChE,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,WAAW,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;IAEvC,OAAO;QACL,KAAK;QACL,OAAO;QACP,MAAM;KACP,CAAA;AACH,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC7B,OAAO,cAAc,CAAC,aAAa,EAAE,CAAC;AAC1C,CAAC"}
|
package/dist/runtime.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,cAAc,EAAe,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAgBtD,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAC7C;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,cAAc,CAAC,
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,cAAc,EAAe,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAgBtD,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAC7C;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,cAAc,CAAC,CA6VzB;AAED;;;GAGG;AACH,wBAAgB,UAAU,IAAI,cAAc,CAO3C;AAED;;;GAGG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,cAAc,CAAC,CAK1D;AAGD,eAAO,MAAM,EAAE;;CAId,CAAC"}
|
package/dist/runtime.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Aptos, AptosConfig, } from "@aptos-labs/ts-sdk";
|
|
1
|
+
import { Aptos, AptosConfig, Network, } from "@aptos-labs/ts-sdk";
|
|
2
2
|
import { loadUserConfig, resolveNetworkConfig } from "./core/config.js";
|
|
3
3
|
import { getContract } from "./core/contract.js";
|
|
4
4
|
import { saveDeployment, loadDeployment, getAllDeployments, getDeployedAddress, validateSafeName, } from "./core/deployments.js";
|
|
@@ -19,8 +19,10 @@ export async function initRuntime(options = {}) {
|
|
|
19
19
|
// Resolve configuration for selected network
|
|
20
20
|
const config = await resolveNetworkConfig(mergedUserConfig, options.network);
|
|
21
21
|
// Setup Aptos client
|
|
22
|
+
// Movement Network uses custom chain IDs, so we need to use Network.CUSTOM
|
|
23
|
+
// and let the SDK fetch the actual chainId from the node
|
|
22
24
|
const aptosConfig = new AptosConfig({
|
|
23
|
-
network:
|
|
25
|
+
network: Network.CUSTOM,
|
|
24
26
|
fullnode: config.rpc,
|
|
25
27
|
});
|
|
26
28
|
const aptos = new Aptos(aptosConfig);
|
|
@@ -91,9 +93,22 @@ export async function initRuntime(options = {}) {
|
|
|
91
93
|
const safeProfile = validateAndEscapeProfile(profile);
|
|
92
94
|
console.log(`๐ฆ Publishing module "${moduleName}" from ${dir}...`);
|
|
93
95
|
try {
|
|
94
|
-
//
|
|
96
|
+
// Get the deployer address to use for named addresses
|
|
97
|
+
const deployerAddress = account.accountAddress.toString();
|
|
98
|
+
// Detect named addresses from Move files
|
|
99
|
+
const { extractNamedAddresses } = await import("./commands/compile.js");
|
|
100
|
+
const detectedAddresses = extractNamedAddresses(dir);
|
|
101
|
+
// Build named addresses argument - use deployer address for all detected addresses
|
|
102
|
+
let namedAddressesArg = "";
|
|
103
|
+
if (detectedAddresses.size > 0) {
|
|
104
|
+
const addressPairs = Array.from(detectedAddresses)
|
|
105
|
+
.map(name => `${name}=${deployerAddress}`)
|
|
106
|
+
.join(",");
|
|
107
|
+
namedAddressesArg = `--named-addresses ${addressPairs}`;
|
|
108
|
+
}
|
|
109
|
+
// Build first with named addresses
|
|
95
110
|
console.log("๐จ Building package...");
|
|
96
|
-
const buildCmd = `movement move build --package-dir ${safeDir}
|
|
111
|
+
const buildCmd = `movement move build --package-dir ${safeDir} ${namedAddressesArg}`.trim();
|
|
97
112
|
const { stdout: buildOut } = await execAsync(buildCmd, {
|
|
98
113
|
timeout: 120000, // 2 minutes for git dependency downloads
|
|
99
114
|
maxBuffer: 10 * 1024 * 1024, // 10MB buffer for large outputs
|
|
@@ -108,8 +123,7 @@ export async function initRuntime(options = {}) {
|
|
|
108
123
|
if (cleanPrivateKey.startsWith('ed25519-priv-')) {
|
|
109
124
|
cleanPrivateKey = cleanPrivateKey.replace('ed25519-priv-', '');
|
|
110
125
|
}
|
|
111
|
-
//
|
|
112
|
-
const deployerAddress = account.accountAddress.toString();
|
|
126
|
+
// deployerAddress is already declared above
|
|
113
127
|
// Read Move.toml to update named addresses with deployer address
|
|
114
128
|
const moveTomlPath = join(dir, 'Move.toml');
|
|
115
129
|
let originalMoveToml = '';
|
|
@@ -160,7 +174,8 @@ export async function initRuntime(options = {}) {
|
|
|
160
174
|
const configYaml = yaml.dump(movementConfig);
|
|
161
175
|
writeFileSync(movementConfigPath, configYaml, { mode: 0o600 });
|
|
162
176
|
// Execute publish command without exposing private key in CLI
|
|
163
|
-
|
|
177
|
+
// Include named addresses for publish as well
|
|
178
|
+
const publishCmd = `movement move publish --package-dir ${safeDir} --url ${config.rpc} --profile ${safeProfile} --assume-yes ${namedAddressesArg}`.trim();
|
|
164
179
|
const result = await execAsync(publishCmd, {
|
|
165
180
|
timeout: 120000, // 2 minutes for blockchain transactions
|
|
166
181
|
maxBuffer: 10 * 1024 * 1024, // 10MB buffer for large outputs
|
package/dist/runtime.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,EACL,WAAW,EAEX,OAAO,GACR,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAE,WAAW,EAAgB,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EACL,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAElB,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,IAAI,aAAa,GAA0B,IAAI,CAAC;AAQhD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,UAA8B,EAAE;IAEhC,0CAA0C;IAC1C,MAAM,UAAU,GAAG,MAAM,cAAc,EAAE,CAAC;IAE1C,oCAAoC;IACpC,MAAM,gBAAgB,GAAsB,OAAO,CAAC,cAAc;QAChE,CAAC,CAAC,EAAE,GAAG,UAAU,EAAE,GAAG,OAAO,CAAC,cAAc,EAAE;QAC9C,CAAC,CAAC,UAAU,CAAC;IAEf,6CAA6C;IAC7C,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,gBAAgB,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAE7E,qBAAqB;IACrB,2EAA2E;IAC3E,yDAAyD;IACzD,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC;QAClC,OAAO,EAAE,OAAO,CAAC,MAAM;QACvB,QAAQ,EAAE,MAAM,CAAC,GAAG;KACrB,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;IAErC,sCAAsC;IACtC,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAc,cAAc,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAE1E,kDAAkD;IAClD,MAAM,OAAO,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;IACvC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,iBAAiB,YAAY,oBAAoB,QAAQ,CAAC,MAAM,uBAAuB,CAAC,CAAC;IAC3G,CAAC;IAED,6CAA6C;IAC7C,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;IAEnD,eAAe;IACf,MAAM,OAAO,GAAgB;QAC3B,IAAI,EAAE,MAAM,CAAC,OAAO;QACpB,GAAG,EAAE,MAAM,CAAC,GAAG;KAChB,CAAC;IAEF,mBAAmB;IACnB,MAAM,iBAAiB,GAAG,CAAC,OAAe,EAAE,UAAkB,EAAgB,EAAE;QAC9E,OAAO,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IACjD,CAAC,CAAC;IAEF,MAAM,cAAc,GAAG,KAAK,EAC1B,UAAkB,EAClB,OAEC,EACwB,EAAE;QAC3B,4BAA4B;QAC5B,gBAAgB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAEvC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;QAC/C,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;QAC/E,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;QACrC,MAAM,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAC5F,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAElC,8CAA8C;QAC9C,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,MAAM,CAAC;QAE7D,4BAA4B;QAC5B,MAAM,kBAAkB,GAAG,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QACtE,IAAI,kBAAkB,IAAI,CAAC,aAAa,EAAE,CAAC;YACzC,wDAAwD;YACxD,MAAM,YAAY,GAAG;gBACnB,WAAW,UAAU,4BAA4B,MAAM,CAAC,OAAO,EAAE;gBACjE,YAAY,kBAAkB,CAAC,OAAO,EAAE;gBACxC,gBAAgB,IAAI,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE,EAAE;gBACzE,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,gBAAgB,kBAAkB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI;gBAC9E,8CAA8C;gBAC9C,kCAAkC,MAAM,CAAC,OAAO,aAAa;aAC9D,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAE7B,uCAAuC;YACvC,MAAM,gBAAgB,GAAG;gBACvB,eAAe,UAAU,4BAA4B,MAAM,CAAC,OAAO,EAAE;gBACrE,eAAe,kBAAkB,CAAC,OAAO,EAAE;gBAC3C,mBAAmB,IAAI,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE,EAAE;gBAC5E,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,mBAAmB,kBAAkB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI;gBACjF,iDAAiD;gBACjD,qCAAqC,MAAM,CAAC,OAAO,eAAe;aACnE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAE7B,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;YAEhC,qEAAqE;YACrE,MAAM,IAAI,0BAA0B,CAClC,YAAY,EACZ,UAAU,EACV,MAAM,CAAC,OAAO,EACd,kBAAkB,CAAC,OAAO,EAC1B,kBAAkB,CAAC,SAAS,EAC5B,kBAAkB,CAAC,MAAM,CAC1B,CAAC;QACJ,CAAC;QAED,IAAI,aAAa,IAAI,kBAAkB,EAAE,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,0BAA0B,UAAU,QAAQ,MAAM,CAAC,OAAO,KAAK,CAAC,CAAC;QAC/E,CAAC;QAED,MAAM,GAAG,GAAG,OAAO,EAAE,UAAU,IAAI,MAAM,CAAC,OAAO,CAAC;QAClD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,SAAS,CAAC;QAE5C,mDAAmD;QACnD,MAAM,OAAO,GAAG,qBAAqB,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;QAChE,MAAM,WAAW,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC;QAEtD,OAAO,CAAC,GAAG,CAAC,yBAAyB,UAAU,UAAU,GAAG,KAAK,CAAC,CAAC;QAEnE,IAAI,CAAC;YACH,sDAAsD;YACtD,MAAM,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;YAE1D,yCAAyC;YACzC,MAAM,EAAE,qBAAqB,EAAE,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;YACxE,MAAM,iBAAiB,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;YAErD,mFAAmF;YACnF,IAAI,iBAAiB,GAAG,EAAE,CAAC;YAC3B,IAAI,iBAAiB,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;gBAC/B,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC;qBAC/C,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,IAAI,eAAe,EAAE,CAAC;qBACzC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACb,iBAAiB,GAAG,qBAAqB,YAAY,EAAE,CAAC;YAC1D,CAAC;YAED,mCAAmC;YACnC,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;YACtC,MAAM,QAAQ,GAAG,qCAAqC,OAAO,IAAI,iBAAiB,EAAE,CAAC,IAAI,EAAE,CAAC;YAC5F,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,SAAS,CAAC,QAAQ,EAAE;gBACrD,OAAO,EAAE,MAAM,EAAE,yCAAyC;gBAC1D,SAAS,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,gCAAgC;aAC9D,CAAC,CAAC;YACH,IAAI,QAAQ;gBAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;YAE3C,6DAA6D;YAC7D,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;YAE9C,4DAA4D;YAC5D,4CAA4C;YAC5C,IAAI,eAAe,GAAG,MAAM,CAAC,UAAU,CAAC;YACxC,IAAI,eAAe,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;gBAChD,eAAe,GAAG,eAAe,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;YACjE,CAAC;YAED,4CAA4C;YAE5C,iEAAiE;YACjE,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;YAC5C,IAAI,gBAAgB,GAAG,EAAE,CAAC;YAE1B,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC7B,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;gBAC3E,gBAAgB,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;gBAEzD,iEAAiE;gBACjE,MAAM,eAAe,GAAG,gBAAgB,CAAC,OAAO,CAC9C,mCAAmC,EACnC,CAAC,KAAK,EAAE,gBAAgB,EAAE,EAAE;oBAC1B,MAAM,cAAc,GAAG,gBAAgB,CAAC,OAAO,CAC7C,oDAAoD,EACpD,SAAS,eAAe,GAAG,CAC5B,CAAC;oBACF,OAAO,cAAc,cAAc,EAAE,CAAC;gBACxC,CAAC,CACF,CAAC;gBAEF,sCAAsC;gBACtC,MAAM,SAAS,CAAC,YAAY,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;YAC1D,CAAC;YAED,IAAI,UAAU,GAAG,EAAE,CAAC;YACpB,IAAI,UAAU,GAAG,EAAE,CAAC;YAEpB,sDAAsD;YACtD,4DAA4D;YAC5D,MAAM,iBAAiB,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;YACpD,MAAM,kBAAkB,GAAG,IAAI,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC;YAClE,IAAI,sBAAsB,GAAG,EAAE,CAAC;YAEhC,IAAI,CAAC;gBACH,iCAAiC;gBACjC,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;oBACnC,SAAS,CAAC,iBAAiB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;gBACjE,CAAC;gBAED,sCAAsC;gBACtC,IAAI,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;oBACnC,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;oBAChE,sBAAsB,GAAG,MAAM,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;gBACvE,CAAC;gBAED,0CAA0C;gBAC1C,+CAA+C;gBAC/C,MAAM,cAAc,GAAQ,sBAAsB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAE5F,+BAA+B;gBAC/B,+EAA+E;gBAC/E,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;oBAC7B,cAAc,CAAC,QAAQ,GAAG,EAAE,CAAC;gBAC/B,CAAC;gBACD,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;oBACtC,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;gBACxC,CAAC;gBAED,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,WAAW,GAAG,eAAe,CAAC;gBAC/D,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;gBAC3E,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,GAAG,eAAe,CAAC;gBAC3D,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC;gBAEvD,iDAAiD;gBACjD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBAC7C,aAAa,CAAC,kBAAkB,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;gBAE/D,8DAA8D;gBAC9D,8CAA8C;gBAC9C,MAAM,UAAU,GAAG,uCAAuC,OAAO,UAAU,MAAM,CAAC,GAAG,cAAc,WAAW,iBAAiB,iBAAiB,EAAE,CAAC,IAAI,EAAE,CAAC;gBAC1J,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,UAAU,EAAE;oBACzC,OAAO,EAAE,MAAM,EAAE,wCAAwC;oBACzD,SAAS,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,gCAAgC;iBAC9D,CAAC,CAAC;gBACH,UAAU,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;gBACjC,UAAU,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;gBACjC,IAAI,UAAU;oBAAE,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC/C,IAAI,UAAU;oBAAE,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;YACnD,CAAC;oBAAS,CAAC;gBACT,mCAAmC;gBACnC,IAAI,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;oBACnC,IAAI,sBAAsB,EAAE,CAAC;wBAC3B,0BAA0B;wBAC1B,aAAa,CAAC,kBAAkB,EAAE,sBAAsB,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;oBAC7E,CAAC;yBAAM,CAAC;wBACN,+CAA+C;wBAC/C,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;wBAC9D,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;oBACnD,CAAC;gBACH,CAAC;gBAED,6BAA6B;gBAC7B,IAAI,gBAAgB,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;oBACjD,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;oBACjE,MAAM,SAAS,CAAC,YAAY,EAAE,gBAAgB,EAAE,OAAO,CAAC,CAAC;gBAC3D,CAAC;YACH,CAAC;YAED,uCAAuC;YACvC,yFAAyF;YACzF,kFAAkF;YAClF,IAAI,MAA0B,CAAC;YAC/B,MAAM,sBAAsB,GAAG,UAAU,CAAC,KAAK,CAAC,4EAA4E,CAAC,CAAC;YAC9H,IAAI,sBAAsB,EAAE,CAAC;gBAC3B,MAAM,GAAG,sBAAsB,CAAC,CAAC,CAAC,CAAC;YACrC,CAAC;iBAAM,CAAC;gBACN,mEAAmE;gBACnE,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;gBAChE,IAAI,WAAW,EAAE,CAAC;oBAChB,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;gBAC1B,CAAC;YACH,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;YAEhD,yBAAyB;YACzB,MAAM,UAAU,GAAmB;gBACjC,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE;gBAC1C,UAAU;gBACV,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,QAAQ,EAAE,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE;gBAC3C,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;gBACrB,MAAM;aACP,CAAC;YAEF,kBAAkB;YAClB,cAAc,CAAC,UAAU,CAAC,CAAC;YAE3B,OAAO,UAAU,CAAC;QACpB,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,oDAAoD;YACpD,IAAI,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC;YAC7B,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBACjB,QAAQ,IAAI,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC;YAClC,CAAC;YACD,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC5B,CAAC;YACD,OAAO,CAAC,KAAK,CAAC,+BAA+B,QAAQ,EAAE,CAAC,CAAC;YACzD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,aAAa,GAAG,CAAC,UAAkB,EAAyB,EAAE;QAClE,OAAO,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACpD,CAAC,CAAC;IAEF,MAAM,cAAc,GAAG,GAAmC,EAAE;QAC1D,OAAO,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC,CAAC;IAEF,MAAM,oBAAoB,GAAG,CAAC,UAAkB,EAAiB,EAAE;QACjE,OAAO,kBAAkB,CAAC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACxD,CAAC,CAAC;IAEF,MAAM,aAAa,GAAG,GAAY,EAAE;QAClC,OAAO,cAAc,CAAC,aAAa,EAAE,CAAC;IACxC,CAAC,CAAC;IAEF,MAAM,gBAAgB,GAAG,CAAC,aAAqB,EAAW,EAAE;QAC1D,OAAO,cAAc,CAAC,yBAAyB,CAAC,aAAa,CAAC,CAAC;IACjE,CAAC,CAAC;IAEF,MAAM,iBAAiB,GAAG,CAAC,KAAa,EAAW,EAAE;QACnD,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,iBAAiB,KAAK,wCAAwC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC;QACvG,CAAC;QACD,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC,CAAC;IAEF,MAAM,aAAa,GAAG,KAAK,EAAE,WAAmB,EAAiB,EAAE;QACjE,gDAAgD;QAChD,aAAa,GAAG,IAAI,CAAC;QACrB,MAAM,WAAW,CAAC,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;IAC1D,CAAC,CAAC;IAEF,uBAAuB;IACvB,MAAM,OAAO,GAAmB;QAC9B,MAAM;QACN,OAAO;QACP,KAAK;QACL,OAAO;QACP,QAAQ;QACR,WAAW,EAAE,iBAAiB;QAC9B,cAAc;QACd,aAAa;QACb,cAAc;QACd,oBAAoB;QACpB,aAAa;QACb,UAAU,EAAE,gBAAgB;QAC5B,iBAAiB;QACjB,aAAa;KACd,CAAC;IAEF,aAAa,GAAG,OAAO,CAAC;IACxB,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU;IACxB,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CACb,gFAAgF,CACjF,CAAC;IACJ,CAAC;IACD,OAAO,aAAa,CAAC;AACvB,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,aAAa,CAAC;IACvB,CAAC;IACD,OAAO,WAAW,EAAE,CAAC;AACvB,CAAC;AAED,mDAAmD;AACnD,MAAM,CAAC,MAAM,EAAE,GAAG;IAChB,IAAI,OAAO;QACT,OAAO,UAAU,EAAE,CAAC;IACtB,CAAC;CACF,CAAC"}
|
package/dist/templates/README.md
CHANGED
|
@@ -52,38 +52,36 @@ npm run compile
|
|
|
52
52
|
npm test
|
|
53
53
|
```
|
|
54
54
|
|
|
55
|
+
When you run `npm test`, you'll see an **interactive menu**:
|
|
56
|
+
|
|
57
|
+
```
|
|
58
|
+
? What tests do you want to run?
|
|
59
|
+
โฏ Move unit tests (fast, no node required)
|
|
60
|
+
TypeScript integration tests (starts local node)
|
|
61
|
+
All tests (Move + TypeScript)
|
|
62
|
+
```
|
|
63
|
+
|
|
55
64
|
**Two types of tests available:**
|
|
56
65
|
|
|
57
66
|
1. **Move Unit Tests** (`move/sources/Counter.move` in `#[test]` blocks)
|
|
58
67
|
- Written in Move with `#[test]` annotations
|
|
59
68
|
- Test internal logic and business rules
|
|
60
69
|
- Ultra-fast execution (milliseconds)
|
|
61
|
-
- Run with: `npm run test:move`
|
|
70
|
+
- Run with: `npm run test:move` or `movehat test --move`
|
|
62
71
|
|
|
63
72
|
2. **TypeScript Integration Tests** (`tests/Counter.test.ts`)
|
|
64
73
|
- Written in TypeScript on a **local Movement blockchain**
|
|
65
74
|
- Automatically starts a local node, funds accounts, and deploys contracts
|
|
66
75
|
- Runs real transactions (not simulation!)
|
|
67
76
|
- Just like Hardhat - zero manual setup
|
|
68
|
-
- Run with: `npm run test:ts`
|
|
69
|
-
|
|
70
|
-
**How it works:**
|
|
71
|
-
Tests run on a real local blockchain (similar to Hardhat):
|
|
72
|
-
- ๐ Automatically starts a Movement node locally
|
|
73
|
-
- ๐ฐ Funds test accounts from local faucet
|
|
74
|
-
- ๐ฆ Auto-deploys your contracts
|
|
75
|
-
- โ
Runs real transactions
|
|
76
|
-
- ๐งน Cleans up when done
|
|
77
|
-
|
|
78
|
-
**Two modes available:**
|
|
79
|
-
- `local-node` (default): Full blockchain with real transactions
|
|
80
|
-
- `fork`: Read-only snapshot of testnet (faster but limited)
|
|
77
|
+
- Run with: `npm run test:ts` or `movehat test --ts`
|
|
81
78
|
|
|
82
79
|
**Commands:**
|
|
83
|
-
- `npm test` -
|
|
84
|
-
- `npm run test:move` - Only Move unit tests (fast)
|
|
85
|
-
- `npm run test:ts` - Only TypeScript integration tests
|
|
86
|
-
- `
|
|
80
|
+
- `npm test` - Interactive menu to choose test type
|
|
81
|
+
- `npm run test:move` or `movehat test --move` - Only Move unit tests (fast)
|
|
82
|
+
- `npm run test:ts` or `movehat test --ts` - Only TypeScript integration tests
|
|
83
|
+
- `movehat test --all` - Both Move + TypeScript tests
|
|
84
|
+
- `npm run test:watch` or `movehat test --watch` - TypeScript tests in watch mode
|
|
87
85
|
|
|
88
86
|
### 5. Deploy (optional)
|
|
89
87
|
|
|
@@ -29,10 +29,14 @@ describe("Counter Contract", () => {
|
|
|
29
29
|
});
|
|
30
30
|
|
|
31
31
|
describe("Counter functionality", () => {
|
|
32
|
-
it("should initialize
|
|
32
|
+
it("should initialize counter for deployer", async () => {
|
|
33
33
|
const counter = fixture.contracts.counter; // Type-safe, no `!` needed
|
|
34
34
|
const deployer = fixture.accounts.deployer;
|
|
35
35
|
|
|
36
|
+
// Initialize counter for deployer (required before get/increment)
|
|
37
|
+
const tx = await counter.call(deployer, "init", []);
|
|
38
|
+
console.log(` Init transaction: ${tx.hash}`);
|
|
39
|
+
|
|
36
40
|
// Read counter value (returns string from view function)
|
|
37
41
|
const value = await counter.view<string>("get", [
|
|
38
42
|
deployer.accountAddress.toString()
|
|
@@ -63,13 +67,17 @@ describe("Counter Contract", () => {
|
|
|
63
67
|
expect(parseInt(value)).to.equal(1);
|
|
64
68
|
});
|
|
65
69
|
|
|
66
|
-
it("alice can
|
|
70
|
+
it("alice can initialize and increment her counter", async () => {
|
|
67
71
|
const counter = fixture.contracts.counter;
|
|
68
72
|
const alice = fixture.accounts.alice;
|
|
69
73
|
|
|
74
|
+
// Alice must initialize her counter first
|
|
75
|
+
const initTx = await counter.call(alice, "init", []);
|
|
76
|
+
console.log(` Alice init transaction: ${initTx.hash}`);
|
|
77
|
+
|
|
70
78
|
// Alice increments her own counter
|
|
71
79
|
const tx = await counter.call(alice, "increment", []);
|
|
72
|
-
console.log(` Alice's transaction: ${tx.hash}`);
|
|
80
|
+
console.log(` Alice's increment transaction: ${tx.hash}`);
|
|
73
81
|
|
|
74
82
|
// Read counter value for Alice (each user has their own counter)
|
|
75
83
|
const aliceValue = await counter.view<string>("get", [
|
|
@@ -88,13 +96,17 @@ describe("Counter Contract", () => {
|
|
|
88
96
|
expect(parseInt(deployerValue)).to.equal(1);
|
|
89
97
|
});
|
|
90
98
|
|
|
91
|
-
it("bob can
|
|
99
|
+
it("bob can initialize and increment his counter", async () => {
|
|
92
100
|
const counter = fixture.contracts.counter;
|
|
93
101
|
const bob = fixture.accounts.bob;
|
|
94
102
|
|
|
103
|
+
// Bob must initialize his counter first
|
|
104
|
+
const initTx = await counter.call(bob, "init", []);
|
|
105
|
+
console.log(` Bob init transaction: ${initTx.hash}`);
|
|
106
|
+
|
|
95
107
|
// Bob increments his own counter
|
|
96
108
|
const tx = await counter.call(bob, "increment", []);
|
|
97
|
-
console.log(` Bob's transaction: ${tx.hash}`);
|
|
109
|
+
console.log(` Bob's increment transaction: ${tx.hash}`);
|
|
98
110
|
|
|
99
111
|
// Read counter value for Bob (each user has their own counter)
|
|
100
112
|
const bobValue = await counter.view<string>("get", [
|
package/package.json
CHANGED
package/src/cli.ts
CHANGED
|
@@ -80,12 +80,22 @@ program
|
|
|
80
80
|
|
|
81
81
|
program
|
|
82
82
|
.command('test')
|
|
83
|
-
.description('Run
|
|
84
|
-
.option('--move
|
|
85
|
-
.option('--ts
|
|
86
|
-
.option('--
|
|
87
|
-
.option('--
|
|
88
|
-
.
|
|
83
|
+
.description('Run tests (interactive menu if no flags provided)')
|
|
84
|
+
.option('--move', 'Run only Move unit tests (fast, no node required)')
|
|
85
|
+
.option('--ts', 'Run only TypeScript integration tests (starts local node)')
|
|
86
|
+
.option('--all', 'Run all tests (Move + TypeScript)')
|
|
87
|
+
.option('--watch', 'Run TypeScript tests in watch mode (implies --ts)')
|
|
88
|
+
.option('--filter <pattern>', 'Filter Move tests by name pattern')
|
|
89
|
+
// Legacy flags for backward compatibility
|
|
90
|
+
.option('--move-only', 'Alias for --move (deprecated)')
|
|
91
|
+
.option('--ts-only', 'Alias for --ts (deprecated)')
|
|
92
|
+
.action((options) => {
|
|
93
|
+
// --watch implies --ts
|
|
94
|
+
if (options.watch && !options.ts && !options.all) {
|
|
95
|
+
options.ts = true;
|
|
96
|
+
}
|
|
97
|
+
testCommand(options);
|
|
98
|
+
});
|
|
89
99
|
|
|
90
100
|
program
|
|
91
101
|
.command('test:move')
|
package/src/commands/compile.ts
CHANGED
|
@@ -42,7 +42,7 @@ function findMoveFiles(dir: string, maxDepth: number = 10, currentDepth: number
|
|
|
42
42
|
* Extract named addresses used in Move files
|
|
43
43
|
* Looks for patterns like: module <address>::<module_name>
|
|
44
44
|
*/
|
|
45
|
-
function extractNamedAddresses(moveDir: string): Set<string> {
|
|
45
|
+
export function extractNamedAddresses(moveDir: string): Set<string> {
|
|
46
46
|
const addresses = new Set<string>();
|
|
47
47
|
const moveFiles = findMoveFiles(moveDir);
|
|
48
48
|
|
package/src/commands/test.ts
CHANGED
|
@@ -1,78 +1,207 @@
|
|
|
1
1
|
import { spawn } from "child_process";
|
|
2
|
-
import { join
|
|
2
|
+
import { join } from "path";
|
|
3
3
|
import { existsSync } from "fs";
|
|
4
|
+
import prompts from "prompts";
|
|
4
5
|
import { runMoveTests } from "../helpers/move-tests.js";
|
|
6
|
+
import { logger, colors, symbols } from "../ui/index.js";
|
|
5
7
|
|
|
6
8
|
interface TestOptions {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
+
move?: boolean;
|
|
10
|
+
ts?: boolean;
|
|
11
|
+
all?: boolean;
|
|
9
12
|
watch?: boolean;
|
|
10
13
|
filter?: string;
|
|
14
|
+
// Legacy flags (for backward compatibility)
|
|
15
|
+
moveOnly?: boolean;
|
|
16
|
+
tsOnly?: boolean;
|
|
11
17
|
}
|
|
12
18
|
|
|
19
|
+
type TestType = "move" | "ts" | "all";
|
|
20
|
+
|
|
13
21
|
export default async function testCommand(options: TestOptions = {}) {
|
|
14
|
-
// Handle
|
|
15
|
-
if (options.moveOnly)
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
22
|
+
// Handle legacy flags
|
|
23
|
+
if (options.moveOnly) options.move = true;
|
|
24
|
+
if (options.tsOnly) options.ts = true;
|
|
25
|
+
|
|
26
|
+
// Determine test type from flags
|
|
27
|
+
let testType: TestType | undefined;
|
|
28
|
+
|
|
29
|
+
if (options.all) {
|
|
30
|
+
testType = "all";
|
|
31
|
+
} else if (options.move && options.ts) {
|
|
32
|
+
testType = "all";
|
|
33
|
+
} else if (options.move) {
|
|
34
|
+
testType = "move";
|
|
35
|
+
} else if (options.ts) {
|
|
36
|
+
testType = "ts";
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// If no flags provided, show interactive menu
|
|
40
|
+
if (!testType) {
|
|
41
|
+
testType = await showTestMenu();
|
|
42
|
+
if (!testType) {
|
|
43
|
+
// User cancelled
|
|
44
|
+
process.exit(0);
|
|
20
45
|
}
|
|
21
|
-
return runMoveTestsSync(options.filter);
|
|
22
46
|
}
|
|
23
47
|
|
|
24
|
-
//
|
|
25
|
-
|
|
26
|
-
|
|
48
|
+
// Execute based on test type
|
|
49
|
+
switch (testType) {
|
|
50
|
+
case "move":
|
|
51
|
+
await runMoveTestsOnly(options.filter);
|
|
52
|
+
break;
|
|
53
|
+
case "ts":
|
|
54
|
+
await runTypeScriptTestsOnly(options.watch);
|
|
55
|
+
break;
|
|
56
|
+
case "all":
|
|
57
|
+
await runAllTests(options.filter);
|
|
58
|
+
break;
|
|
27
59
|
}
|
|
60
|
+
}
|
|
28
61
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
62
|
+
/**
|
|
63
|
+
* Show interactive menu to select test type
|
|
64
|
+
*/
|
|
65
|
+
async function showTestMenu(): Promise<TestType | undefined> {
|
|
66
|
+
logger.newline();
|
|
67
|
+
|
|
68
|
+
const response = await prompts({
|
|
69
|
+
type: "select",
|
|
70
|
+
name: "testType",
|
|
71
|
+
message: "What tests do you want to run?",
|
|
72
|
+
choices: [
|
|
73
|
+
{
|
|
74
|
+
title: `${colors.success("Move unit tests")} ${colors.muted("(fast, no node required)")}`,
|
|
75
|
+
value: "move",
|
|
76
|
+
description: "Run #[test] functions in your Move contracts",
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
title: `${colors.info("TypeScript integration tests")} ${colors.muted("(starts local node)")}`,
|
|
80
|
+
value: "ts",
|
|
81
|
+
description: "Run .test.ts files with a local Movement node",
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
title: `${colors.brand("All tests")} ${colors.muted("(Move + TypeScript)")}`,
|
|
85
|
+
value: "all",
|
|
86
|
+
description: "Run both Move and TypeScript tests sequentially",
|
|
87
|
+
},
|
|
88
|
+
],
|
|
89
|
+
initial: 0,
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
return response.testType;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Run only Move unit tests
|
|
97
|
+
*/
|
|
98
|
+
async function runMoveTestsOnly(filter?: string): Promise<void> {
|
|
99
|
+
logger.newline();
|
|
100
|
+
console.log(colors.bold("Move Unit Tests"));
|
|
101
|
+
console.log(colors.muted("โ".repeat(50)));
|
|
102
|
+
logger.newline();
|
|
32
103
|
|
|
33
|
-
// First run Move tests (fail fast)
|
|
34
104
|
try {
|
|
35
|
-
await
|
|
36
|
-
|
|
105
|
+
await runMoveTests({
|
|
106
|
+
filter,
|
|
107
|
+
skipIfMissing: false, // Fail if no Move directory
|
|
108
|
+
});
|
|
37
109
|
} catch (error) {
|
|
38
|
-
|
|
39
|
-
|
|
110
|
+
logger.newline();
|
|
111
|
+
logger.error("Move tests failed");
|
|
40
112
|
process.exit(1);
|
|
41
113
|
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Run only TypeScript integration tests
|
|
118
|
+
*/
|
|
119
|
+
async function runTypeScriptTestsOnly(watch: boolean = false): Promise<void> {
|
|
120
|
+
logger.newline();
|
|
121
|
+
console.log(colors.bold("TypeScript Integration Tests"));
|
|
122
|
+
console.log(colors.muted("โ".repeat(50)));
|
|
123
|
+
|
|
124
|
+
if (!watch) {
|
|
125
|
+
logger.newline();
|
|
126
|
+
logger.info("This will start a local Movement node for testing");
|
|
127
|
+
logger.newline();
|
|
128
|
+
}
|
|
42
129
|
|
|
43
|
-
// Then run TypeScript tests (never in watch mode for "all tests")
|
|
44
130
|
try {
|
|
45
|
-
await runTypeScriptTests(
|
|
46
|
-
|
|
47
|
-
|
|
131
|
+
await runTypeScriptTests(watch);
|
|
132
|
+
if (!watch) {
|
|
133
|
+
logger.newline();
|
|
134
|
+
logger.success("TypeScript tests passed");
|
|
135
|
+
}
|
|
48
136
|
} catch (error) {
|
|
49
|
-
|
|
137
|
+
logger.newline();
|
|
50
138
|
const message = error instanceof Error ? error.message : String(error);
|
|
51
|
-
|
|
139
|
+
logger.error(message);
|
|
52
140
|
process.exit(1);
|
|
53
141
|
}
|
|
54
142
|
}
|
|
55
143
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
144
|
+
/**
|
|
145
|
+
* Run all tests (Move + TypeScript)
|
|
146
|
+
*/
|
|
147
|
+
async function runAllTests(filter?: string): Promise<void> {
|
|
148
|
+
logger.newline();
|
|
149
|
+
console.log(colors.bold("Running All Tests"));
|
|
150
|
+
console.log(colors.muted("โ".repeat(50)));
|
|
59
151
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
152
|
+
// Section 1: Move Tests
|
|
153
|
+
logger.newline();
|
|
154
|
+
console.log(`${colors.brandBright("1.")} ${colors.bold("Move Unit Tests")}`);
|
|
155
|
+
console.log(colors.muted("โ".repeat(50)));
|
|
156
|
+
logger.newline();
|
|
157
|
+
|
|
158
|
+
try {
|
|
159
|
+
await runMoveTests({
|
|
160
|
+
filter,
|
|
161
|
+
skipIfMissing: true, // Gracefully skip if no Move directory
|
|
162
|
+
});
|
|
163
|
+
} catch (error) {
|
|
164
|
+
logger.newline();
|
|
165
|
+
logger.error("Move tests failed");
|
|
166
|
+
console.log(colors.muted("โ".repeat(50)));
|
|
167
|
+
process.exit(1);
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
// Section 2: TypeScript Tests
|
|
171
|
+
logger.newline();
|
|
172
|
+
console.log(colors.muted("โ".repeat(50)));
|
|
173
|
+
logger.newline();
|
|
174
|
+
console.log(`${colors.brandBright("2.")} ${colors.bold("TypeScript Integration Tests")}`);
|
|
175
|
+
console.log(colors.muted("โ".repeat(50)));
|
|
176
|
+
logger.newline();
|
|
177
|
+
|
|
178
|
+
try {
|
|
179
|
+
await runTypeScriptTests(false);
|
|
180
|
+
logger.newline();
|
|
181
|
+
console.log(colors.muted("โ".repeat(50)));
|
|
182
|
+
logger.newline();
|
|
183
|
+
logger.success("All tests passed!");
|
|
184
|
+
logger.newline();
|
|
185
|
+
} catch (error) {
|
|
186
|
+
logger.newline();
|
|
187
|
+
console.log(colors.muted("โ".repeat(50)));
|
|
188
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
189
|
+
logger.error(message);
|
|
190
|
+
process.exit(1);
|
|
191
|
+
}
|
|
64
192
|
}
|
|
65
193
|
|
|
194
|
+
/**
|
|
195
|
+
* Run TypeScript tests using Mocha
|
|
196
|
+
*/
|
|
66
197
|
function runTypeScriptTests(watch: boolean = false): Promise<void> {
|
|
67
198
|
return new Promise((resolve, reject) => {
|
|
68
|
-
console.log("2. TypeScript Integration Tests");
|
|
69
|
-
console.log("-" + "-".repeat(60) + "\n");
|
|
70
|
-
|
|
71
199
|
const testDir = join(process.cwd(), "tests");
|
|
72
200
|
|
|
73
201
|
if (!existsSync(testDir)) {
|
|
74
|
-
console.log(
|
|
75
|
-
console.log("
|
|
202
|
+
console.log(`${colors.muted(symbols.info)} No TypeScript tests found ${colors.muted("(tests/ directory not found)")}`);
|
|
203
|
+
console.log(` ${colors.muted("Skipping TypeScript tests...")}`);
|
|
204
|
+
logger.newline();
|
|
76
205
|
resolve();
|
|
77
206
|
return;
|
|
78
207
|
}
|
|
@@ -80,8 +209,8 @@ function runTypeScriptTests(watch: boolean = false): Promise<void> {
|
|
|
80
209
|
const mochaPath = join(process.cwd(), "node_modules", ".bin", "mocha");
|
|
81
210
|
|
|
82
211
|
if (!existsSync(mochaPath)) {
|
|
83
|
-
|
|
84
|
-
console.
|
|
212
|
+
logger.error("Mocha not found in project dependencies");
|
|
213
|
+
console.log(` ${colors.muted("Install it with:")} ${colors.info("npm install --save-dev mocha")}`);
|
|
85
214
|
reject(new Error("Mocha not found"));
|
|
86
215
|
return;
|
|
87
216
|
}
|
|
@@ -97,7 +226,8 @@ function runTypeScriptTests(watch: boolean = false): Promise<void> {
|
|
|
97
226
|
|
|
98
227
|
// In watch mode, Mocha never exits, so resolve immediately
|
|
99
228
|
if (watch) {
|
|
100
|
-
console.log(
|
|
229
|
+
console.log(`${colors.info(symbols.info)} Watch mode active. Press Ctrl+C to exit.`);
|
|
230
|
+
logger.newline();
|
|
101
231
|
resolve();
|
|
102
232
|
return;
|
|
103
233
|
}
|
|
@@ -105,7 +235,6 @@ function runTypeScriptTests(watch: boolean = false): Promise<void> {
|
|
|
105
235
|
// Non-watch mode: wait for exit
|
|
106
236
|
child.on("exit", (code) => {
|
|
107
237
|
if (code === 0) {
|
|
108
|
-
console.log("\nโ TypeScript tests passed");
|
|
109
238
|
resolve();
|
|
110
239
|
} else {
|
|
111
240
|
const exitCode = typeof code === "number" ? code : 1;
|
|
@@ -114,7 +243,7 @@ function runTypeScriptTests(watch: boolean = false): Promise<void> {
|
|
|
114
243
|
});
|
|
115
244
|
|
|
116
245
|
child.on("error", (error) => {
|
|
117
|
-
|
|
246
|
+
logger.error(`Failed to run TypeScript tests: ${error.message}`);
|
|
118
247
|
reject(error);
|
|
119
248
|
});
|
|
120
249
|
});
|
package/src/helpers/setup.ts
CHANGED
|
@@ -21,8 +21,10 @@ export async function setupTestEnvironment(networkName?: string): Promise<TestEn
|
|
|
21
21
|
const network = networkName || process.env.MH_CLI_NETWORK;
|
|
22
22
|
const config = await resolveNetworkConfig(userConfig, network);
|
|
23
23
|
|
|
24
|
+
// Movement Network uses custom chain IDs, so we need to use Network.CUSTOM
|
|
25
|
+
// and let the SDK fetch the actual chainId from the node
|
|
24
26
|
const aptosConfig = new AptosConfig({
|
|
25
|
-
network:
|
|
27
|
+
network: Network.CUSTOM,
|
|
26
28
|
fullnode: config.rpc,
|
|
27
29
|
});
|
|
28
30
|
|
package/src/runtime.ts
CHANGED
|
@@ -47,8 +47,10 @@ export async function initRuntime(
|
|
|
47
47
|
const config = await resolveNetworkConfig(mergedUserConfig, options.network);
|
|
48
48
|
|
|
49
49
|
// Setup Aptos client
|
|
50
|
+
// Movement Network uses custom chain IDs, so we need to use Network.CUSTOM
|
|
51
|
+
// and let the SDK fetch the actual chainId from the node
|
|
50
52
|
const aptosConfig = new AptosConfig({
|
|
51
|
-
network:
|
|
53
|
+
network: Network.CUSTOM,
|
|
52
54
|
fullnode: config.rpc,
|
|
53
55
|
});
|
|
54
56
|
const aptos = new Aptos(aptosConfig);
|
|
@@ -148,9 +150,25 @@ export async function initRuntime(
|
|
|
148
150
|
console.log(`๐ฆ Publishing module "${moduleName}" from ${dir}...`);
|
|
149
151
|
|
|
150
152
|
try {
|
|
151
|
-
//
|
|
153
|
+
// Get the deployer address to use for named addresses
|
|
154
|
+
const deployerAddress = account.accountAddress.toString();
|
|
155
|
+
|
|
156
|
+
// Detect named addresses from Move files
|
|
157
|
+
const { extractNamedAddresses } = await import("./commands/compile.js");
|
|
158
|
+
const detectedAddresses = extractNamedAddresses(dir);
|
|
159
|
+
|
|
160
|
+
// Build named addresses argument - use deployer address for all detected addresses
|
|
161
|
+
let namedAddressesArg = "";
|
|
162
|
+
if (detectedAddresses.size > 0) {
|
|
163
|
+
const addressPairs = Array.from(detectedAddresses)
|
|
164
|
+
.map(name => `${name}=${deployerAddress}`)
|
|
165
|
+
.join(",");
|
|
166
|
+
namedAddressesArg = `--named-addresses ${addressPairs}`;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
// Build first with named addresses
|
|
152
170
|
console.log("๐จ Building package...");
|
|
153
|
-
const buildCmd = `movement move build --package-dir ${safeDir}
|
|
171
|
+
const buildCmd = `movement move build --package-dir ${safeDir} ${namedAddressesArg}`.trim();
|
|
154
172
|
const { stdout: buildOut } = await execAsync(buildCmd, {
|
|
155
173
|
timeout: 120000, // 2 minutes for git dependency downloads
|
|
156
174
|
maxBuffer: 10 * 1024 * 1024, // 10MB buffer for large outputs
|
|
@@ -167,8 +185,7 @@ export async function initRuntime(
|
|
|
167
185
|
cleanPrivateKey = cleanPrivateKey.replace('ed25519-priv-', '');
|
|
168
186
|
}
|
|
169
187
|
|
|
170
|
-
//
|
|
171
|
-
const deployerAddress = account.accountAddress.toString();
|
|
188
|
+
// deployerAddress is already declared above
|
|
172
189
|
|
|
173
190
|
// Read Move.toml to update named addresses with deployer address
|
|
174
191
|
const moveTomlPath = join(dir, 'Move.toml');
|
|
@@ -238,7 +255,8 @@ export async function initRuntime(
|
|
|
238
255
|
writeFileSync(movementConfigPath, configYaml, { mode: 0o600 });
|
|
239
256
|
|
|
240
257
|
// Execute publish command without exposing private key in CLI
|
|
241
|
-
|
|
258
|
+
// Include named addresses for publish as well
|
|
259
|
+
const publishCmd = `movement move publish --package-dir ${safeDir} --url ${config.rpc} --profile ${safeProfile} --assume-yes ${namedAddressesArg}`.trim();
|
|
242
260
|
const result = await execAsync(publishCmd, {
|
|
243
261
|
timeout: 120000, // 2 minutes for blockchain transactions
|
|
244
262
|
maxBuffer: 10 * 1024 * 1024, // 10MB buffer for large outputs
|
package/src/templates/README.md
CHANGED
|
@@ -52,38 +52,36 @@ npm run compile
|
|
|
52
52
|
npm test
|
|
53
53
|
```
|
|
54
54
|
|
|
55
|
+
When you run `npm test`, you'll see an **interactive menu**:
|
|
56
|
+
|
|
57
|
+
```
|
|
58
|
+
? What tests do you want to run?
|
|
59
|
+
โฏ Move unit tests (fast, no node required)
|
|
60
|
+
TypeScript integration tests (starts local node)
|
|
61
|
+
All tests (Move + TypeScript)
|
|
62
|
+
```
|
|
63
|
+
|
|
55
64
|
**Two types of tests available:**
|
|
56
65
|
|
|
57
66
|
1. **Move Unit Tests** (`move/sources/Counter.move` in `#[test]` blocks)
|
|
58
67
|
- Written in Move with `#[test]` annotations
|
|
59
68
|
- Test internal logic and business rules
|
|
60
69
|
- Ultra-fast execution (milliseconds)
|
|
61
|
-
- Run with: `npm run test:move`
|
|
70
|
+
- Run with: `npm run test:move` or `movehat test --move`
|
|
62
71
|
|
|
63
72
|
2. **TypeScript Integration Tests** (`tests/Counter.test.ts`)
|
|
64
73
|
- Written in TypeScript on a **local Movement blockchain**
|
|
65
74
|
- Automatically starts a local node, funds accounts, and deploys contracts
|
|
66
75
|
- Runs real transactions (not simulation!)
|
|
67
76
|
- Just like Hardhat - zero manual setup
|
|
68
|
-
- Run with: `npm run test:ts`
|
|
69
|
-
|
|
70
|
-
**How it works:**
|
|
71
|
-
Tests run on a real local blockchain (similar to Hardhat):
|
|
72
|
-
- ๐ Automatically starts a Movement node locally
|
|
73
|
-
- ๐ฐ Funds test accounts from local faucet
|
|
74
|
-
- ๐ฆ Auto-deploys your contracts
|
|
75
|
-
- โ
Runs real transactions
|
|
76
|
-
- ๐งน Cleans up when done
|
|
77
|
-
|
|
78
|
-
**Two modes available:**
|
|
79
|
-
- `local-node` (default): Full blockchain with real transactions
|
|
80
|
-
- `fork`: Read-only snapshot of testnet (faster but limited)
|
|
77
|
+
- Run with: `npm run test:ts` or `movehat test --ts`
|
|
81
78
|
|
|
82
79
|
**Commands:**
|
|
83
|
-
- `npm test` -
|
|
84
|
-
- `npm run test:move` - Only Move unit tests (fast)
|
|
85
|
-
- `npm run test:ts` - Only TypeScript integration tests
|
|
86
|
-
- `
|
|
80
|
+
- `npm test` - Interactive menu to choose test type
|
|
81
|
+
- `npm run test:move` or `movehat test --move` - Only Move unit tests (fast)
|
|
82
|
+
- `npm run test:ts` or `movehat test --ts` - Only TypeScript integration tests
|
|
83
|
+
- `movehat test --all` - Both Move + TypeScript tests
|
|
84
|
+
- `npm run test:watch` or `movehat test --watch` - TypeScript tests in watch mode
|
|
87
85
|
|
|
88
86
|
### 5. Deploy (optional)
|
|
89
87
|
|
|
@@ -29,10 +29,14 @@ describe("Counter Contract", () => {
|
|
|
29
29
|
});
|
|
30
30
|
|
|
31
31
|
describe("Counter functionality", () => {
|
|
32
|
-
it("should initialize
|
|
32
|
+
it("should initialize counter for deployer", async () => {
|
|
33
33
|
const counter = fixture.contracts.counter; // Type-safe, no `!` needed
|
|
34
34
|
const deployer = fixture.accounts.deployer;
|
|
35
35
|
|
|
36
|
+
// Initialize counter for deployer (required before get/increment)
|
|
37
|
+
const tx = await counter.call(deployer, "init", []);
|
|
38
|
+
console.log(` Init transaction: ${tx.hash}`);
|
|
39
|
+
|
|
36
40
|
// Read counter value (returns string from view function)
|
|
37
41
|
const value = await counter.view<string>("get", [
|
|
38
42
|
deployer.accountAddress.toString()
|
|
@@ -63,13 +67,17 @@ describe("Counter Contract", () => {
|
|
|
63
67
|
expect(parseInt(value)).to.equal(1);
|
|
64
68
|
});
|
|
65
69
|
|
|
66
|
-
it("alice can
|
|
70
|
+
it("alice can initialize and increment her counter", async () => {
|
|
67
71
|
const counter = fixture.contracts.counter;
|
|
68
72
|
const alice = fixture.accounts.alice;
|
|
69
73
|
|
|
74
|
+
// Alice must initialize her counter first
|
|
75
|
+
const initTx = await counter.call(alice, "init", []);
|
|
76
|
+
console.log(` Alice init transaction: ${initTx.hash}`);
|
|
77
|
+
|
|
70
78
|
// Alice increments her own counter
|
|
71
79
|
const tx = await counter.call(alice, "increment", []);
|
|
72
|
-
console.log(` Alice's transaction: ${tx.hash}`);
|
|
80
|
+
console.log(` Alice's increment transaction: ${tx.hash}`);
|
|
73
81
|
|
|
74
82
|
// Read counter value for Alice (each user has their own counter)
|
|
75
83
|
const aliceValue = await counter.view<string>("get", [
|
|
@@ -88,13 +96,17 @@ describe("Counter Contract", () => {
|
|
|
88
96
|
expect(parseInt(deployerValue)).to.equal(1);
|
|
89
97
|
});
|
|
90
98
|
|
|
91
|
-
it("bob can
|
|
99
|
+
it("bob can initialize and increment his counter", async () => {
|
|
92
100
|
const counter = fixture.contracts.counter;
|
|
93
101
|
const bob = fixture.accounts.bob;
|
|
94
102
|
|
|
103
|
+
// Bob must initialize his counter first
|
|
104
|
+
const initTx = await counter.call(bob, "init", []);
|
|
105
|
+
console.log(` Bob init transaction: ${initTx.hash}`);
|
|
106
|
+
|
|
95
107
|
// Bob increments his own counter
|
|
96
108
|
const tx = await counter.call(bob, "increment", []);
|
|
97
|
-
console.log(` Bob's transaction: ${tx.hash}`);
|
|
109
|
+
console.log(` Bob's increment transaction: ${tx.hash}`);
|
|
98
110
|
|
|
99
111
|
// Read counter value for Bob (each user has their own counter)
|
|
100
112
|
const bobValue = await counter.view<string>("get", [
|