blob: c9a6c9da21cd018ab391e8f27560d35e1636bd06 [file] [log] [blame]
#!/bin/sh
#
# Copyright 2012 Intel Inc.
#
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
#
# This script builds and runs GM in current workspace with another Skia
# revision user specifies, and then compares their results. This script is
# useful when developers want to know whether their changes would cause any
# regression.
#
# As the name of this script tells, it only works for git repository. :)
#
# Usage:
# Put this script into where your PATH can find it.
# And then invoke:
# $ git skia-verify [sha1-to-compare-default-is-HEAD^]
# It would delete {before,after,diff} directory under the current directory,
# so be warned!
# After it's done, check out diff/index.html for the possible differences.
function say() {
# set color to yellow
tput setaf 3
echo $1
tput sgr0
}
function warn() {
# set color to red
tput setaf 1
echo $1
tput sgr0
}
REVISION="HEAD^"
if [[ $# -eq 1 ]];
then
REVISION="$1"
fi
tput clear
say "Checking sanity..."
git diff --exit-code > /dev/null
if [[ $? -ne 0 ]];
then
warn "You have uncommitted changes!"
exit 1
fi
git diff --cached --exit-code > /dev/null
if [[ $? -ne 0 ]];
then
warn "You have uncommitted changes!"
exit 1
fi
say "Preparing Directories..."
rm -rf {before,after,diff}
mkdir {before,after,diff}
PREVIOUS_BRANCH=`git branch --no-color | grep "^*" | awk '{ print $2}'`
say "Running GM for current revision..."
./gyp_skia
make BUILDTYPE=Release -j10
if [[ $? -ne 0 ]];
then
warn "Failed to compile!"
exit 1
fi
./out/Release/gm -w after
say "Running GM for revision $REVISION..."
# we run the test in a detached branch
git checkout --detach "$REVISION"
./gyp_skia
make BUILDTYPE=Release -j10
if [[ $? -ne 0 ]];
then
warn "Failed to compile!"
say "Back to original revision..."
git checkout "$PREVIOUS_BRANCH"
exit 1
fi
./out/Release/gm -w before
say "Back to original revision..."
git checkout "$PREVIOUS_BRANCH"
say "Comparing..."
./out/Release/skdiff before after diff