180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#!/bin/sh 280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru# 380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru# Copyright 2012 Intel Inc. 480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru# 580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru# Use of this source code is governed by a BSD-style license that can be 680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru# found in the LICENSE file. 780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru# 880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru# This script builds and runs GM in current workspace with another Skia 980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru# revision user specifies, and then compares their results. This script is 1080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru# useful when developers want to know whether their changes would cause any 1180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru# regression. 1280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru# 1380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru# As the name of this script tells, it only works for git repository. :) 1480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru# 1580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru# Usage: 1680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru# Put this script into where your PATH can find it. 1780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru# And then invoke: 1880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru# $ git skia-verify [sha1-to-compare-default-is-HEAD^] 1980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru# It would delete {before,after,diff} directory under the current directory, 2080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru# so be warned! 2180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru# After it's done, check out diff/index.html for the possible differences. 2280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 2380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 2480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querufunction say() { 2580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru # set color to yellow 2680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru tput setaf 3 2780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru echo $1 2880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru tput sgr0 2980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru} 3080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 3180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querufunction warn() { 3280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru # set color to red 3380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru tput setaf 1 3480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru echo $1 3580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru tput sgr0 3680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru} 3780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 3880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste QueruREVISION="HEAD^" 3980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 4080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruif [[ $# -eq 1 ]]; 4180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruthen 4280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru REVISION="$1" 4380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querufi 4480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 4580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querutput clear 4680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 4780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querusay "Checking sanity..." 4880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querugit diff --exit-code > /dev/null 4980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruif [[ $? -ne 0 ]]; 5080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruthen 5180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru warn "You have uncommitted changes!" 5280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru exit 1 5380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querufi 5480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querugit diff --cached --exit-code > /dev/null 5580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruif [[ $? -ne 0 ]]; 5680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruthen 5780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru warn "You have uncommitted changes!" 5880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru exit 1 5980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querufi 6080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 6180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querusay "Preparing Directories..." 6280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querurm -rf {before,after,diff} 6380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querumkdir {before,after,diff} 6480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 6580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste QueruPREVIOUS_BRANCH=`git branch --no-color | grep "^*" | awk '{ print $2}'` 6680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 6780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querusay "Running GM for current revision..." 6880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru./gyp_skia 6980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querumake BUILDTYPE=Release -j10 7080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruif [[ $? -ne 0 ]]; 7180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruthen 7280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru warn "Failed to compile!" 7380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru exit 1 7480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querufi 7580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru./out/Release/gm -w after 7680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 7780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querusay "Running GM for revision $REVISION..." 7880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru# we run the test in a detached branch 7980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querugit checkout --detach "$REVISION" 8080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru./gyp_skia 8180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querumake BUILDTYPE=Release -j10 8280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruif [[ $? -ne 0 ]]; 8380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruthen 8480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru warn "Failed to compile!" 8580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru say "Back to original revision..." 8680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru git checkout "$PREVIOUS_BRANCH" 8780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru exit 1 8880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querufi 8980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru./out/Release/gm -w before 9080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 9180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querusay "Back to original revision..." 9280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querugit checkout "$PREVIOUS_BRANCH" 9380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 9480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querusay "Comparing..." 9580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru./out/Release/skdiff before after diff 96