1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
//! # Error definitions
pub use anyhow::{anyhow, bail, Context as AnyContext, Error as AnyError, Result as AnyResult};
use cosmwasm_std::{WasmMsg, WasmQuery};
use thiserror::Error;
/// An enumeration of errors reported across the **CosmWasm MultiTest** library.
#[derive(Debug, Error, PartialEq, Eq)]
pub enum Error {
/// Error variant for reporting an empty attribute key.
#[error("Empty attribute key. Value: {0}")]
EmptyAttributeKey(String),
/// Error variant for reporting an empty attribute value.
#[deprecated(note = "This error is not reported anymore. Will be removed in next release.")]
#[error("Empty attribute value. Key: {0}")]
EmptyAttributeValue(String),
/// Error variant for reporting a usage of reserved key prefix.
#[error("Attribute key starts with reserved prefix _: {0}")]
ReservedAttributeKey(String),
/// Error variant for reporting too short event types.
#[error("Event type too short: {0}")]
EventTypeTooShort(String),
/// Error variant for reporting that unsupported wasm query was encountered during processing.
#[error("Unsupported wasm query: {0:?}")]
UnsupportedWasmQuery(WasmQuery),
/// Error variant for reporting that unsupported wasm message was encountered during processing.
#[error("Unsupported wasm message: {0:?}")]
UnsupportedWasmMsg(WasmMsg),
/// Error variant for reporting invalid contract code.
#[error("code id: invalid")]
InvalidCodeId,
/// Error variant for reporting unregistered contract code.
#[error("code id {0}: no such code")]
UnregisteredCodeId(u64),
/// Error variant for reporting duplicated contract code identifier.
#[error("duplicated code id {0}")]
DuplicatedCodeId(u64),
/// Error variant for reporting a situation when no more contract code identifiers are available.
#[error("no more code identifiers available")]
NoMoreCodeIdAvailable,
/// Error variant for reporting duplicated contract addresses.
#[error("Contract with this address already exists: {0}")]
DuplicatedContractAddress(String),
}
impl Error {
/// Creates an instance of the [Error](Self) for empty attribute key.
pub fn empty_attribute_key(value: impl Into<String>) -> Self {
Self::EmptyAttributeKey(value.into())
}
#[deprecated(note = "This error is not reported anymore. Will be removed in next release.")]
/// Creates an instance of the [Error](Self) for empty attribute value.
pub fn empty_attribute_value(key: impl Into<String>) -> Self {
#[allow(deprecated)]
Self::EmptyAttributeValue(key.into())
}
/// Creates an instance of the [Error](Self) when reserved attribute key was used.
pub fn reserved_attribute_key(key: impl Into<String>) -> Self {
Self::ReservedAttributeKey(key.into())
}
/// Creates an instance of the [Error](Self) for too short event types.
pub fn event_type_too_short(ty: impl Into<String>) -> Self {
Self::EventTypeTooShort(ty.into())
}
/// Creates an instance of the [Error](Self) for unsupported wasm queries.
pub fn unsupported_wasm_query(query: WasmQuery) -> Self {
Self::UnsupportedWasmQuery(query)
}
/// Creates an instance of the [Error](Self) for unsupported wasm messages.
pub fn unsupported_wasm_message(msg: WasmMsg) -> Self {
Self::UnsupportedWasmMsg(msg)
}
/// Creates an instance of the [Error](Self) for invalid contract code identifier.
pub fn invalid_code_id() -> Self {
Self::InvalidCodeId
}
/// Creates an instance of the [Error](Self) for unregistered contract code identifier.
pub fn unregistered_code_id(code_id: u64) -> Self {
Self::UnregisteredCodeId(code_id)
}
/// Creates an instance of the [Error](Self) for duplicated contract code identifier.
pub fn duplicated_code_id(code_id: u64) -> Self {
Self::DuplicatedCodeId(code_id)
}
/// Creates an instance of the [Error](Self) for exhausted contract code identifiers.
pub fn no_more_code_id_available() -> Self {
Self::NoMoreCodeIdAvailable
}
/// Creates an instance of the [Error](Self) for duplicated contract addresses.
pub fn duplicated_contract_address(address: impl Into<String>) -> Self {
Self::DuplicatedContractAddress(address.into())
}
}