diff options
Diffstat (limited to 'test.sh')
-rwxr-xr-x | test.sh | 136 |
1 files changed, 136 insertions, 0 deletions
@@ -0,0 +1,136 @@ +#!/bin/bash +# +# Copyright 2009 Google Inc. All Rights Reserved. +# Author: weasel@google.com (Tim Baverstock) +# +# This program and the accompanying materials are made available under +# the terms of the Common Public License v1.0 which accompanies this +# distribution, and is available at http://www.eclipse.org/legal/cpl-v10.html +# +# This script tests the emma jar from the sources in this directory. +# This script has to be run from its current directory ONLY. +# Sample usages: +# To just test emma.jar: +# ./test.sh + +TESTDIR=/tmp/test-emma/$$ +JAVADIR=$TESTDIR/android3/java +SOURCEDIR=$JAVADIR/com/android/bunnies +mkdir -p $SOURCEDIR + +cat <<END >$SOURCEDIR/Bunny.java +package com.android.bunnies; + +import java.util.Random; + +public class Bunny { + int randomNumber1 = (new Random()).nextInt(); + + int randomNumber2; + + { + Random r = new Random(); + randomNumber2 = r.nextInt(); + } + + int addOne(int a) { + int b = a + 1; + return identity(a + 1) + ? 1 + : 0; + } + + int dontAddOne(int a) { + return a; + } + + boolean identity(int a) { + return a != a; + } + + public static void main(String[] args) { + Bunny thisThing = new Bunny(); + SubBunny thatThing = new SubBunny(); + System.out.println(thisThing.addOne(2)); + System.out.println(thatThing.addOne(2)); + } +} +END +cat <<END >$SOURCEDIR/SubBunny.java +package com.android.bunnies; +import com.android.bunnies.Bunny; +class SubBunny extends Bunny { + int addOne(int a) { + int b = a + 2; + return identity(a) && identity(b) || identity(b) + ? 1 + : 0; + } + + boolean identity(int a) { + return a == a; + } +} +END + +GOLDEN=$TESTDIR/golden.lcov +cat <<END >$GOLDEN +SF:com/android/bunnies/SubBunny.java +FN:5,SubBunny::addOne (int): int +FNDA:1,SubBunny::addOne (int): int +FN:12,SubBunny::identity (int): boolean +FNDA:1,SubBunny::identity (int): boolean +FN:3,SubBunny::SubBunny (): void +FNDA:1,SubBunny::SubBunny (): void +DA:3,1 +DA:5,1 +DA:6,1 +DA:12,1 +end_of_record +SF:com/android/bunnies/Bunny.java +FN:23,Bunny::dontAddOne (int): int +FNDA:0,Bunny::dontAddOne (int): int +FN:27,Bunny::identity (int): boolean +FNDA:1,Bunny::identity (int): boolean +FN:16,Bunny::addOne (int): int +FNDA:1,Bunny::addOne (int): int +FN:5,Bunny::Bunny (): void +FNDA:1,Bunny::Bunny (): void +FN:31,Bunny::main (String []): void +FNDA:1,Bunny::main (String []): void +DA:5,1 +DA:6,1 +DA:11,1 +DA:12,1 +DA:13,1 +DA:16,1 +DA:17,1 +DA:23,0 +DA:27,1 +DA:31,1 +DA:32,1 +DA:33,1 +DA:34,1 +DA:35,1 +end_of_record +END + +javac -g $(find $SOURCEDIR -name \*.java) + +COVERAGE=$TESTDIR/coverage.dat +java -cp dist/emma.jar emmarun -r lcov -cp $JAVADIR \ + -sp $JAVADIR -Dreport.lcov.out.file=$COVERAGE com.android.bunnies.Bunny + +# Don't really need to test these separately, but it's useful to me for now. + +if ! diff <(sort $GOLDEN) <(sort $COVERAGE) >$TESTDIR/diff-sorted; then + echo Tests failed: Additional or missing lines: See $TESTDIR/diff-sorted + exit +fi +if ! diff $GOLDEN $COVERAGE >$TESTDIR/diff-ordered; then + echo Tests failed: same lines, different order: See $TESTDIR/diff-ordered + exit +fi +rm -rf $TESTDIR +echo Tests passed. + |