Skip to content

Commit cad3461

Browse files
authored
Merge pull request #6244 from BowTiedWoo/wasm-issue-673/assertion-failed
[clarity-wasm-tests] fix clarity_cli::test::test_samples
2 parents c4438fd + 9b9b371 commit cad3461

File tree

1 file changed

+26
-3
lines changed

1 file changed

+26
-3
lines changed

stackslib/src/clarity_cli.rs

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -992,6 +992,20 @@ pub fn add_serialized_output(result: &mut serde_json::Value, value: Value) {
992992

993993
/// Returns (process-exit-code, Option<json-output>)
994994
pub fn invoke_command(invoked_by: &str, args: &[String]) -> (i32, Option<serde_json::Value>) {
995+
let mut store = MemoryBackingStore::new();
996+
let mut analysis_db = store.as_analysis_db();
997+
analysis_db.begin();
998+
999+
invoke_command_with_db(invoked_by, args, &mut analysis_db)
1000+
}
1001+
1002+
/// Returns (process-exit-code, Option<json-output>)
1003+
/// Optionally accepts a shared analysis database for contract dependency resolution
1004+
pub fn invoke_command_with_db(
1005+
invoked_by: &str,
1006+
args: &[String],
1007+
analysis_db: &mut AnalysisDatabase,
1008+
) -> (i32, Option<serde_json::Value>) {
9951009
if args.is_empty() {
9961010
print_usage(invoked_by);
9971011
return (1, None);
@@ -1662,12 +1676,14 @@ pub fn invoke_command(invoked_by: &str, args: &[String]) -> (i32, Option<serde_j
16621676
&mut marf,
16631677
coverage.as_mut(),
16641678
|vm_env| {
1665-
vm_env.initialize_versioned_contract(
1679+
// Use the shared analysis database for contract initialization
1680+
vm_env.initialize_versioned_contract_with_db(
16661681
contract_identifier,
16671682
ClarityVersion::Clarity2,
16681683
&contract_content,
16691684
None,
16701685
ASTRules::PrecheckSize,
1686+
analysis_db,
16711687
)
16721688
},
16731689
);
@@ -2028,15 +2044,21 @@ mod test {
20282044
assert_eq!(exit, 0);
20292045
assert!(!result["message"].as_str().unwrap().is_empty());
20302046

2047+
// Create a shared analysis database for contract dependency resolution
2048+
let mut store = MemoryBackingStore::new();
2049+
let mut analysis_db = store.as_analysis_db();
2050+
analysis_db.begin();
2051+
20312052
eprintln!("launch tokens");
2032-
let invoked = invoke_command(
2053+
let invoked = invoke_command_with_db(
20332054
"test",
20342055
&[
20352056
"launch".to_string(),
20362057
"S1G2081040G2081040G2081040G208105NK8PE5.tokens".to_string(),
20372058
cargo_workspace_as_string("sample/contracts/tokens.clar"),
20382059
db_name.clone(),
20392060
],
2061+
&mut analysis_db,
20402062
);
20412063

20422064
let exit = invoked.0;
@@ -2117,7 +2139,7 @@ mod test {
21172139
assert!(result["assets"] == json!(null));
21182140

21192141
eprintln!("launch names with costs and assets");
2120-
let invoked = invoke_command(
2142+
let invoked = invoke_command_with_db(
21212143
"test",
21222144
&[
21232145
"launch".to_string(),
@@ -2127,6 +2149,7 @@ mod test {
21272149
"--assets".to_string(),
21282150
db_name.clone(),
21292151
],
2152+
&mut analysis_db,
21302153
);
21312154

21322155
let exit = invoked.0;

0 commit comments

Comments
 (0)