1*481dde66SAndroid Build Coastguard Worker# Copyright 2006, Google Inc. 2*481dde66SAndroid Build Coastguard Worker# All rights reserved. 3*481dde66SAndroid Build Coastguard Worker# 4*481dde66SAndroid Build Coastguard Worker# Redistribution and use in source and binary forms, with or without 5*481dde66SAndroid Build Coastguard Worker# modification, are permitted provided that the following conditions are 6*481dde66SAndroid Build Coastguard Worker# met: 7*481dde66SAndroid Build Coastguard Worker# 8*481dde66SAndroid Build Coastguard Worker# * Redistributions of source code must retain the above copyright 9*481dde66SAndroid Build Coastguard Worker# notice, this list of conditions and the following disclaimer. 10*481dde66SAndroid Build Coastguard Worker# * Redistributions in binary form must reproduce the above 11*481dde66SAndroid Build Coastguard Worker# copyright notice, this list of conditions and the following disclaimer 12*481dde66SAndroid Build Coastguard Worker# in the documentation and/or other materials provided with the 13*481dde66SAndroid Build Coastguard Worker# distribution. 14*481dde66SAndroid Build Coastguard Worker# * Neither the name of Google Inc. nor the names of its 15*481dde66SAndroid Build Coastguard Worker# contributors may be used to endorse or promote products derived from 16*481dde66SAndroid Build Coastguard Worker# this software without specific prior written permission. 17*481dde66SAndroid Build Coastguard Worker# 18*481dde66SAndroid Build Coastguard Worker# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19*481dde66SAndroid Build Coastguard Worker# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20*481dde66SAndroid Build Coastguard Worker# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 21*481dde66SAndroid Build Coastguard Worker# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22*481dde66SAndroid Build Coastguard Worker# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23*481dde66SAndroid Build Coastguard Worker# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 24*481dde66SAndroid Build Coastguard Worker# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25*481dde66SAndroid Build Coastguard Worker# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26*481dde66SAndroid Build Coastguard Worker# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27*481dde66SAndroid Build Coastguard Worker# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28*481dde66SAndroid Build Coastguard Worker# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29*481dde66SAndroid Build Coastguard Worker 30*481dde66SAndroid Build Coastguard Worker"""Unit test utilities for Google C++ Mocking Framework.""" 31*481dde66SAndroid Build Coastguard Worker 32*481dde66SAndroid Build Coastguard Workerimport os 33*481dde66SAndroid Build Coastguard Worker 34*481dde66SAndroid Build Coastguard Worker# pylint: disable=C6204 35*481dde66SAndroid Build Coastguard Workerfrom googletest.test import gtest_test_utils 36*481dde66SAndroid Build Coastguard Worker 37*481dde66SAndroid Build Coastguard Worker 38*481dde66SAndroid Build Coastguard Workerdef GetSourceDir(): 39*481dde66SAndroid Build Coastguard Worker """Returns the absolute path of the directory where the .py files are.""" 40*481dde66SAndroid Build Coastguard Worker 41*481dde66SAndroid Build Coastguard Worker return gtest_test_utils.GetSourceDir() 42*481dde66SAndroid Build Coastguard Worker 43*481dde66SAndroid Build Coastguard Worker 44*481dde66SAndroid Build Coastguard Workerdef GetTestExecutablePath(executable_name): 45*481dde66SAndroid Build Coastguard Worker """Returns the absolute path of the test binary given its name. 46*481dde66SAndroid Build Coastguard Worker 47*481dde66SAndroid Build Coastguard Worker The function will print a message and abort the program if the resulting file 48*481dde66SAndroid Build Coastguard Worker doesn't exist. 49*481dde66SAndroid Build Coastguard Worker 50*481dde66SAndroid Build Coastguard Worker Args: 51*481dde66SAndroid Build Coastguard Worker executable_name: name of the test binary that the test script runs. 52*481dde66SAndroid Build Coastguard Worker 53*481dde66SAndroid Build Coastguard Worker Returns: 54*481dde66SAndroid Build Coastguard Worker The absolute path of the test binary. 55*481dde66SAndroid Build Coastguard Worker """ 56*481dde66SAndroid Build Coastguard Worker 57*481dde66SAndroid Build Coastguard Worker return gtest_test_utils.GetTestExecutablePath(executable_name) 58*481dde66SAndroid Build Coastguard Worker 59*481dde66SAndroid Build Coastguard Worker 60*481dde66SAndroid Build Coastguard Workerdef GetExitStatus(exit_code): 61*481dde66SAndroid Build Coastguard Worker """Returns the argument to exit(), or -1 if exit() wasn't called. 62*481dde66SAndroid Build Coastguard Worker 63*481dde66SAndroid Build Coastguard Worker Args: 64*481dde66SAndroid Build Coastguard Worker exit_code: the result value of os.system(command). 65*481dde66SAndroid Build Coastguard Worker """ 66*481dde66SAndroid Build Coastguard Worker 67*481dde66SAndroid Build Coastguard Worker if os.name == 'nt': 68*481dde66SAndroid Build Coastguard Worker # On Windows, os.WEXITSTATUS() doesn't work and os.system() returns 69*481dde66SAndroid Build Coastguard Worker # the argument to exit() directly. 70*481dde66SAndroid Build Coastguard Worker return exit_code 71*481dde66SAndroid Build Coastguard Worker else: 72*481dde66SAndroid Build Coastguard Worker # On Unix, os.WEXITSTATUS() must be used to extract the exit status 73*481dde66SAndroid Build Coastguard Worker # from the result of os.system(). 74*481dde66SAndroid Build Coastguard Worker if os.WIFEXITED(exit_code): 75*481dde66SAndroid Build Coastguard Worker return os.WEXITSTATUS(exit_code) 76*481dde66SAndroid Build Coastguard Worker else: 77*481dde66SAndroid Build Coastguard Worker return -1 78*481dde66SAndroid Build Coastguard Worker 79*481dde66SAndroid Build Coastguard Worker 80*481dde66SAndroid Build Coastguard Worker# Exposes utilities from gtest_test_utils. 81*481dde66SAndroid Build Coastguard WorkerSubprocess = gtest_test_utils.Subprocess 82*481dde66SAndroid Build Coastguard WorkerTestCase = gtest_test_utils.TestCase 83*481dde66SAndroid Build Coastguard Workerenviron = gtest_test_utils.environ 84*481dde66SAndroid Build Coastguard WorkerSetEnvVar = gtest_test_utils.SetEnvVar 85*481dde66SAndroid Build Coastguard WorkerPREMATURE_EXIT_FILE_ENV_VAR = gtest_test_utils.PREMATURE_EXIT_FILE_ENV_VAR 86*481dde66SAndroid Build Coastguard Worker 87*481dde66SAndroid Build Coastguard Worker 88*481dde66SAndroid Build Coastguard Workerdef Main(): 89*481dde66SAndroid Build Coastguard Worker """Runs the unit test.""" 90*481dde66SAndroid Build Coastguard Worker 91*481dde66SAndroid Build Coastguard Worker gtest_test_utils.Main() 92