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