#!/bin/bash
#
# Minimizer script for manual test case minimization.
#
# Usage:
#
#  This script can be used to minimize a dumped reproducer. For instance, if you
#  ran the fuzz test from the codelab like this:
#
#    FUZZTEST_REPRODUCERS_OUT_DIR=/tmp/reproducers \
#    bazel run --config=fuzztest :escaping_test \
#      -- --gunit_fuzz=UnescapingAStringNeverTriggersUndefinedBehavior
#
#  Then when a crash is found, the crashing input is saved to a file and you
#  will see something like this on the terminal:
#
#    [*] Reproducer file written to: /tmp/reproducers/r3pr0dUc3r
#
#  In order to minimize this reproducer input file, run:
#
#    FUZZTEST_MINIMIZE_REPRODUCER=/tmp/reproducers/r3pr0dUc3r \
#    bazel run --config=fuzztest :escaping_test \
#      --run_under=@com_google_fuzztest//tools:minimizer \
#      -- --gunit_fuzz=UnescapingAStringNeverTriggersUndefinedBehavior
#
#  This will try to find smaller and smaller inputs until you manually stop the
#  process with Ctrl-C. When you do, you'll get a message like:
#
#    Find the smallest reproducer at:
#
#    /tmp/reproducers/r3pr0dUc3r-min-0008

set -u

readonly ORIGINAL_REPRODUCER="${FUZZTEST_MINIMIZE_REPRODUCER}"

for i in {0001..9999}; do
  echo
  echo "╔════════════════════════════════════════════════╗"
  echo "║ Minimization round: ${i}                       ║"
  echo "╚════════════════════════════════════════════════╝"
  echo

  TEMP_DIR=$(mktemp -d)

  FUZZTEST_REPRODUCERS_OUT_DIR="${TEMP_DIR}" \
  FUZZTEST_MINIMIZE_REPRODUCER="${FUZZTEST_MINIMIZE_REPRODUCER}" \
  "$@" \
  --nosymbolize_stacktrace

  if [ $? -eq 130 ]; then
    echo
    echo "╔═══════════════════════════════════════════════╗"
    echo "║ Minimization terminated.                      ║"
    echo "╚═══════════════════════════════════════════════╝"
    echo
    echo "Find the smallest reproducer at:"
    echo
    echo "${FUZZTEST_MINIMIZE_REPRODUCER}"

    rm -rf "${TEMP_DIR}"
    break
  fi

  SMALLER_REPRODUCER=$(find "${TEMP_DIR}" -type f)
  NEW_NAME="${ORIGINAL_REPRODUCER}-min-${i}"
  mv "${SMALLER_REPRODUCER}" "${NEW_NAME}"
  FUZZTEST_MINIMIZE_REPRODUCER="${NEW_NAME}"

  rm -rf "${TEMP_DIR}"
done
