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