Skip to content

Commit 1ca93a4

Browse files
authored
Merge pull request #2383 from CosmWasm/co/downcast-api
Implement downcasting for `Api` trait
2 parents 804e113 + 40ec41d commit 1ca93a4

File tree

19 files changed

+126
-4
lines changed

19 files changed

+126
-4
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ and this project adheres to
1616
- cosmwasm-std: Implement `Uint128::from_{be,le}_bytes` and
1717
`Uint64::from_{be,le}_bytes`. ([#2269])
1818
- cosmwasm-std: Added new `EurekaMsg` and `CosmosMsg::Eureka` variant ([#2340])
19+
- cosmwasm-std: Implement downcasting for `Api` trait. This allows using
20+
`MockApi::addr_make` from `DepsMut`. ([#2383])
1921

2022
## Changed
2123

@@ -45,6 +47,7 @@ and this project adheres to
4547
[#2344]: https://github.com/CosmWasm/cosmwasm/pull/2344
4648
[#2374]: https://github.com/CosmWasm/cosmwasm/issues/2374
4749
[#2378]: https://github.com/CosmWasm/cosmwasm/issues/2378
50+
[#2383]: https://github.com/CosmWasm/cosmwasm/issues/2383
4851

4952
## [2.2.0] - 2024-12-17
5053

Cargo.lock

Lines changed: 8 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

contracts/burner/Cargo.lock

Lines changed: 8 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

contracts/crypto-verify/Cargo.lock

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

contracts/cyberpunk/Cargo.lock

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

contracts/empty/Cargo.lock

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

contracts/floaty/Cargo.lock

Lines changed: 8 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

contracts/hackatom/Cargo.lock

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

contracts/ibc-callbacks/Cargo.lock

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

contracts/ibc-reflect-send/Cargo.lock

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

contracts/ibc-reflect/Cargo.lock

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

contracts/queue/Cargo.lock

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

contracts/reflect/Cargo.lock

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

contracts/replier/Cargo.lock

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

contracts/staking/Cargo.lock

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

contracts/virus/Cargo.lock

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/std/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ serde-json-wasm = { version = "1.0.1", default-features = false, features = [
7474
static_assertions = "1.1.0"
7575
thiserror = "1.0.26"
7676
rmp-serde = "1.3.0"
77+
downcast-rs = { version = "2.0.1", default-features = false }
7778

7879
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
7980
bech32 = "0.11.0"

packages/std/src/testing/mock.rs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2756,4 +2756,15 @@ mod tests {
27562756
// we are not interested in the exact humanization, just that it works
27572757
mock_api.addr_humanize(&canonical_addr).unwrap();
27582758
}
2759+
2760+
#[test]
2761+
fn mock_api_downcast() {
2762+
let mut deps = mock_dependencies();
2763+
let deps_mut = deps.as_mut();
2764+
2765+
let mock_api = deps_mut.api.downcast_ref::<MockApi>().unwrap();
2766+
2767+
let addr = mock_api.addr_make("input");
2768+
assert_eq!(mock_api.addr_validate(addr.as_str()).unwrap(), addr);
2769+
}
27592770
}

0 commit comments

Comments
 (0)