collect_uitest_failures.sh 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #!/bin/bash
  2. set -e
  3. if [ $# -lt 2 ]; then
  4. echo "Usage: $0 <test_log_file> <output_dir>"
  5. exit 1
  6. fi
  7. TEST_LOG="$1"
  8. OUTPUT_DIR="$2"
  9. mkdir -p "$OUTPUT_DIR/reference"
  10. mkdir -p "$OUTPUT_DIR/failed"
  11. mkdir -p "$OUTPUT_DIR/logs"
  12. cp "$TEST_LOG" "$OUTPUT_DIR/logs/test_output.log" || true
  13. echo "Parsing test log for odiff commands..."
  14. grep -E 'odiff ".*" ".*"' "$TEST_LOG" | while IFS= read -r line; do
  15. reference_path=$(echo "$line" | sed -n 's/.*odiff "\([^"]*\)" "\([^"]*\)".*/\1/p')
  16. failed_path=$(echo "$line" | sed -n 's/.*odiff "\([^"]*\)" "\([^"]*\)".*/\2/p')
  17. if [ -f "$reference_path" ]; then
  18. foldername=$(basename "$(dirname "$reference_path")")
  19. filename=$(basename "$reference_path")
  20. mkdir -p "$OUTPUT_DIR/reference/$foldername"
  21. cp "$reference_path" "$OUTPUT_DIR/reference/$foldername/$filename"
  22. echo "Copied reference: $foldername/$filename"
  23. else
  24. echo "Reference not found: $reference_path"
  25. fi
  26. if [ -f "$failed_path" ]; then
  27. foldername=$(basename "$(dirname "$failed_path")")
  28. filename=$(basename "$failed_path")
  29. mkdir -p "$OUTPUT_DIR/failed/$foldername"
  30. cp "$failed_path" "$OUTPUT_DIR/failed/$foldername/$filename"
  31. echo "Copied failed: $foldername/$filename"
  32. else
  33. echo "Failed snapshot not found: $failed_path"
  34. fi
  35. done
  36. reference_count=$(find "$OUTPUT_DIR/reference" -type f 2>/dev/null | wc -l)
  37. failed_count=$(find "$OUTPUT_DIR/failed" -type f 2>/dev/null | wc -l)
  38. echo ""
  39. echo "Collection complete:"
  40. echo " Reference images: $reference_count"
  41. echo " Failed images: $failed_count"
  42. if [ "$reference_count" -eq 0 ] && [ "$failed_count" -eq 0 ]; then
  43. echo "No failed snapshots found in test log"
  44. fi