1#!/bin/sh 2# 3# Copyright 2012 Intel Inc. 4# 5# Use of this source code is governed by a BSD-style license that can be 6# found in the LICENSE file. 7# 8# This script builds and runs GM in current workspace with another Skia 9# revision user specifies, and then compares their results. This script is 10# useful when developers want to know whether their changes would cause any 11# regression. 12# 13# As the name of this script tells, it only works for git repository. :) 14# 15# Usage: 16# Put this script into where your PATH can find it. 17# And then invoke: 18# $ git skia-verify [sha1-to-compare-default-is-HEAD^] 19# It would delete {before,after,diff} directory under the current directory, 20# so be warned! 21# After it's done, check out diff/index.html for the possible differences. 22 23 24function say() { 25 # set color to yellow 26 tput setaf 3 27 echo $1 28 tput sgr0 29} 30 31function warn() { 32 # set color to red 33 tput setaf 1 34 echo $1 35 tput sgr0 36} 37 38REVISION="HEAD^" 39 40if [[ $# -eq 1 ]]; 41then 42 REVISION="$1" 43fi 44 45tput clear 46 47say "Checking sanity..." 48git diff --exit-code > /dev/null 49if [[ $? -ne 0 ]]; 50then 51 warn "You have uncommitted changes!" 52 exit 1 53fi 54git diff --cached --exit-code > /dev/null 55if [[ $? -ne 0 ]]; 56then 57 warn "You have uncommitted changes!" 58 exit 1 59fi 60 61say "Preparing Directories..." 62rm -rf {before,after,diff} 63mkdir {before,after,diff} 64 65PREVIOUS_BRANCH=`git branch --no-color | grep "^*" | awk '{ print $2}'` 66 67say "Running GM for current revision..." 68./gyp_skia 69make BUILDTYPE=Release -j10 70if [[ $? -ne 0 ]]; 71then 72 warn "Failed to compile!" 73 exit 1 74fi 75./out/Release/gm -w after 76 77say "Running GM for revision $REVISION..." 78# we run the test in a detached branch 79git checkout --detach "$REVISION" 80./gyp_skia 81make BUILDTYPE=Release -j10 82if [[ $? -ne 0 ]]; 83then 84 warn "Failed to compile!" 85 say "Back to original revision..." 86 git checkout "$PREVIOUS_BRANCH" 87 exit 1 88fi 89./out/Release/gm -w before 90 91say "Back to original revision..." 92git checkout "$PREVIOUS_BRANCH" 93 94say "Comparing..." 95./out/Release/skdiff before after diff 96