| #!/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 |