#!/usr/bin/env bash set -euo pipefail echo "Running CosmicLedger MVP tests (Python)" # Ensure Python packaging can build (as per requirements) python3 -m build >/tmp/build.log 2>&1 || { echo "Build failed. See /tmp/build.log"; tail -n +1 /tmp/build.log; exit 1; } # Run a minimal cross-node delta replication test using the Python library python3 - << 'PY' from cosmic_ledger.ledger import LocalLedger import os key = b'shared-secret-for-test-1234567890' nodeA = LocalLedger(signer_key=key, node_id='nodeA') nodeB = LocalLedger(signer_key=key, node_id='nodeB') nodeA.register_contract('Telemetry', {'fields': ['id','ts','source','type','payload']}, version=1) # Node A creates a few entries nodeA.add_entry('Telemetry', {'id':'t1','ts':1.0,'source':'rover-1','type':'temp','payload':'22C'}, signer_name='rover-1') nodeA.add_entry('Telemetry', {'id':'t2','ts':2.0,'source':'rover-1','type':'temp','payload':'23C'}, signer_name='rover-1') rootA = nodeA.root() print('NodeA root:', rootA) # Export delta from A delta = nodeA.export_delta(0) print('Delta size:', len(delta)) # B imports delta nodeB.import_delta(delta) rootB = nodeB.root() print('NodeB root after import:', rootB) assert len(nodeA) == len(nodeB), 'Node counts should match after replication' assert rootA == rootB, 'Merkle roots should match after replication' print('Delta replication test passed') PY echo "Tests completed."