diff --git a/clarity/src/vm/tests/mod.rs b/clarity/src/vm/tests/mod.rs index d8367c2c2..04a74d0e5 100644 --- a/clarity/src/vm/tests/mod.rs +++ b/clarity/src/vm/tests/mod.rs @@ -45,6 +45,7 @@ use stacks_common::consts::{CHAIN_ID_MAINNET, CHAIN_ID_TESTNET}; use super::events::StacksTransactionEvent; pub use super::test_util::*; +use super::ClarityVersion; mod assets; mod contracts; @@ -70,6 +71,25 @@ where f(&mut owned_env) } +pub fn with_versioned_memory_environment( + f: F, + epoch: StacksEpochId, + version: ClarityVersion, + top_level: bool, +) where + F: FnOnce(&mut OwnedEnvironment, ClarityVersion) -> (), +{ + let mut marf_kv = MemoryBackingStore::new(); + + let mut owned_env = OwnedEnvironment::new(marf_kv.as_clarity_db(), epoch); + // start an initial transaction. + if !top_level { + owned_env.begin(); + } + + f(&mut owned_env, version) +} + /// Determine whether or not to use the testnet or mainnet chain ID, given whether or not the /// caller expects to use mainnet or testnet. /// diff --git a/clarity/src/vm/tests/simple_apply_eval.rs b/clarity/src/vm/tests/simple_apply_eval.rs index 0d82439ab..15279243c 100644 --- a/clarity/src/vm/tests/simple_apply_eval.rs +++ b/clarity/src/vm/tests/simple_apply_eval.rs @@ -95,14 +95,12 @@ fn test_simple_let(#[case] version: ClarityVersion, #[case] epoch: StacksEpochId (+ z y)) x))"; let contract_id = QualifiedContractIdentifier::transient(); - let mut placeholder_context = ContractContext::new( - QualifiedContractIdentifier::transient(), - ClarityVersion::Clarity2, - ); + let mut placeholder_context = + ContractContext::new(QualifiedContractIdentifier::transient(), version); if let Ok(parsed_program) = parse(&contract_id, &program, version, epoch) { let context = LocalContext::new(); let mut marf = MemoryBackingStore::new(); - let mut env = OwnedEnvironment::new(marf.as_clarity_db(), StacksEpochId::latest()); + let mut env = OwnedEnvironment::new(marf.as_clarity_db(), epoch); assert_eq!( Ok(Value::Int(7)), diff --git a/clarity/src/vm/tests/traits.rs b/clarity/src/vm/tests/traits.rs index 226ec63fc..6e1e7fa2d 100644 --- a/clarity/src/vm/tests/traits.rs +++ b/clarity/src/vm/tests/traits.rs @@ -21,7 +21,9 @@ use crate::vm::ast::ASTRules; use crate::vm::contexts::{Environment, GlobalContext, OwnedEnvironment}; use crate::vm::errors::{CheckErrors, Error, RuntimeErrorType}; use crate::vm::execute as vm_execute; -use crate::vm::tests::{execute, symbols_from_values, with_memory_environment}; +use crate::vm::tests::{ + execute, symbols_from_values, with_memory_environment, with_versioned_memory_environment, +}; use crate::vm::types::{ PrincipalData, QualifiedContractIdentifier, ResponseData, TypeSignature, Value, }; @@ -30,8 +32,15 @@ use std::convert::TryInto; use crate::vm::version::ClarityVersion; use crate::vm::ContractContext; -#[test] -fn test_all() { +#[template] +#[rstest] +#[case(ClarityVersion::Clarity1, StacksEpochId::Epoch2_05)] +#[case(ClarityVersion::Clarity1, StacksEpochId::Epoch21)] +#[case(ClarityVersion::Clarity2, StacksEpochId::Epoch21)] +fn test_epoch_clarity_versions(#[case] version: ClarityVersion, #[case] epoch: StacksEpochId) {} + +#[apply(test_epoch_clarity_versions)] +fn test_trait_basics(#[case] version: ClarityVersion, #[case] epoch: StacksEpochId) { let to_test = [ test_dynamic_dispatch_pass_trait_nested_in_let, test_dynamic_dispatch_pass_trait, @@ -55,6 +64,15 @@ fn test_all() { test_return_trait_with_contract_of, test_return_trait_with_contract_of_wrapped_in_begin, test_return_trait_with_contract_of_wrapped_in_let, + ]; + for test in to_test.iter() { + with_versioned_memory_environment(test, epoch, version, false); + } +} + +#[test] +fn test_clarity2() { + let to_test = [ test_pass_principal_literal_to_trait, test_pass_trait_to_subtrait, test_embedded_trait, @@ -72,7 +90,10 @@ fn test_all() { } } -fn test_dynamic_dispatch_by_defining_trait(owned_env: &mut OwnedEnvironment) { +fn test_dynamic_dispatch_by_defining_trait( + owned_env: &mut OwnedEnvironment, + version: ClarityVersion, +) { let dispatching_contract = "(define-trait trait-1 ( (get-1 (uint) (response uint uint)))) (define-public (wrapped-get-1 (contract )) @@ -80,10 +101,8 @@ fn test_dynamic_dispatch_by_defining_trait(owned_env: &mut OwnedEnvironment) { let target_contract = "(define-public (get-1 (x uint)) (ok u1))"; let p1 = execute("'SZ2J6ZY48GV1EZ5V2V5RB9MP66SW86PYKKQ9H6DPR"); - let mut placeholder_context = ContractContext::new( - QualifiedContractIdentifier::transient(), - ClarityVersion::Clarity1, - ); + let mut placeholder_context = + ContractContext::new(QualifiedContractIdentifier::transient(), version); { let mut env = owned_env.get_exec_environment(None, None, &mut placeholder_context); @@ -123,7 +142,10 @@ fn test_dynamic_dispatch_by_defining_trait(owned_env: &mut OwnedEnvironment) { } } -fn test_dynamic_dispatch_pass_trait_nested_in_let(owned_env: &mut OwnedEnvironment) { +fn test_dynamic_dispatch_pass_trait_nested_in_let( + owned_env: &mut OwnedEnvironment, + version: ClarityVersion, +) { let dispatching_contract = "(define-trait trait-1 ( (get-1 (uint) (response uint uint)))) (define-public (wrapped-get-1 (contract )) @@ -134,10 +156,8 @@ fn test_dynamic_dispatch_pass_trait_nested_in_let(owned_env: &mut OwnedEnvironme let target_contract = "(define-public (get-1 (x uint)) (ok u1))"; let p1 = execute("'SZ2J6ZY48GV1EZ5V2V5RB9MP66SW86PYKKQ9H6DPR"); - let mut placeholder_context = ContractContext::new( - QualifiedContractIdentifier::transient(), - ClarityVersion::Clarity1, - ); + let mut placeholder_context = + ContractContext::new(QualifiedContractIdentifier::transient(), version); { let mut env = owned_env.get_exec_environment(None, None, &mut placeholder_context); @@ -177,7 +197,7 @@ fn test_dynamic_dispatch_pass_trait_nested_in_let(owned_env: &mut OwnedEnvironme } } -fn test_dynamic_dispatch_pass_trait(owned_env: &mut OwnedEnvironment) { +fn test_dynamic_dispatch_pass_trait(owned_env: &mut OwnedEnvironment, version: ClarityVersion) { let dispatching_contract = "(define-trait trait-1 ( (get-1 (uint) (response uint uint)))) (define-public (wrapped-get-1 (contract )) @@ -187,10 +207,8 @@ fn test_dynamic_dispatch_pass_trait(owned_env: &mut OwnedEnvironment) { let target_contract = "(define-public (get-1 (x uint)) (ok u1))"; let p1 = execute("'SZ2J6ZY48GV1EZ5V2V5RB9MP66SW86PYKKQ9H6DPR"); - let mut placeholder_context = ContractContext::new( - QualifiedContractIdentifier::transient(), - ClarityVersion::Clarity1, - ); + let mut placeholder_context = + ContractContext::new(QualifiedContractIdentifier::transient(), version); { let mut env = owned_env.get_exec_environment(None, None, &mut placeholder_context); @@ -230,7 +248,10 @@ fn test_dynamic_dispatch_pass_trait(owned_env: &mut OwnedEnvironment) { } } -fn test_dynamic_dispatch_intra_contract_call(owned_env: &mut OwnedEnvironment) { +fn test_dynamic_dispatch_intra_contract_call( + owned_env: &mut OwnedEnvironment, + version: ClarityVersion, +) { let contract_defining_trait = "(define-trait trait-1 ( (get-1 (uint) (response uint uint))))"; let dispatching_contract = "(use-trait trait-1 .contract-defining-trait.trait-1) @@ -239,10 +260,8 @@ fn test_dynamic_dispatch_intra_contract_call(owned_env: &mut OwnedEnvironment) { (define-public (get-1 (x uint)) (ok u1))"; let p1 = execute("'SZ2J6ZY48GV1EZ5V2V5RB9MP66SW86PYKKQ9H6DPR"); - let mut placeholder_context = ContractContext::new( - QualifiedContractIdentifier::transient(), - ClarityVersion::Clarity1, - ); + let mut placeholder_context = + ContractContext::new(QualifiedContractIdentifier::transient(), version); { let mut env = owned_env.get_exec_environment(None, None, &mut placeholder_context); @@ -284,7 +303,10 @@ fn test_dynamic_dispatch_intra_contract_call(owned_env: &mut OwnedEnvironment) { } } -fn test_dynamic_dispatch_by_implementing_imported_trait(owned_env: &mut OwnedEnvironment) { +fn test_dynamic_dispatch_by_implementing_imported_trait( + owned_env: &mut OwnedEnvironment, + version: ClarityVersion, +) { let contract_defining_trait = "(define-trait trait-1 ( (get-1 (uint) (response uint uint))))"; let dispatching_contract = "(use-trait trait-1 .contract-defining-trait.trait-1) @@ -294,10 +316,8 @@ fn test_dynamic_dispatch_by_implementing_imported_trait(owned_env: &mut OwnedEnv (define-public (get-1 (x uint)) (ok u1))"; let p1 = execute("'SZ2J6ZY48GV1EZ5V2V5RB9MP66SW86PYKKQ9H6DPR"); - let mut placeholder_context = ContractContext::new( - QualifiedContractIdentifier::transient(), - ClarityVersion::Clarity1, - ); + let mut placeholder_context = + ContractContext::new(QualifiedContractIdentifier::transient(), version); { let mut env = owned_env.get_exec_environment(None, None, &mut placeholder_context); @@ -345,6 +365,7 @@ fn test_dynamic_dispatch_by_implementing_imported_trait(owned_env: &mut OwnedEnv fn test_dynamic_dispatch_by_implementing_imported_trait_mul_funcs( owned_env: &mut OwnedEnvironment, + version: ClarityVersion, ) { let contract_defining_trait = "(define-trait trait-1 ( (get-1 (uint) (response uint uint)) @@ -357,10 +378,8 @@ fn test_dynamic_dispatch_by_implementing_imported_trait_mul_funcs( (define-public (get-2 (x uint)) (ok u2))"; let p1 = execute("'SZ2J6ZY48GV1EZ5V2V5RB9MP66SW86PYKKQ9H6DPR"); - let mut placeholder_context = ContractContext::new( - QualifiedContractIdentifier::transient(), - ClarityVersion::Clarity1, - ); + let mut placeholder_context = + ContractContext::new(QualifiedContractIdentifier::transient(), version); { let mut env = owned_env.get_exec_environment(None, None, &mut placeholder_context); @@ -406,7 +425,10 @@ fn test_dynamic_dispatch_by_implementing_imported_trait_mul_funcs( } } -fn test_dynamic_dispatch_by_importing_trait(owned_env: &mut OwnedEnvironment) { +fn test_dynamic_dispatch_by_importing_trait( + owned_env: &mut OwnedEnvironment, + version: ClarityVersion, +) { let contract_defining_trait = "(define-trait trait-1 ( (get-1 (uint) (response uint uint))))"; let dispatching_contract = "(use-trait trait-1 .contract-defining-trait.trait-1) @@ -415,10 +437,8 @@ fn test_dynamic_dispatch_by_importing_trait(owned_env: &mut OwnedEnvironment) { let target_contract = "(define-public (get-1 (x uint)) (ok u1))"; let p1 = execute("'SZ2J6ZY48GV1EZ5V2V5RB9MP66SW86PYKKQ9H6DPR"); - let mut placeholder_context = ContractContext::new( - QualifiedContractIdentifier::transient(), - ClarityVersion::Clarity1, - ); + let mut placeholder_context = + ContractContext::new(QualifiedContractIdentifier::transient(), version); { let mut env = owned_env.get_exec_environment(None, None, &mut placeholder_context); @@ -464,7 +484,10 @@ fn test_dynamic_dispatch_by_importing_trait(owned_env: &mut OwnedEnvironment) { } } -fn test_dynamic_dispatch_including_nested_trait(owned_env: &mut OwnedEnvironment) { +fn test_dynamic_dispatch_including_nested_trait( + owned_env: &mut OwnedEnvironment, + version: ClarityVersion, +) { let contract_defining_nested_trait = "(define-trait trait-a ( (get-a (uint) (response uint uint))))"; let contract_defining_trait = "(use-trait trait-a .contract-defining-nested-trait.trait-a) @@ -480,10 +503,8 @@ fn test_dynamic_dispatch_including_nested_trait(owned_env: &mut OwnedEnvironment let target_nested_contract = "(define-public (get-a (x uint)) (ok u99))"; let p1 = execute("'SZ2J6ZY48GV1EZ5V2V5RB9MP66SW86PYKKQ9H6DPR"); - let mut placeholder_context = ContractContext::new( - QualifiedContractIdentifier::transient(), - ClarityVersion::Clarity1, - ); + let mut placeholder_context = + ContractContext::new(QualifiedContractIdentifier::transient(), version); { let mut env = owned_env.get_exec_environment(None, None, &mut placeholder_context); @@ -544,7 +565,10 @@ fn test_dynamic_dispatch_including_nested_trait(owned_env: &mut OwnedEnvironment } } -fn test_dynamic_dispatch_mismatched_args(owned_env: &mut OwnedEnvironment) { +fn test_dynamic_dispatch_mismatched_args( + owned_env: &mut OwnedEnvironment, + version: ClarityVersion, +) { let dispatching_contract = "(define-trait trait-1 ( (get-1 (uint) (response uint uint)))) (define-public (wrapped-get-1 (contract )) @@ -552,10 +576,8 @@ fn test_dynamic_dispatch_mismatched_args(owned_env: &mut OwnedEnvironment) { let target_contract = "(define-public (get-1 (x int)) (ok u1))"; let p1 = execute("'SZ2J6ZY48GV1EZ5V2V5RB9MP66SW86PYKKQ9H6DPR"); - let mut placeholder_context = ContractContext::new( - QualifiedContractIdentifier::transient(), - ClarityVersion::Clarity1, - ); + let mut placeholder_context = + ContractContext::new(QualifiedContractIdentifier::transient(), version); { let mut env = owned_env.get_exec_environment(None, None, &mut placeholder_context); @@ -597,7 +619,10 @@ fn test_dynamic_dispatch_mismatched_args(owned_env: &mut OwnedEnvironment) { } } -fn test_dynamic_dispatch_mismatched_returned(owned_env: &mut OwnedEnvironment) { +fn test_dynamic_dispatch_mismatched_returned( + owned_env: &mut OwnedEnvironment, + version: ClarityVersion, +) { let dispatching_contract = "(define-trait trait-1 ( (get-1 (uint) (response uint uint)))) (define-public (wrapped-get-1 (contract )) @@ -605,10 +630,8 @@ fn test_dynamic_dispatch_mismatched_returned(owned_env: &mut OwnedEnvironment) { let target_contract = "(define-public (get-1 (x uint)) (ok 1))"; let p1 = execute("'SZ2J6ZY48GV1EZ5V2V5RB9MP66SW86PYKKQ9H6DPR"); - let mut placeholder_context = ContractContext::new( - QualifiedContractIdentifier::transient(), - ClarityVersion::Clarity1, - ); + let mut placeholder_context = + ContractContext::new(QualifiedContractIdentifier::transient(), version); { let mut env = owned_env.get_exec_environment(None, None, &mut placeholder_context); @@ -650,7 +673,7 @@ fn test_dynamic_dispatch_mismatched_returned(owned_env: &mut OwnedEnvironment) { } } -fn test_reentrant_dynamic_dispatch(owned_env: &mut OwnedEnvironment) { +fn test_reentrant_dynamic_dispatch(owned_env: &mut OwnedEnvironment, version: ClarityVersion) { let dispatching_contract = "(define-trait trait-1 ( (get-1 (uint) (response uint uint)))) (define-public (wrapped-get-1 (contract )) @@ -661,10 +684,8 @@ fn test_reentrant_dynamic_dispatch(owned_env: &mut OwnedEnvironment) { "(define-public (get-1 (x uint)) (contract-call? .dispatching-contract wrapped-get-1 .target-contract))"; let p1 = execute("'SZ2J6ZY48GV1EZ5V2V5RB9MP66SW86PYKKQ9H6DPR"); - let mut placeholder_context = ContractContext::new( - QualifiedContractIdentifier::transient(), - ClarityVersion::Clarity1, - ); + let mut placeholder_context = + ContractContext::new(QualifiedContractIdentifier::transient(), version); { let mut env = owned_env.get_exec_environment(None, None, &mut placeholder_context); @@ -706,7 +727,7 @@ fn test_reentrant_dynamic_dispatch(owned_env: &mut OwnedEnvironment) { } } -fn test_readwrite_dynamic_dispatch(owned_env: &mut OwnedEnvironment) { +fn test_readwrite_dynamic_dispatch(owned_env: &mut OwnedEnvironment, version: ClarityVersion) { let dispatching_contract = "(define-trait trait-1 ( (get-1 (uint) (response uint uint)))) (define-read-only (wrapped-get-1 (contract )) @@ -714,10 +735,8 @@ fn test_readwrite_dynamic_dispatch(owned_env: &mut OwnedEnvironment) { let target_contract = "(define-read-only (get-1 (x uint)) (ok u1))"; let p1 = execute("'SZ2J6ZY48GV1EZ5V2V5RB9MP66SW86PYKKQ9H6DPR"); - let mut placeholder_context = ContractContext::new( - QualifiedContractIdentifier::transient(), - ClarityVersion::Clarity1, - ); + let mut placeholder_context = + ContractContext::new(QualifiedContractIdentifier::transient(), version); { let mut env = owned_env.get_exec_environment(None, None, &mut placeholder_context); @@ -759,7 +778,10 @@ fn test_readwrite_dynamic_dispatch(owned_env: &mut OwnedEnvironment) { } } -fn test_readwrite_violation_dynamic_dispatch(owned_env: &mut OwnedEnvironment) { +fn test_readwrite_violation_dynamic_dispatch( + owned_env: &mut OwnedEnvironment, + version: ClarityVersion, +) { let dispatching_contract = "(define-trait trait-1 ( (get-1 (uint) (response uint uint)))) (define-read-only (wrapped-get-1 (contract )) @@ -767,10 +789,8 @@ fn test_readwrite_violation_dynamic_dispatch(owned_env: &mut OwnedEnvironment) { let target_contract = "(define-public (get-1 (x uint)) (ok u1))"; let p1 = execute("'SZ2J6ZY48GV1EZ5V2V5RB9MP66SW86PYKKQ9H6DPR"); - let mut placeholder_context = ContractContext::new( - QualifiedContractIdentifier::transient(), - ClarityVersion::Clarity1, - ); + let mut placeholder_context = + ContractContext::new(QualifiedContractIdentifier::transient(), version); { let mut env = owned_env.get_exec_environment(None, None, &mut placeholder_context); @@ -812,7 +832,7 @@ fn test_readwrite_violation_dynamic_dispatch(owned_env: &mut OwnedEnvironment) { } } -fn test_bad_call_with_trait(owned_env: &mut OwnedEnvironment) { +fn test_bad_call_with_trait(owned_env: &mut OwnedEnvironment, version: ClarityVersion) { // This set of contracts should be working in this context, // the analysis is not being performed. let contract_defining_trait = "(define-trait trait-1 ( @@ -827,10 +847,8 @@ fn test_bad_call_with_trait(owned_env: &mut OwnedEnvironment) { (contract-call? .dispatch wrapped-get-1 contract))"; let p1 = execute("'SZ2J6ZY48GV1EZ5V2V5RB9MP66SW86PYKKQ9H6DPR"); - let mut placeholder_context = ContractContext::new( - QualifiedContractIdentifier::transient(), - ClarityVersion::Clarity1, - ); + let mut placeholder_context = + ContractContext::new(QualifiedContractIdentifier::transient(), version); { let mut env = owned_env.get_exec_environment(None, None, &mut placeholder_context); @@ -879,7 +897,7 @@ fn test_bad_call_with_trait(owned_env: &mut OwnedEnvironment) { } } -fn test_good_call_with_trait(owned_env: &mut OwnedEnvironment) { +fn test_good_call_with_trait(owned_env: &mut OwnedEnvironment, version: ClarityVersion) { let contract_defining_trait = "(define-trait trait-1 ( (get-1 (uint) (response uint uint))))"; let dispatching_contract = "(use-trait trait-1 .defun.trait-1) @@ -891,10 +909,8 @@ fn test_good_call_with_trait(owned_env: &mut OwnedEnvironment) { (contract-call? .dispatch wrapped-get-1 .implem))"; let p1 = execute("'SZ2J6ZY48GV1EZ5V2V5RB9MP66SW86PYKKQ9H6DPR"); - let mut placeholder_context = ContractContext::new( - QualifiedContractIdentifier::transient(), - ClarityVersion::Clarity1, - ); + let mut placeholder_context = + ContractContext::new(QualifiedContractIdentifier::transient(), version); { let mut env = owned_env.get_exec_environment(None, None, &mut placeholder_context); @@ -943,7 +959,7 @@ fn test_good_call_with_trait(owned_env: &mut OwnedEnvironment) { } } -fn test_good_call_2_with_trait(owned_env: &mut OwnedEnvironment) { +fn test_good_call_2_with_trait(owned_env: &mut OwnedEnvironment, version: ClarityVersion) { let contract_defining_trait = "(define-trait trait-1 ( (get-1 (uint) (response uint uint))))"; let dispatching_contract = "(use-trait trait-1 .defun.trait-1) @@ -956,10 +972,8 @@ fn test_good_call_2_with_trait(owned_env: &mut OwnedEnvironment) { (contract-call? .dispatch wrapped-get-1 contract))"; let p1 = execute("'SZ2J6ZY48GV1EZ5V2V5RB9MP66SW86PYKKQ9H6DPR"); - let mut placeholder_context = ContractContext::new( - QualifiedContractIdentifier::transient(), - ClarityVersion::Clarity1, - ); + let mut placeholder_context = + ContractContext::new(QualifiedContractIdentifier::transient(), version); { let mut env = owned_env.get_exec_environment(None, None, &mut placeholder_context); @@ -1014,6 +1028,7 @@ fn test_good_call_2_with_trait(owned_env: &mut OwnedEnvironment) { fn test_dynamic_dispatch_pass_literal_principal_as_trait_in_user_defined_functions( owned_env: &mut OwnedEnvironment, + version: ClarityVersion, ) { let contract_defining_trait = "(define-trait trait-1 ( (get-1 (uint) (response uint uint))))"; @@ -1025,10 +1040,8 @@ fn test_dynamic_dispatch_pass_literal_principal_as_trait_in_user_defined_functio (define-public (get-1 (x uint)) (ok u1))"; let p1 = execute("'SZ2J6ZY48GV1EZ5V2V5RB9MP66SW86PYKKQ9H6DPR"); - let mut placeholder_context = ContractContext::new( - QualifiedContractIdentifier::transient(), - ClarityVersion::Clarity1, - ); + let mut placeholder_context = + ContractContext::new(QualifiedContractIdentifier::transient(), version); { let mut env = owned_env.get_exec_environment(None, None, &mut placeholder_context); @@ -1074,7 +1087,7 @@ fn test_dynamic_dispatch_pass_literal_principal_as_trait_in_user_defined_functio } } -fn test_contract_of_value(owned_env: &mut OwnedEnvironment) { +fn test_contract_of_value(owned_env: &mut OwnedEnvironment, version: ClarityVersion) { let contract_defining_trait = "(define-trait trait-1 ( (get-1 (uint) (response uint uint))))"; let dispatching_contract = "(use-trait trait-1 .defun.trait-1) @@ -1084,10 +1097,8 @@ fn test_contract_of_value(owned_env: &mut OwnedEnvironment) { (define-public (get-1 (x uint)) (ok u99))"; let p1 = execute("'SZ2J6ZY48GV1EZ5V2V5RB9MP66SW86PYKKQ9H6DPR"); - let mut placeholder_context = ContractContext::new( - QualifiedContractIdentifier::transient(), - ClarityVersion::Clarity1, - ); + let mut placeholder_context = + ContractContext::new(QualifiedContractIdentifier::transient(), version); { let mut env = owned_env.get_exec_environment(None, None, &mut placeholder_context); @@ -1135,7 +1146,7 @@ fn test_contract_of_value(owned_env: &mut OwnedEnvironment) { } } -fn test_contract_of_no_impl(owned_env: &mut OwnedEnvironment) { +fn test_contract_of_no_impl(owned_env: &mut OwnedEnvironment, version: ClarityVersion) { let contract_defining_trait = "(define-trait trait-1 ( (get-1 (uint) (response uint uint))))"; let dispatching_contract = "(use-trait trait-1 .defun.trait-1) @@ -1147,10 +1158,8 @@ fn test_contract_of_no_impl(owned_env: &mut OwnedEnvironment) { (define-public (get-1 (x uint)) (ok u99))"; let p1 = execute("'SZ2J6ZY48GV1EZ5V2V5RB9MP66SW86PYKKQ9H6DPR"); - let mut placeholder_context = ContractContext::new( - QualifiedContractIdentifier::transient(), - ClarityVersion::Clarity1, - ); + let mut placeholder_context = + ContractContext::new(QualifiedContractIdentifier::transient(), version); { let mut env = owned_env.get_exec_environment(None, None, &mut placeholder_context); @@ -1198,7 +1207,10 @@ fn test_contract_of_no_impl(owned_env: &mut OwnedEnvironment) { } } -fn test_return_trait_with_contract_of_wrapped_in_begin(owned_env: &mut OwnedEnvironment) { +fn test_return_trait_with_contract_of_wrapped_in_begin( + owned_env: &mut OwnedEnvironment, + version: ClarityVersion, +) { let dispatching_contract = "(define-trait trait-1 ( (get-1 (uint) (response uint uint)))) (define-public (wrapped-get-1 (contract )) @@ -1208,10 +1220,8 @@ fn test_return_trait_with_contract_of_wrapped_in_begin(owned_env: &mut OwnedEnvi let target_contract = "(define-public (get-1 (x uint)) (ok u1))"; let p1 = execute("'SZ2J6ZY48GV1EZ5V2V5RB9MP66SW86PYKKQ9H6DPR"); - let mut placeholder_context = ContractContext::new( - QualifiedContractIdentifier::transient(), - ClarityVersion::Clarity1, - ); + let mut placeholder_context = + ContractContext::new(QualifiedContractIdentifier::transient(), version); { let mut env = owned_env.get_exec_environment(None, None, &mut placeholder_context); @@ -1251,7 +1261,10 @@ fn test_return_trait_with_contract_of_wrapped_in_begin(owned_env: &mut OwnedEnvi } } -fn test_return_trait_with_contract_of_wrapped_in_let(owned_env: &mut OwnedEnvironment) { +fn test_return_trait_with_contract_of_wrapped_in_let( + owned_env: &mut OwnedEnvironment, + version: ClarityVersion, +) { let dispatching_contract = "(define-trait trait-1 ( (get-1 (uint) (response uint uint)))) (define-public (wrapped-get-1 (contract )) @@ -1261,10 +1274,8 @@ fn test_return_trait_with_contract_of_wrapped_in_let(owned_env: &mut OwnedEnviro let target_contract = "(define-public (get-1 (x uint)) (ok u1))"; let p1 = execute("'SZ2J6ZY48GV1EZ5V2V5RB9MP66SW86PYKKQ9H6DPR"); - let mut placeholder_context = ContractContext::new( - QualifiedContractIdentifier::transient(), - ClarityVersion::Clarity1, - ); + let mut placeholder_context = + ContractContext::new(QualifiedContractIdentifier::transient(), version); { let mut env = owned_env.get_exec_environment(None, None, &mut placeholder_context); @@ -1304,7 +1315,7 @@ fn test_return_trait_with_contract_of_wrapped_in_let(owned_env: &mut OwnedEnviro } } -fn test_return_trait_with_contract_of(owned_env: &mut OwnedEnvironment) { +fn test_return_trait_with_contract_of(owned_env: &mut OwnedEnvironment, version: ClarityVersion) { let dispatching_contract = "(define-trait trait-1 ( (get-1 (uint) (response uint uint)))) (define-public (wrapped-get-1 (contract )) @@ -1312,10 +1323,8 @@ fn test_return_trait_with_contract_of(owned_env: &mut OwnedEnvironment) { let target_contract = "(define-public (get-1 (x uint)) (ok u1))"; let p1 = execute("'SZ2J6ZY48GV1EZ5V2V5RB9MP66SW86PYKKQ9H6DPR"); - let mut placeholder_context = ContractContext::new( - QualifiedContractIdentifier::transient(), - ClarityVersion::Clarity1, - ); + let mut placeholder_context = + ContractContext::new(QualifiedContractIdentifier::transient(), version); { let mut env = owned_env.get_exec_environment(None, None, &mut placeholder_context);