#!/bin/bash # Include our configuration . ${PREVIOUS_PWD}/CI/ft-tests.config # Arguments FONT=$1 SIZE=$2 COMMIT_A=$3 COMMIT_B=$4 # This script generates diffs and html reports from the metrics previously # generated. EXIT=0 metrics_dir="$(basename ${FONT})/${SIZE}/" diff_dir="${TEST_OUTDIR}/${COMMIT_A}_${COMMIT_B}_diffs/${metrics_dir}" mkdir -p "${diff_dir}" OUTDIR_A="${TEST_OUTDIR}/${COMMIT_A}/$(basename ${FONT})/${SIZE}/" OUTDIR_B="${TEST_OUTDIR}/${COMMIT_B}/$(basename ${FONT})/${SIZE}/" RELATIVE_OUTDIR_A="${COMMIT_A}/$(basename ${FONT})/${SIZE}/" RELATIVE_OUTDIR_B="${COMMIT_B}/$(basename ${FONT})/${SIZE}/" # Function below generates a page to compare images. The image should change # between the two versions on mouse over to easily spot differences. function write_img_comp() { echo "

Comparison of $(basename $1) between commits ${COMMIT_A} and ${COMMIT_B}

" } # Here we start generating html report. It is just a simple table of pass / fail # results. echo "

Freetype2 Difference Report

Commit A: ${COMMIT_A} Commit B: ${COMMIT_B}

Font: $(basename $1)

Size: $2

" PASS=() FAIL=() FILES=${OUTDIR_A}/* for f in $FILES do filename=$(basename $f) extension="${filename##*.}" # If is png compare with imagick if [[ "$extension" == "png" ]]; then diif_cmd=$(compare -metric AE -highlight-color Red -lowlight-color PaleGreen $f ${OUTDIR_B}/$(basename $f)\ "${diff_dir}/$(basename $f .png)_diff.png" &> /dev/null) result=$? # Else if txt compare with else diif_cmd=$(diff $f ${OUTDIR_B}/$(basename $f) &>\ $diff_dir/$(basename $f .$extension).diff) # we only care about return result result=$? fi # Generate approriate diff page PAGE="$(basename $f .$extension)_${COMMIT_A}_${COMMIT_B}_diff.html" if [ "$result" -eq "0" ]; then PASS+="$f " else if [[ "$extension" == "png" ]]; then write_img_comp $f &> "${TEST_OUTDIR}/${COMMIT_A}_${COMMIT_B}_diffs/$PAGE" else DISPLAY=-1 pretty-diff $f ${OUTDIR_B}/$(basename $f) mv /tmp/diff.html "${TEST_OUTDIR}/${COMMIT_A}_${COMMIT_B}_diffs/$PAGE" fi FAIL+="$f " fi done # Below we fill out the results table echo "" for f in $FAIL do filename=$(basename $f) extension="${filename##*.}" if [[ "$filename" != "bench.txt" ]]; then EXIT=1 fi PAGE="$(basename $f .$extension).html" echo " " done echo "" for f in $PASS do echo " " done echo "
FAIL
$(basename $f)
PASS
$(basename $f)
" # Move our tests results into dir so html refrences work cp -R ${TEST_OUTDIR}/${COMMIT_A}/ ${TEST_OUTDIR}/${COMMIT_A}_${COMMIT_B}_diffs &> /dev/null cp -R ${TEST_OUTDIR}/${COMMIT_B}/ ${TEST_OUTDIR}/${COMMIT_A}_${COMMIT_B}_diffs &> /dev/null exit $EXIT