10ddac1f3791efefb2cffdb425f0c600feb7a47e6Jeff Davidson#!/bin/bash
20ddac1f3791efefb2cffdb425f0c600feb7a47e6Jeff Davidson#
30ddac1f3791efefb2cffdb425f0c600feb7a47e6Jeff Davidson# Copyright 2008, Google Inc.
40ddac1f3791efefb2cffdb425f0c600feb7a47e6Jeff Davidson# All rights reserved.
5d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville#
6d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville# Redistribution and use in source and binary forms, with or without
7d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville# modification, are permitted provided that the following conditions are
8d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville# met:
9d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville#
10d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville#     * Redistributions of source code must retain the above copyright
11d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville# notice, this list of conditions and the following disclaimer.
12d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville#     * Redistributions in binary form must reproduce the above
13d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville# copyright notice, this list of conditions and the following disclaimer
14d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville# in the documentation and/or other materials provided with the
15d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville# distribution.
16d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville#     * Neither the name of Google Inc. nor the names of its
17d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville# contributors may be used to endorse or promote products derived from
18d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville# this software without specific prior written permission.
19d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville#
20d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville
320ddac1f3791efefb2cffdb425f0c600feb7a47e6Jeff Davidson# Executes the samples and tests for the Google Test Framework.
330ddac1f3791efefb2cffdb425f0c600feb7a47e6Jeff Davidson
340ddac1f3791efefb2cffdb425f0c600feb7a47e6Jeff Davidson# Help the dynamic linker find the path to the libraries.
350ddac1f3791efefb2cffdb425f0c600feb7a47e6Jeff Davidsonexport DYLD_FRAMEWORK_PATH=$BUILT_PRODUCTS_DIR
360ddac1f3791efefb2cffdb425f0c600feb7a47e6Jeff Davidsonexport DYLD_LIBRARY_PATH=$BUILT_PRODUCTS_DIR
370ddac1f3791efefb2cffdb425f0c600feb7a47e6Jeff Davidson
380ddac1f3791efefb2cffdb425f0c600feb7a47e6Jeff Davidson# Create some executables.
390ddac1f3791efefb2cffdb425f0c600feb7a47e6Jeff Davidsontest_executables=$@
400ddac1f3791efefb2cffdb425f0c600feb7a47e6Jeff Davidson
410ddac1f3791efefb2cffdb425f0c600feb7a47e6Jeff Davidson# Now execute each one in turn keeping track of how many succeeded and failed.
420ddac1f3791efefb2cffdb425f0c600feb7a47e6Jeff Davidsonsucceeded=0
430ddac1f3791efefb2cffdb425f0c600feb7a47e6Jeff Davidsonfailed=0
440ddac1f3791efefb2cffdb425f0c600feb7a47e6Jeff Davidsonfailed_list=()
450ddac1f3791efefb2cffdb425f0c600feb7a47e6Jeff Davidsonfor test in ${test_executables[*]}; do
460ddac1f3791efefb2cffdb425f0c600feb7a47e6Jeff Davidson  "$test"
470ddac1f3791efefb2cffdb425f0c600feb7a47e6Jeff Davidson  result=$?
480ddac1f3791efefb2cffdb425f0c600feb7a47e6Jeff Davidson  if [ $result -eq 0 ]; then
490ddac1f3791efefb2cffdb425f0c600feb7a47e6Jeff Davidson    succeeded=$(( $succeeded + 1 ))
500ddac1f3791efefb2cffdb425f0c600feb7a47e6Jeff Davidson  else
510ddac1f3791efefb2cffdb425f0c600feb7a47e6Jeff Davidson    failed=$(( failed + 1 ))
520ddac1f3791efefb2cffdb425f0c600feb7a47e6Jeff Davidson    failed_list="$failed_list $test"
530ddac1f3791efefb2cffdb425f0c600feb7a47e6Jeff Davidson  fi
540ddac1f3791efefb2cffdb425f0c600feb7a47e6Jeff Davidsondone
550ddac1f3791efefb2cffdb425f0c600feb7a47e6Jeff Davidson
560ddac1f3791efefb2cffdb425f0c600feb7a47e6Jeff Davidson# Report the successes and failures to the console.
570ddac1f3791efefb2cffdb425f0c600feb7a47e6Jeff Davidsonecho "Tests complete with $succeeded successes and $failed failures."
580ddac1f3791efefb2cffdb425f0c600feb7a47e6Jeff Davidsonif [ $failed -ne 0 ]; then
590ddac1f3791efefb2cffdb425f0c600feb7a47e6Jeff Davidson  echo "The following tests failed:"
600ddac1f3791efefb2cffdb425f0c600feb7a47e6Jeff Davidson  echo $failed_list
610ddac1f3791efefb2cffdb425f0c600feb7a47e6Jeff Davidsonfi
620ddac1f3791efefb2cffdb425f0c600feb7a47e6Jeff Davidsonexit $failed
63