Skip to content

Commit

Permalink
Make system properties an arbitrary JSON object, plus CI fixes (parit…
Browse files Browse the repository at this point in the history
…ytech#349)

* Make system properties an arbitrary JSON object

* Add comment

* Make timestamp test more reliable

* Fmt

* Update src/client.rs

Co-authored-by: David <dvdplm@gmail.com>

* Update src/client.rs

Co-authored-by: David <dvdplm@gmail.com>

* Fix clippy errors and warnings

* Fix tests

Co-authored-by: David <dvdplm@gmail.com>
  • Loading branch information
2 people authored and 0623forbidden committed Feb 15, 2022
1 parent b59aed4 commit 622ab7a
Show file tree
Hide file tree
Showing 7 changed files with 26 additions and 44 deletions.
4 changes: 2 additions & 2 deletions cli/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ fn main() -> color_eyre::Result<()> {
});
let (_, bytes) = fetch_metadata(&url)?;
codegen(&mut &bytes[..])?;
return Ok(())
Ok(())
}
}
}
Expand All @@ -139,7 +139,7 @@ fn fetch_metadata(url: &url::Url) -> color_eyre::Result<(String, Vec<u8>)> {
let hex_data = json["result"]
.as_str()
.map(ToString::to_string)
.ok_or(eyre::eyre!("metadata result field should be a string"))?;
.ok_or_else(|| eyre::eyre!("metadata result field should be a string"))?;
let bytes = hex::decode(hex_data.trim_start_matches("0x"))?;

Ok((hex_data, bytes))
Expand Down
1 change: 1 addition & 0 deletions codegen/src/ir.rs
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ impl ItemMod {
}

#[derive(Debug, PartialEq, Eq)]
#[allow(clippy::large_enum_variant)]
pub enum Item {
Rust(syn::Item),
Subxt(SubxtItem),
Expand Down
12 changes: 6 additions & 6 deletions codegen/src/types/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ use scale_info::{
TypeInfo,
};

const MOD_PATH: &'static [&'static str] = &["subxt_codegen", "types", "tests"];
const MOD_PATH: &[&str] = &["subxt_codegen", "types", "tests"];

fn get_mod<'a>(module: &'a Module, path_segs: &[&'static str]) -> Option<&'a Module<'a>> {
let (mod_name, rest) = path_segs.split_first()?;
Expand Down Expand Up @@ -790,7 +790,7 @@ fn generics_with_alias_adds_phantom_data_marker() {

#[test]
fn modules() {
mod modules {
mod m {
pub mod a {
#[allow(unused)]
#[derive(scale_info::TypeInfo)]
Expand All @@ -815,7 +815,7 @@ fn modules() {
}

let mut registry = Registry::new();
registry.register_type(&meta_type::<modules::c::Foo>());
registry.register_type(&meta_type::<m::c::Foo>());
let portable_types: PortableRegistry = registry.into();

let type_gen = TypeGenerator::new(
Expand All @@ -832,7 +832,7 @@ fn modules() {
quote! {
pub mod tests {
use super::root;
pub mod modules {
pub mod m {
use super::root;
pub mod a {
use super::root;
Expand All @@ -842,7 +842,7 @@ fn modules() {

#[derive(::subxt::codec::Encode, ::subxt::codec::Decode)]
pub struct Bar {
pub a: root::subxt_codegen::types::tests::modules::a::Foo,
pub a: root::subxt_codegen::types::tests::m::a::Foo,
}
}

Expand All @@ -855,7 +855,7 @@ fn modules() {

#[derive(::subxt::codec::Encode, ::subxt::codec::Decode)]
pub struct Foo {
pub a: root::subxt_codegen::types::tests::modules::a::b::Bar,
pub a: root::subxt_codegen::types::tests::m::a::b::Bar,
}
}
}
Expand Down
9 changes: 8 additions & 1 deletion src/client.rs
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,14 @@ impl<T: Config> Client<T> {
&self.metadata
}

/// Returns the system properties
/// Returns the properties defined in the chain spec as a JSON object.
///
/// # Note
///
/// Many chains use this to define common properties such as `token_decimals` and `token_symbol`
/// required for UIs, but this is merely a convention. It is up to the library user to
/// deserialize the JSON into the appropriate type or otherwise extract the properties defined
/// in the target chain's spec.
pub fn properties(&self) -> &SystemProperties {
&self.properties
}
Expand Down
5 changes: 5 additions & 0 deletions src/metadata.rs
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,11 @@ pub struct PalletMetadata {
}

impl PalletMetadata {
/// Get the name of the pallet.
pub fn name(&self) -> &str {
&self.name
}

/// Encode a call based on this pallet metadata.
pub fn encode_call<C>(&self, call: &C) -> Result<Encoded, MetadataError>
where
Expand Down
13 changes: 2 additions & 11 deletions src/rpc.rs
Original file line number Diff line number Diff line change
Expand Up @@ -141,17 +141,8 @@ impl From<u32> for BlockNumber {
}
}

/// System properties for a Substrate-based runtime
#[derive(serde::Serialize, Deserialize, Debug, Clone, PartialEq, Eq, Default)]
#[serde(rename_all = "camelCase")]
pub struct SystemProperties {
/// The address format
pub ss58_format: u8,
/// The number of digits after the decimal point in the native token
pub token_decimals: u8,
/// The symbol of the native token
pub token_symbol: String,
}
/// Arbitrary properties defined in the chain spec as a JSON object.
pub type SystemProperties = serde_json::Map<String, serde_json::Value>;

/// Possible transaction status events.
///
Expand Down
26 changes: 2 additions & 24 deletions tests/integration/frame/timestamp.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,34 +15,12 @@
// along with subxt. If not, see <http://www.gnu.org/licenses/>.

use crate::test_context;
use std::time::{
SystemTime,
UNIX_EPOCH,
};

#[async_std::test]
async fn storage_get_current_timestamp() {
let sys_timestamp = SystemTime::now()
.duration_since(UNIX_EPOCH)
.unwrap()
.as_millis() as u64;
let cxt = test_context().await;

// wait until blocks are produced to get the timestamp
let mut sub = cxt.client().rpc().subscribe_blocks().await.unwrap();
let block_hash = loop {
if let Ok(Some(block)) = sub.next().await {
break block.hash()
}
};
let timestamp = cxt.api.storage().timestamp().now(None).await;

let timestamp = cxt
.api
.storage()
.timestamp()
.now(Some(block_hash))
.await
.unwrap();

assert!(timestamp > sys_timestamp)
assert!(timestamp.is_ok())
}

0 comments on commit 622ab7a

Please sign in to comment.