v0.2.14-pre.005-fix.001

This commit is contained in:
2026-08-28 15:30:31 +02:00
parent 0319794e59
commit bebfc63b75
3 changed files with 136 additions and 18 deletions

View File

@@ -1,5 +1,5 @@
// file: crates/ksp-program-api/tests/release_completeness.rs
// version: 1
// version: 2
//! Release-level completeness canaries for the `0.2.14` Program API foundation.
@@ -67,11 +67,7 @@ fn pre_005_production_module_inventory_is_instruction_only() -> std::io::Result<
#[test]
fn pre_005_public_enum_and_trait_inventory_remains_open_world() {
let sources = [
include_str!("../src/lib.rs"),
include_str!("../src/program_instruction_decode.rs"),
include_str!("../src/program_instruction_decoder.rs"),
];
let sources = [include_str!("../src/lib.rs"), include_str!("../src/program_instruction_decode.rs"), include_str!("../src/program_instruction_decoder.rs")];
let mut public_enums = std::vec::Vec::new();
let mut public_traits = std::vec::Vec::new();
for source in sources {
@@ -87,10 +83,7 @@ fn pre_005_public_enum_and_trait_inventory_remains_open_world() {
}
public_enums.sort_unstable();
public_traits.sort_unstable();
assert_eq!(
public_enums,
std::vec!["pub enum ProgramInstructionDecodeOutcome<Decoded> {", "pub enum ProgramInstructionRecognition {"]
);
assert_eq!(public_enums, std::vec!["pub enum ProgramInstructionDecodeOutcome<Decoded> {", "pub enum ProgramInstructionRecognition {"]);
assert_eq!(public_traits, std::vec!["pub trait ProgramInstructionDecoder: Send + Sync {"]);
let decode_source = include_str!("../src/program_instruction_decode.rs");
assert!(decode_source.contains("#[non_exhaustive]\npub enum ProgramInstructionRecognition"));
@@ -100,11 +93,8 @@ fn pre_005_public_enum_and_trait_inventory_remains_open_world() {
#[test]
fn pre_005_production_sources_have_no_registry_preparer_codec_or_runtime_creep() {
let sources = [
include_str!("../src/lib.rs"),
include_str!("../src/program_instruction_decode.rs"),
include_str!("../src/program_instruction_decoder.rs"),
];
let direct_tracing_path = ["tracing", "::"].concat();
let sources = [include_str!("../src/lib.rs"), include_str!("../src/program_instruction_decode.rs"), include_str!("../src/program_instruction_decoder.rs")];
for source in sources {
for forbidden in [
"pub enum ProgramKind",
@@ -120,7 +110,6 @@ fn pre_005_production_sources_have_no_registry_preparer_codec_or_runtime_creep()
"bincode::",
"wincode::",
"ksp_logging_lib::",
"tracing::",
"reqwest::",
"tokio::",
"tonic::",
@@ -133,6 +122,7 @@ fn pre_005_production_sources_have_no_registry_preparer_codec_or_runtime_creep()
] {
assert!(!source.contains(forbidden), "forbidden Program API production surface detected: {forbidden}");
}
assert!(!source.contains(direct_tracing_path.as_str()), "forbidden Program API production direct tracing path detected");
}
return;
}