fix for when runtime API field name is _ (#1191)

* fix for when runtime API field name is _

* add a test

* formatting

---------

Co-authored-by: Tadeo hepperle <tadeo@do-mix.de>
This commit is contained in:
James Wilson
2023-10-05 15:16:15 +02:00
committed by GitHub
parent e91d0c7b37
commit 919b866c0f
5 changed files with 62 additions and 9 deletions
+14 -4
View File
@@ -7,12 +7,12 @@ mod metadata_test_runner;
use frame_metadata::{
v15::{
CustomMetadata, ExtrinsicMetadata, OuterEnums, PalletMetadata, PalletStorageMetadata,
RuntimeMetadataV15, StorageEntryMetadata,
RuntimeApiMetadata, RuntimeMetadataV15, StorageEntryMetadata,
},
RuntimeMetadataPrefixed,
};
use generate_custom_metadata::dispatch_error::ArrayDispatchError;
use scale_info::{meta_type, IntoPortable, TypeInfo};
use scale_info::{form::PortableForm, meta_type, IntoPortable, TypeInfo};
pub use metadata_test_runner::MetadataTestRunner;
@@ -21,6 +21,7 @@ pub use metadata_test_runner::MetadataTestRunner;
/// type matching the generic type param provided.
pub fn generate_metadata_from_pallets_custom_dispatch_error<DispatchError: TypeInfo + 'static>(
pallets: Vec<PalletMetadata>,
runtime_apis: Vec<RuntimeApiMetadata<PortableForm>>,
) -> RuntimeMetadataPrefixed {
// We don't care about the extrinsic type.
let extrinsic = ExtrinsicMetadata {
@@ -60,7 +61,7 @@ pub fn generate_metadata_from_pallets_custom_dispatch_error<DispatchError: TypeI
pallets,
extrinsic,
ty,
apis: vec![],
apis: runtime_apis,
outer_enums: OuterEnums {
call_enum_ty: runtime_call,
event_enum_ty: runtime_event,
@@ -78,7 +79,16 @@ pub fn generate_metadata_from_pallets_custom_dispatch_error<DispatchError: TypeI
/// We default to a useless extrinsic type, and register a fake `DispatchError`
/// type so that codegen is happy with the metadata generated.
pub fn generate_metadata_from_pallets(pallets: Vec<PalletMetadata>) -> RuntimeMetadataPrefixed {
generate_metadata_from_pallets_custom_dispatch_error::<ArrayDispatchError>(pallets)
generate_metadata_from_pallets_custom_dispatch_error::<ArrayDispatchError>(pallets, vec![])
}
/// Given some runtime API metadata, generate a [`RuntimeMetadataPrefixed`] struct.
/// We default to a useless extrinsic type, and register a fake `DispatchError`
/// type so that codegen is happy with the metadata generated.
pub fn generate_metadata_from_runtime_apis(
runtime_apis: Vec<RuntimeApiMetadata<PortableForm>>,
) -> RuntimeMetadataPrefixed {
generate_metadata_from_pallets_custom_dispatch_error::<ArrayDispatchError>(vec![], runtime_apis)
}
/// Given some storage entries, generate a [`RuntimeMetadataPrefixed`] struct.