#!/bin/bash
#
# Copyright 2024 The PDFium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
#
# This ia a script to help update reference images for pixel tests and
# corpus tests for non-liunx (or non-agg) platforms. It uses results stored
# in pdfium-gold so one need not generate these locally for the various
# platforms.
#
# Given a "red bot" result, the first step is to identify the failing
# "stdout" test log for the failing test step on that bot (be it pixel
# or corpus).
#
# The next step is to identify the suffix the platform appends to the
# expected test results, for example for the win_xfa_skia bot, this
# is skia_win.
#
# The script will then fetch the build log into a file in the current
# directory named, e.g. skia_win.log. It leaves this file present after
# execution, so that the results can be manually double-checked if desired.
#
# Lastly, the script fetches each of the image files into the current
# directory (A possible improvement is to try and parse out where they
# belong). Move them by hand into the target directories.
#
set -e
if [ $# -ne 2 ] ; then
    echo "Usage: $0 <image_suffix> <log_url>, e.g."
    echo -n "$0 skia_win "
    echo -n "https://logs.chromium.org/logs/pdfium/buildbucket/cr-buildbucket/"
    echo -n "8753735982839766497/+/u/corpus_tests__oneshot_rendering_enabled_/"
    echo "stdout?format=raw"
    exit 1
fi

# Fetch test results
curl -o ./$1.log $2

# Parse log to identify failing tests.
TESTS=`grep 'cache[/\\]builder[/\\]' ./$1.log | grep -v Failed | \
            grep -ho '[A-Za-z0-9_]*[.]pdf' | sed 's/\(.*\)[.]pdf/\1/'`
for TEST in $TESTS ; do
    IDX=0
    while true ; do
        REV=`grep "^Untriaged.*$TEST.pdf.$IDX" ./$1.log | \
                   sed 's/^.*digest=\([0-9a-f]*\).*$/\1/'`
        if [ -z "$REV" ] ; then
            break
        fi
        curl -o ./${TEST}_expected_$1.pdf.$IDX.png \
             https://pdfium-gold.skia.org/img/images/$REV.png
        optipng ./${TEST}_expected_$1.pdf.$IDX.png
        IDX=$(($IDX + 1))
    done
done
