generate-snapshot-test-cases
1 #!/bin/bash 2 3 SNAPSHOTS_ROOT="crates/amaru/tests/snapshots" 4 BASE_TESTS_DIR="crates/amaru/tests" 5 6 # Check if snapshots directory exists 7 if [[ ! -d "$SNAPSHOTS_ROOT" ]]; then 8 echo "Error: Directory $SNAPSHOTS_ROOT does not exist" 9 exit 1 10 fi 11 12 # Iterate through network directories 13 for NETWORK_PATH in "$SNAPSHOTS_ROOT"/*; do 14 if [[ -d "$NETWORK_PATH" ]]; then 15 NETWORK_NAME=$(basename "$NETWORK_PATH") 16 NETWORK_TESTS_DIR="$BASE_TESTS_DIR/snapshots/$NETWORK_NAME" 17 DEST_PATH="$NETWORK_TESTS_DIR/generated_compare_snapshot_test_cases.incl" 18 19 # Ensure network-specific test directory exists 20 mkdir -p "$NETWORK_TESTS_DIR" 21 22 # Reset TEST_CASES for this network 23 TEST_CASES=() 24 25 # Collect all test cases for this network 26 for FILE_PATH in "$NETWORK_PATH"/*; do 27 if [[ -f "$FILE_PATH" ]]; then 28 FILE_NAME=$(basename "$FILE_PATH") 29 30 # Check if filename matches pattern: summary__rewards_summary_*.snap 31 if [[ "$FILE_NAME" =~ ^summary__rewards_summary_([0-9]+)\.snap$ ]]; then 32 EPOCH="${BASH_REMATCH[1]}" 33 TEST_CASES+=("$NETWORK_NAME:$EPOCH") 34 fi 35 fi 36 done 37 38 # Skip if no test cases found 39 if [[ ${#TEST_CASES[@]} -eq 0 ]]; then 40 echo "No test cases found for network: $NETWORK_NAME" 41 continue 42 fi 43 44 # Sort test cases 45 IFS=$'\n' TEST_CASES=($(sort <<<"${TEST_CASES[*]}")) 46 unset IFS 47 48 # Create/truncate the output file 49 > "$DEST_PATH" 50 51 # Write test cases to file 52 for TEST_CASE in "${TEST_CASES[@]}"; do 53 NETWORK="${TEST_CASE%:*}" 54 EPOCH="${TEST_CASE#*:}" 55 56 echo "#[test_case($EPOCH)]" >> "$DEST_PATH" 57 done 58 59 # Append the test function content 60 cat >> "$DEST_PATH" << EOF 61 #[ignore] 62 pub fn compare_snapshot_$NETWORK_NAME(epoch: u64) { 63 let epoch = Epoch::from(epoch); 64 compare_snapshot(epoch) 65 } 66 EOF 67 68 echo "✅ Generated test cases for '$NETWORK_NAME' at: $DEST_PATH" 69 fi 70 done