xref: /aosp_15_r20/external/googletest/googlemock/test/gmock_test_utils.py (revision 481dde660366d6f317d242b6974ef1b20adb843c)
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