mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-07-24 18:15:48 +00:00
Adjust testing
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
This commit is contained in:
Generated
+1
@@ -1548,6 +1548,7 @@ dependencies = [
|
|||||||
"sp-runtime",
|
"sp-runtime",
|
||||||
"subxt",
|
"subxt",
|
||||||
"subxt-codegen",
|
"subxt-codegen",
|
||||||
|
"subxt-metadata",
|
||||||
"syn 1.0.109",
|
"syn 1.0.109",
|
||||||
"test-runtime",
|
"test-runtime",
|
||||||
"tokio",
|
"tokio",
|
||||||
|
|||||||
@@ -13,10 +13,10 @@ pub enum CodegenError {
|
|||||||
#[error("Could not find type with ID {0} in the type registry; please raise a support issue.")]
|
#[error("Could not find type with ID {0} in the type registry; please raise a support issue.")]
|
||||||
TypeNotFound(u32),
|
TypeNotFound(u32),
|
||||||
/// Cannot fetch the metadata bytes.
|
/// Cannot fetch the metadata bytes.
|
||||||
#[error("Failed to fetch metadata, make sure that you're pointing at a node which is providing V14 metadata: {0}")]
|
#[error("Failed to fetch metadata, make sure that you're pointing at a node which is providing substrate-based metadata: {0}")]
|
||||||
Fetch(#[from] FetchMetadataError),
|
Fetch(#[from] FetchMetadataError),
|
||||||
/// Failed IO for the metadata file.
|
/// Failed IO for the metadata file.
|
||||||
#[error("Failed IO for {0}, make sure that you are providing the correct file path for metadata V14: {1}")]
|
#[error("Failed IO for {0}, make sure that you are providing the correct file path for metadata: {1}")]
|
||||||
Io(String, std::io::Error),
|
Io(String, std::io::Error),
|
||||||
/// Cannot decode the metadata bytes.
|
/// Cannot decode the metadata bytes.
|
||||||
#[error("Could not decode metadata, only V14 metadata is supported: {0}")]
|
#[error("Could not decode metadata, only V14 metadata is supported: {0}")]
|
||||||
@@ -25,7 +25,7 @@ pub enum CodegenError {
|
|||||||
#[error("Out-of-line subxt modules are not supported, make sure you are providing a body to your module: pub mod polkadot {{ ... }}")]
|
#[error("Out-of-line subxt modules are not supported, make sure you are providing a body to your module: pub mod polkadot {{ ... }}")]
|
||||||
InvalidModule(Span),
|
InvalidModule(Span),
|
||||||
/// Expected named or unnamed fields.
|
/// Expected named or unnamed fields.
|
||||||
#[error("Fields should either be all named or all unnamed, make sure you are providing a valid metadata V14: {0}")]
|
#[error("Fields should either be all named or all unnamed, make sure you are providing a valid metadata: {0}")]
|
||||||
InvalidFields(String),
|
InvalidFields(String),
|
||||||
/// Substitute types must have a valid path.
|
/// Substitute types must have a valid path.
|
||||||
#[error("Type substitution error: {0}")]
|
#[error("Type substitution error: {0}")]
|
||||||
@@ -34,20 +34,20 @@ pub enum CodegenError {
|
|||||||
#[error("Invalid type path {0}: {1}")]
|
#[error("Invalid type path {0}: {1}")]
|
||||||
InvalidTypePath(String, syn::Error),
|
InvalidTypePath(String, syn::Error),
|
||||||
/// Metadata for constant could not be found.
|
/// Metadata for constant could not be found.
|
||||||
#[error("Metadata for constant entry {0}_{1} could not be found. Make sure you are providing a valid metadata V14")]
|
#[error("Metadata for constant entry {0}_{1} could not be found. Make sure you are providing a valid substrate-based metadata")]
|
||||||
MissingConstantMetadata(String, String),
|
MissingConstantMetadata(String, String),
|
||||||
/// Metadata for storage could not be found.
|
/// Metadata for storage could not be found.
|
||||||
#[error("Metadata for storage entry {0}_{1} could not be found. Make sure you are providing a valid metadata V14")]
|
#[error("Metadata for storage entry {0}_{1} could not be found. Make sure you are providing a valid substrate-based metadata")]
|
||||||
MissingStorageMetadata(String, String),
|
MissingStorageMetadata(String, String),
|
||||||
/// Metadata for call could not be found.
|
/// Metadata for call could not be found.
|
||||||
#[error("Metadata for call entry {0}_{1} could not be found. Make sure you are providing a valid metadata V14")]
|
#[error("Metadata for call entry {0}_{1} could not be found. Make sure you are providing a valid substrate-based metadata")]
|
||||||
MissingCallMetadata(String, String),
|
MissingCallMetadata(String, String),
|
||||||
/// Call variant must have all named fields.
|
/// Call variant must have all named fields.
|
||||||
#[error("Call variant for type {0} must have all named fields. Make sure you are providing a valid metadata V14")]
|
#[error("Call variant for type {0} must have all named fields. Make sure you are providing a valid substrate-based metadata")]
|
||||||
InvalidCallVariant(u32),
|
InvalidCallVariant(u32),
|
||||||
/// Type should be an variant/enum.
|
/// Type should be an variant/enum.
|
||||||
#[error(
|
#[error(
|
||||||
"{0} type should be an variant/enum type. Make sure you are providing a valid metadata V14"
|
"{0} type should be an variant/enum type. Make sure you are providing a valid substrate-based metadata"
|
||||||
)]
|
)]
|
||||||
InvalidType(String),
|
InvalidType(String),
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -430,7 +430,7 @@ pub(crate) mod test_utils {
|
|||||||
use crate::{Config, SubstrateConfig};
|
use crate::{Config, SubstrateConfig};
|
||||||
use codec::Encode;
|
use codec::Encode;
|
||||||
use frame_metadata::{
|
use frame_metadata::{
|
||||||
v14::{ExtrinsicMetadata, PalletEventMetadata, PalletMetadata, RuntimeMetadataV14},
|
v15::{ExtrinsicMetadata, PalletEventMetadata, PalletMetadata, RuntimeMetadataV15},
|
||||||
RuntimeMetadataPrefixed,
|
RuntimeMetadataPrefixed,
|
||||||
};
|
};
|
||||||
use scale_info::{meta_type, TypeInfo};
|
use scale_info::{meta_type, TypeInfo};
|
||||||
@@ -503,6 +503,7 @@ pub(crate) mod test_utils {
|
|||||||
constants: vec![],
|
constants: vec![],
|
||||||
error: None,
|
error: None,
|
||||||
index: 0,
|
index: 0,
|
||||||
|
docs: vec![],
|
||||||
}];
|
}];
|
||||||
|
|
||||||
let extrinsic = ExtrinsicMetadata {
|
let extrinsic = ExtrinsicMetadata {
|
||||||
@@ -511,8 +512,8 @@ pub(crate) mod test_utils {
|
|||||||
signed_extensions: vec![],
|
signed_extensions: vec![],
|
||||||
};
|
};
|
||||||
|
|
||||||
let v14 = RuntimeMetadataV14::new(pallets, extrinsic, meta_type::<()>());
|
let meta = RuntimeMetadataV15::new(pallets, extrinsic, meta_type::<()>(), vec![]);
|
||||||
let runtime_metadata: RuntimeMetadataPrefixed = v14.into();
|
let runtime_metadata: RuntimeMetadataPrefixed = meta.into();
|
||||||
|
|
||||||
Metadata::try_from(runtime_metadata).unwrap()
|
Metadata::try_from(runtime_metadata).unwrap()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ sp-keyring = "20.0.0"
|
|||||||
syn = "1.0.109"
|
syn = "1.0.109"
|
||||||
subxt = { version = "0.27.1", path = "../../subxt" }
|
subxt = { version = "0.27.1", path = "../../subxt" }
|
||||||
subxt-codegen = { version = "0.27.1", path = "../../codegen" }
|
subxt-codegen = { version = "0.27.1", path = "../../codegen" }
|
||||||
|
subxt-metadata = { version = "0.27.1", path = "../../metadata" }
|
||||||
test-runtime = { path = "../test-runtime" }
|
test-runtime = { path = "../test-runtime" }
|
||||||
tokio = { version = "1.27", features = ["macros", "time"] }
|
tokio = { version = "1.27", features = ["macros", "time"] }
|
||||||
tracing = "0.1.34"
|
tracing = "0.1.34"
|
||||||
|
|||||||
@@ -106,8 +106,11 @@ async fn runtime_api_call() -> Result<(), subxt::Error> {
|
|||||||
let _ = <Compact<u32>>::decode(cursor)?;
|
let _ = <Compact<u32>>::decode(cursor)?;
|
||||||
let meta: RuntimeMetadataPrefixed = Decode::decode(cursor)?;
|
let meta: RuntimeMetadataPrefixed = Decode::decode(cursor)?;
|
||||||
let metadata_call = match meta.1 {
|
let metadata_call = match meta.1 {
|
||||||
frame_metadata::RuntimeMetadata::V14(metadata) => metadata,
|
frame_metadata::RuntimeMetadata::V14(metadata) => {
|
||||||
_ => panic!("Metadata V14 unavailable"),
|
subxt_metadata::metadata_v14_to_latest(metadata)
|
||||||
|
}
|
||||||
|
frame_metadata::RuntimeMetadata::V15(metadata) => metadata,
|
||||||
|
_ => panic!("Metadata V14 or V15 unavailable"),
|
||||||
};
|
};
|
||||||
|
|
||||||
// Compare the runtime API call against the `state_getMetadata`.
|
// Compare the runtime API call against the `state_getMetadata`.
|
||||||
|
|||||||
@@ -398,10 +398,12 @@ async fn rpc_state_call() {
|
|||||||
let _ = <Compact<u32>>::decode(cursor).unwrap();
|
let _ = <Compact<u32>>::decode(cursor).unwrap();
|
||||||
let meta: RuntimeMetadataPrefixed = Decode::decode(cursor).unwrap();
|
let meta: RuntimeMetadataPrefixed = Decode::decode(cursor).unwrap();
|
||||||
let metadata_call = match meta.1 {
|
let metadata_call = match meta.1 {
|
||||||
frame_metadata::RuntimeMetadata::V14(metadata) => metadata,
|
frame_metadata::RuntimeMetadata::V14(metadata) => {
|
||||||
_ => panic!("Metadata V14 unavailable"),
|
subxt_metadata::metadata_v14_to_latest(metadata)
|
||||||
|
}
|
||||||
|
frame_metadata::RuntimeMetadata::V15(metadata) => metadata,
|
||||||
|
_ => panic!("Metadata V14 or V15 unavailable"),
|
||||||
};
|
};
|
||||||
|
|
||||||
// Compare the runtime API call against the `state_getMetadata`.
|
// Compare the runtime API call against the `state_getMetadata`.
|
||||||
let metadata = api.rpc().metadata(None).await.unwrap();
|
let metadata = api.rpc().metadata(None).await.unwrap();
|
||||||
let metadata = metadata.runtime_metadata();
|
let metadata = metadata.runtime_metadata();
|
||||||
|
|||||||
@@ -4,9 +4,11 @@
|
|||||||
|
|
||||||
use crate::{node_runtime, test_context, TestContext};
|
use crate::{node_runtime, test_context, TestContext};
|
||||||
use frame_metadata::{
|
use frame_metadata::{
|
||||||
ExtrinsicMetadata, PalletCallMetadata, PalletMetadata, PalletStorageMetadata,
|
v15::{
|
||||||
RuntimeMetadataPrefixed, RuntimeMetadataV14, StorageEntryMetadata, StorageEntryModifier,
|
ExtrinsicMetadata, PalletCallMetadata, PalletMetadata, PalletStorageMetadata,
|
||||||
StorageEntryType,
|
RuntimeMetadataV15, StorageEntryMetadata, StorageEntryModifier, StorageEntryType,
|
||||||
|
},
|
||||||
|
RuntimeMetadataPrefixed,
|
||||||
};
|
};
|
||||||
use scale_info::{
|
use scale_info::{
|
||||||
build::{Fields, Variants},
|
build::{Fields, Variants},
|
||||||
@@ -15,7 +17,7 @@ use scale_info::{
|
|||||||
use subxt::{Metadata, OfflineClient, SubstrateConfig};
|
use subxt::{Metadata, OfflineClient, SubstrateConfig};
|
||||||
|
|
||||||
async fn metadata_to_api(
|
async fn metadata_to_api(
|
||||||
metadata: RuntimeMetadataV14,
|
metadata: RuntimeMetadataV15,
|
||||||
ctx: &TestContext,
|
ctx: &TestContext,
|
||||||
) -> OfflineClient<SubstrateConfig> {
|
) -> OfflineClient<SubstrateConfig> {
|
||||||
let prefixed = RuntimeMetadataPrefixed::from(metadata);
|
let prefixed = RuntimeMetadataPrefixed::from(metadata);
|
||||||
@@ -37,7 +39,7 @@ async fn full_metadata_check() {
|
|||||||
assert!(node_runtime::validate_codegen(&api).is_ok());
|
assert!(node_runtime::validate_codegen(&api).is_ok());
|
||||||
|
|
||||||
// Modify the metadata.
|
// Modify the metadata.
|
||||||
let mut metadata: RuntimeMetadataV14 = api.metadata().runtime_metadata().clone();
|
let mut metadata = api.metadata().runtime_metadata().clone();
|
||||||
metadata.pallets[0].name = "NewPallet".to_string();
|
metadata.pallets[0].name = "NewPallet".to_string();
|
||||||
|
|
||||||
let api = metadata_to_api(metadata, &ctx).await;
|
let api = metadata_to_api(metadata, &ctx).await;
|
||||||
@@ -59,7 +61,7 @@ async fn constant_values_are_not_validated() {
|
|||||||
assert!(api.constants().at(&deposit_addr).is_ok());
|
assert!(api.constants().at(&deposit_addr).is_ok());
|
||||||
|
|
||||||
// Modify the metadata.
|
// Modify the metadata.
|
||||||
let mut metadata: RuntimeMetadataV14 = api.metadata().runtime_metadata().clone();
|
let mut metadata = api.metadata().runtime_metadata().clone();
|
||||||
|
|
||||||
let mut existential = metadata
|
let mut existential = metadata
|
||||||
.pallets
|
.pallets
|
||||||
@@ -89,11 +91,12 @@ fn default_pallet() -> PalletMetadata {
|
|||||||
constants: vec![],
|
constants: vec![],
|
||||||
error: None,
|
error: None,
|
||||||
index: 0,
|
index: 0,
|
||||||
|
docs: vec![],
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn pallets_to_metadata(pallets: Vec<PalletMetadata>) -> RuntimeMetadataV14 {
|
fn pallets_to_metadata(pallets: Vec<PalletMetadata>) -> RuntimeMetadataV15 {
|
||||||
RuntimeMetadataV14::new(
|
RuntimeMetadataV15::new(
|
||||||
pallets,
|
pallets,
|
||||||
ExtrinsicMetadata {
|
ExtrinsicMetadata {
|
||||||
ty: meta_type::<()>(),
|
ty: meta_type::<()>(),
|
||||||
@@ -101,6 +104,7 @@ fn pallets_to_metadata(pallets: Vec<PalletMetadata>) -> RuntimeMetadataV14 {
|
|||||||
signed_extensions: vec![],
|
signed_extensions: vec![],
|
||||||
},
|
},
|
||||||
meta_type::<()>(),
|
meta_type::<()>(),
|
||||||
|
vec![],
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,8 @@
|
|||||||
// see LICENSE for license details.
|
// see LICENSE for license details.
|
||||||
|
|
||||||
use frame_metadata::{
|
use frame_metadata::{
|
||||||
RuntimeMetadataPrefixed, StorageEntryMetadata, StorageEntryModifier, StorageEntryType,
|
v15::{StorageEntryMetadata, StorageEntryModifier, StorageEntryType},
|
||||||
|
RuntimeMetadataPrefixed,
|
||||||
};
|
};
|
||||||
use scale_info::meta_type;
|
use scale_info::meta_type;
|
||||||
|
|
||||||
|
|||||||
@@ -7,8 +7,11 @@ mod metadata_test_runner;
|
|||||||
mod pallet_metadata_test_runner;
|
mod pallet_metadata_test_runner;
|
||||||
|
|
||||||
use frame_metadata::{
|
use frame_metadata::{
|
||||||
v14::RuntimeMetadataV14, ExtrinsicMetadata, PalletMetadata, PalletStorageMetadata,
|
v15::{
|
||||||
RuntimeMetadataPrefixed, StorageEntryMetadata,
|
ExtrinsicMetadata, PalletMetadata, PalletStorageMetadata, RuntimeMetadataV15,
|
||||||
|
StorageEntryMetadata,
|
||||||
|
},
|
||||||
|
RuntimeMetadataPrefixed,
|
||||||
};
|
};
|
||||||
use scale_info::{meta_type, IntoPortable, TypeInfo};
|
use scale_info::{meta_type, IntoPortable, TypeInfo};
|
||||||
|
|
||||||
@@ -28,7 +31,7 @@ pub fn generate_metadata_from_pallets_custom_dispatch_error<DispatchError: TypeI
|
|||||||
signed_extensions: vec![],
|
signed_extensions: vec![],
|
||||||
};
|
};
|
||||||
|
|
||||||
// Construct metadata manually from our types (See `RuntimeMetadataV14::new()`).
|
// Construct metadata manually from our types (See `RuntimeMetadataV15::new()`).
|
||||||
// Add any extra types we need to the registry.
|
// Add any extra types we need to the registry.
|
||||||
let mut registry = scale_info::Registry::new();
|
let mut registry = scale_info::Registry::new();
|
||||||
let pallets = registry.map_into_portable(pallets);
|
let pallets = registry.map_into_portable(pallets);
|
||||||
@@ -48,11 +51,12 @@ pub fn generate_metadata_from_pallets_custom_dispatch_error<DispatchError: TypeI
|
|||||||
// Metadata needs to contain this DispatchError, since codegen looks for it.
|
// Metadata needs to contain this DispatchError, since codegen looks for it.
|
||||||
registry.register_type(&meta_type::<DispatchError>());
|
registry.register_type(&meta_type::<DispatchError>());
|
||||||
|
|
||||||
let metadata = RuntimeMetadataV14 {
|
let metadata = RuntimeMetadataV15 {
|
||||||
types: registry.into(),
|
types: registry.into(),
|
||||||
pallets,
|
pallets,
|
||||||
extrinsic,
|
extrinsic,
|
||||||
ty,
|
ty,
|
||||||
|
apis: vec![],
|
||||||
};
|
};
|
||||||
|
|
||||||
RuntimeMetadataPrefixed::from(metadata)
|
RuntimeMetadataPrefixed::from(metadata)
|
||||||
@@ -86,6 +90,7 @@ pub fn generate_metadata_from_storage_entries(
|
|||||||
calls: None,
|
calls: None,
|
||||||
event: None,
|
event: None,
|
||||||
error: None,
|
error: None,
|
||||||
|
docs: vec![],
|
||||||
};
|
};
|
||||||
|
|
||||||
generate_metadata_from_pallets(vec![pallet])
|
generate_metadata_from_pallets(vec![pallet])
|
||||||
|
|||||||
Reference in New Issue
Block a user