v0.3.4-pre.005

This commit is contained in:
2026-08-30 22:17:47 +02:00
parent eb6dbc31e8
commit 50d4142797
10 changed files with 766 additions and 31 deletions

View File

@@ -1,5 +1,5 @@
// file: crates/ksp-store-postgres-lib/tests/dependency_boundary.rs
// version: 18
// version: 19
#![warn(missing_docs)]
#![deny(unreachable_pub)]
@@ -152,7 +152,7 @@ fn pre_003_v002_schema_is_complete_without_account_trait_or_write_dispatch() {
}
#[test]
fn pre_004_raw_account_read_sql_and_mapping_remain_backend_private_and_read_only() {
fn pre_005_raw_account_acquisition_is_atomic_idempotent_and_keeps_later_scope_closed() {
let crate_root = include_str!("../src/lib.rs");
let raw = include_str!("../src/raw_account.rs");
let runtime = include_str!("../src/runtime.rs");
@@ -161,19 +161,27 @@ fn pre_004_raw_account_read_sql_and_mapping_remain_backend_private_and_read_only
for required in [
"GET_ACCOUNT_STATE_SQL",
"GET_ACCOUNT_OBSERVATION_SQL",
"slot::text AS slot_text",
"lamports::text AS lamports_text",
"rent_epoch::text AS rent_epoch_text",
"write_version::text AS write_version_text",
"INSERT_ACCOUNT_STATE_SQL",
"INSERT_ACCOUNT_OBSERVATION_SQL",
"LOCK_ACCOUNT_STATE_SQL",
"LOCK_ACCOUNT_OBSERVATION_SQL",
"ON CONFLICT (pubkey, slot, state_hash) DO NOTHING",
"ON CONFLICT (observation_key) DO NOTHING",
"FOR UPDATE",
"persist_raw_account_acquisition",
"raw_account_states_equal",
"RawAccountState::try_new",
"RawAccountObservation::new",
"PostgresBackendErrorKind::Conflict",
"PostgresBackendErrorKind::DataInvalid",
"PostgresBackendErrorKind::WrongNetwork",
"PostgresBackendErrorKind::WriteFailed",
] {
assert!(raw.contains(required), "missing private RAW account read mapping contract: {required}");
assert!(raw.contains(required), "missing private RAW account acquisition contract: {required}");
}
for forbidden in ["INSERT INTO", "UPDATE ", "DELETE FROM", "ON CONFLICT", "FOR UPDATE", " OFFSET ", "list_raw_account_states"] {
assert!(!raw.contains(forbidden), "pre.004 account module contains write/pagination material: {forbidden}");
assert!(runtime.contains("pub async fn persist_raw_account_acquisition"));
for forbidden in ["UPDATE ", "DELETE FROM", "ON CONFLICT DO UPDATE", " OFFSET ", "list_raw_account_states", "record_raw_account_observation"] {
assert!(!raw.contains(forbidden), "pre.005 account module contains later/destructive scope: {forbidden}");
}
for forbidden in [
"impl ksp_store_api::RawAccountStateRead for PostgresBackend",
@@ -181,10 +189,10 @@ fn pre_004_raw_account_read_sql_and_mapping_remain_backend_private_and_read_only
"impl ksp_store_api::RawAccountObservationRead for PostgresBackend",
"impl ksp_store_api::RawAccountObservationWrite for PostgresBackend",
] {
assert!(!runtime.contains(forbidden), "pre.004 opened RawAccount trait scope prematurely: {forbidden}");
assert!(!runtime.contains(forbidden), "pre.005 opened RawAccount trait scope prematurely: {forbidden}");
}
for forbidden in ["std::env", "dotenv", "ksp_store_lib", "ksp_config_lib"] {
assert!(!raw.contains(forbidden), "RAW account module contains forbidden ownership material: {forbidden}");
for forbidden in ["std::env", "dotenv", "ksp_store_lib", "ksp_config_lib", "sqlx::", "SELECT *"] {
assert!(!raw.contains(forbidden), "RAW account module contains forbidden ownership/query material: {forbidden}");
}
return;
}

View File

@@ -1,5 +1,5 @@
// file: crates/ksp-store-postgres-lib/tests/public_api.rs
// version: 10
// version: 11
#![warn(missing_docs)]
#![deny(unreachable_pub)]
@@ -82,6 +82,12 @@ fn pre_004_raw_account_read_bridge_uses_only_backend_independent_models() {
return;
}
#[test]
fn pre_005_raw_account_acquisition_bridge_uses_only_backend_independent_models_and_outcomes() {
let _acquisition = ksp_store_postgres_lib::PostgresBackend::persist_raw_account_acquisition;
return;
}
#[test]
fn pre_004_raw_read_bridge_uses_only_backend_independent_models() {
let _get = ksp_store_postgres_lib::PostgresBackend::get_raw_transaction;