blob: 1969562c6d7bb1d7a2ef710f8be43f6a24561482 [file] [log] [blame] [edit]
#!/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