From c844b88752c675c83ee2991551efa22e39a6278e Mon Sep 17 00:00:00 2001 From: Leigh McCulloch <351529+leighmcculloch@users.noreply.github.com> Date: Fri, 25 Aug 2023 10:05:38 -0700 Subject: [PATCH] Add test vector for workspace setups where contract types live in a lib (#1070) ### What Add test vector for workspace setups where contract types live in a lib. ### Why In https://github.com/stellar/rs-soroban-sdk/issues/1063 it was mentioned that folks were having trouble with using types in other libs. Added this test vector to confirm if that was an issue or not. Appears to work fine, and this is a use case that is important, so committing the test vector. --- Cargo.lock | 15 ++++++++++++++ Cargo.toml | 2 ++ test_workspace_contract.wasm | Bin 0 -> 501 bytes test_workspace_contract_b.wasm | Bin 0 -> 501 bytes tests/workspace_contract/Cargo.toml | 20 ++++++++++++++++++ tests/workspace_contract/src/lib.rs | 31 ++++++++++++++++++++++++++++ tests/workspace_lib/Cargo.toml | 21 +++++++++++++++++++ tests/workspace_lib/src/lib.rs | 8 +++++++ 8 files changed, 97 insertions(+) create mode 100755 test_workspace_contract.wasm create mode 100755 test_workspace_contract_b.wasm create mode 100644 tests/workspace_contract/Cargo.toml create mode 100644 tests/workspace_contract/src/lib.rs create mode 100644 tests/workspace_lib/Cargo.toml create mode 100644 tests/workspace_lib/src/lib.rs diff --git a/Cargo.lock b/Cargo.lock index 5c61a2e76..de2271c7b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1477,6 +1477,21 @@ dependencies = [ "soroban-sdk", ] +[[package]] +name = "test_workspace_contract" +version = "0.9.2" +dependencies = [ + "soroban-sdk", + "test_workspace_lib", +] + +[[package]] +name = "test_workspace_lib" +version = "0.9.2" +dependencies = [ + "soroban-sdk", +] + [[package]] name = "thiserror" version = "1.0.40" diff --git a/Cargo.toml b/Cargo.toml index e640c3297..3982cf15b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -24,6 +24,8 @@ members = [ "tests/auth", "tests/fuzz", "tests/multiimpl", + "tests/workspace_contract", + "tests/workspace_lib", ] [workspace.package] diff --git a/test_workspace_contract.wasm b/test_workspace_contract.wasm new file mode 100755 index 0000000000000000000000000000000000000000..c4b4ba2c91e9a4cda85e9cf17c8649d6ae90bb29 GIT binary patch literal 501 zcmZuu!ES;;5S`gAY9whf>BUQ9Yp*3PXuu{oZoub%*x&i0= z+%}ogh(xrE*94S|zr71U^nkQIFW@Qn#3G=mdftoRD{smZK}q|WJQ3Vr-Y=wpqs{N& zzH)ouen@AJ7Hv6S#jb!KxA*B@Y9vch4Y Zr($wn&3%bKR)enaa)(Fx4?llH`2|W-Y=Hm( literal 0 HcmV?d00001 diff --git a/test_workspace_contract_b.wasm b/test_workspace_contract_b.wasm new file mode 100755 index 0000000000000000000000000000000000000000..c4b4ba2c91e9a4cda85e9cf17c8649d6ae90bb29 GIT binary patch literal 501 zcmZuu!ES;;5S`gAY9whf>BUQ9Yp*3PXuu{oZoub%*x&i0= z+%}ogh(xrE*94S|zr71U^nkQIFW@Qn#3G=mdftoRD{smZK}q|WJQ3Vr-Y=wpqs{N& zzH)ouen@AJ7Hv6S#jb!KxA*B@Y9vch4Y Zr($wn&3%bKR)enaa)(Fx4?llH`2|W-Y=Hm( literal 0 HcmV?d00001 diff --git a/tests/workspace_contract/Cargo.toml b/tests/workspace_contract/Cargo.toml new file mode 100644 index 000000000..0e8b5dae1 --- /dev/null +++ b/tests/workspace_contract/Cargo.toml @@ -0,0 +1,20 @@ +[package] +name = "test_workspace_contract" +version.workspace = true +authors = ["Stellar Development Foundation "] +license = "Apache-2.0" +edition = "2021" +publish = false +rust-version = "1.71" + +[lib] +crate-type = ["cdylib"] +doctest = false + +[dependencies] +soroban-sdk = {path = "../../soroban-sdk"} +test_workspace_lib = {path = "../workspace_lib"} + +[dev-dependencies] +soroban-sdk = {path = "../../soroban-sdk", features = ["testutils"]} +test_workspace_lib = {path = "../workspace_lib", features = ["testutils"]} diff --git a/tests/workspace_contract/src/lib.rs b/tests/workspace_contract/src/lib.rs new file mode 100644 index 000000000..864c51c54 --- /dev/null +++ b/tests/workspace_contract/src/lib.rs @@ -0,0 +1,31 @@ +#![no_std] +use soroban_sdk::{contract, contractimpl}; + +use test_workspace_lib::Value; + +#[contract] +pub struct Contract; + +#[contractimpl] +impl Contract { + pub fn value() -> Value { + return Value { value: 13 }; + } +} + +#[cfg(test)] +mod test { + use super::*; + use soroban_sdk::Env; + + #[test] + fn test_add() { + let e = Env::default(); + + let contract_id = e.register_contract(None, Contract); + let client = ContractClient::new(&e, &contract_id); + + let z = client.value(); + assert_eq!(z, Value { value: 13 }); + } +} diff --git a/tests/workspace_lib/Cargo.toml b/tests/workspace_lib/Cargo.toml new file mode 100644 index 000000000..5d4600500 --- /dev/null +++ b/tests/workspace_lib/Cargo.toml @@ -0,0 +1,21 @@ +[package] +name = "test_workspace_lib" +version.workspace = true +authors = ["Stellar Development Foundation "] +license = "Apache-2.0" +edition = "2021" +publish = false +rust-version = "1.71" + +[lib] +crate-type = ["rlib"] +doctest = false + +[features] +testutils = [] + +[dependencies] +soroban-sdk = {path = "../../soroban-sdk"} + +[dev-dependencies] +soroban-sdk = {path = "../../soroban-sdk", features = ["testutils"]} diff --git a/tests/workspace_lib/src/lib.rs b/tests/workspace_lib/src/lib.rs new file mode 100644 index 000000000..c9512db7b --- /dev/null +++ b/tests/workspace_lib/src/lib.rs @@ -0,0 +1,8 @@ +#![no_std] +use soroban_sdk::contracttype; + +#[contracttype] +#[derive(Debug, Eq, PartialEq)] +pub struct Value { + pub value: i32, +}