aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/gmock/gmock-matchers.h27
-rw-r--r--include/gmock/gmock-more-actions.h10
-rw-r--r--include/gmock/gmock-spec-builders.h5
-rwxr-xr-xrun_tests.py1
-rwxr-xr-xtest/gmock_output_test.py2
-rwxr-xr-xtest/gmock_test_utils.py60
6 files changed, 29 insertions, 76 deletions
diff --git a/include/gmock/gmock-matchers.h b/include/gmock/gmock-matchers.h
index fbbf5811..7f84761e 100644
--- a/include/gmock/gmock-matchers.h
+++ b/include/gmock/gmock-matchers.h
@@ -702,11 +702,11 @@ class AnythingMatcher {
} \
virtual void DescribeTo(::std::ostream* os) const { \
*os << relation " "; \
- UniversalPrinter<Rhs>::Print(rhs_, os); \
+ UniversalPrint(rhs_, os); \
} \
virtual void DescribeNegationTo(::std::ostream* os) const { \
*os << negated_relation " "; \
- UniversalPrinter<Rhs>::Print(rhs_, os); \
+ UniversalPrint(rhs_, os); \
} \
private: \
Rhs rhs_; \
@@ -910,7 +910,7 @@ class StrEqualityMatcher {
if (!case_sensitive_) {
*os << "(ignoring case) ";
}
- UniversalPrinter<StringType>::Print(string_, os);
+ UniversalPrint(string_, os);
}
const StringType string_;
@@ -947,12 +947,12 @@ class HasSubstrMatcher {
// Describes what this matcher matches.
void DescribeTo(::std::ostream* os) const {
*os << "has substring ";
- UniversalPrinter<StringType>::Print(substring_, os);
+ UniversalPrint(substring_, os);
}
void DescribeNegationTo(::std::ostream* os) const {
*os << "has no substring ";
- UniversalPrinter<StringType>::Print(substring_, os);
+ UniversalPrint(substring_, os);
}
private:
@@ -988,12 +988,12 @@ class StartsWithMatcher {
void DescribeTo(::std::ostream* os) const {
*os << "starts with ";
- UniversalPrinter<StringType>::Print(prefix_, os);
+ UniversalPrint(prefix_, os);
}
void DescribeNegationTo(::std::ostream* os) const {
*os << "doesn't start with ";
- UniversalPrinter<StringType>::Print(prefix_, os);
+ UniversalPrint(prefix_, os);
}
private:
@@ -1028,12 +1028,12 @@ class EndsWithMatcher {
void DescribeTo(::std::ostream* os) const {
*os << "ends with ";
- UniversalPrinter<StringType>::Print(suffix_, os);
+ UniversalPrint(suffix_, os);
}
void DescribeNegationTo(::std::ostream* os) const {
*os << "doesn't end with ";
- UniversalPrinter<StringType>::Print(suffix_, os);
+ UniversalPrint(suffix_, os);
}
private:
@@ -1879,11 +1879,11 @@ class ContainerEqMatcher {
void DescribeTo(::std::ostream* os) const {
*os << "equals ";
- UniversalPrinter<StlContainer>::Print(rhs_, os);
+ UniversalPrint(rhs_, os);
}
void DescribeNegationTo(::std::ostream* os) const {
*os << "does not equal ";
- UniversalPrinter<StlContainer>::Print(rhs_, os);
+ UniversalPrint(rhs_, os);
}
template <typename LhsContainer>
@@ -1913,8 +1913,7 @@ class ContainerEqMatcher {
*os << "which has these unexpected elements: ";
printed_header = true;
}
- UniversalPrinter<typename LhsStlContainer::value_type>::
- Print(*it, os);
+ UniversalPrint(*it, os);
}
}
@@ -1932,7 +1931,7 @@ class ContainerEqMatcher {
<< " doesn't have these expected elements: ";
printed_header2 = true;
}
- UniversalPrinter<typename StlContainer::value_type>::Print(*it, os);
+ UniversalPrint(*it, os);
}
}
}
diff --git a/include/gmock/gmock-more-actions.h b/include/gmock/gmock-more-actions.h
index 9a6fe969..6d686cd1 100644
--- a/include/gmock/gmock-more-actions.h
+++ b/include/gmock/gmock-more-actions.h
@@ -198,7 +198,17 @@ ACTION_TEMPLATE(DeleteArg,
// Action Throw(exception) can be used in a mock function of any type
// to throw the given exception. Any copyable value can be thrown.
#if GTEST_HAS_EXCEPTIONS
+
+// Suppresses the 'unreachable code' warning that VC generates in opt modes.
+#ifdef _MSC_VER
+#pragma warning(push) // Saves the current warning state.
+#pragma warning(disable:4702) // Temporarily disables warning 4702.
+#endif
ACTION_P(Throw, exception) { throw exception; }
+#ifdef _MSC_VER
+#pragma warning(pop) // Restores the warning state.
+#endif
+
#endif // GTEST_HAS_EXCEPTIONS
#ifdef _MSC_VER
diff --git a/include/gmock/gmock-spec-builders.h b/include/gmock/gmock-spec-builders.h
index 67c7a697..7038c2e4 100644
--- a/include/gmock/gmock-spec-builders.h
+++ b/include/gmock/gmock-spec-builders.h
@@ -1268,6 +1268,7 @@ class ActionResultHolder {
// Prints the held value as an action's result to os.
void PrintAsActionResult(::std::ostream* os) const {
*os << "\n Returns: ";
+ // T may be a reference type, so we don't use UniversalPrint().
UniversalPrinter<T>::Print(value_, os);
}
@@ -1539,7 +1540,7 @@ class FunctionMockerBase : public UntypedFunctionMockerBase {
*os << "Uninteresting mock function call - ";
DescribeDefaultActionTo(args, os);
*os << " Function call: " << Name();
- UniversalPrinter<ArgumentTuple>::Print(args, os);
+ UniversalPrint(args, os);
}
// Critical section: We must find the matching expectation and the
@@ -1775,7 +1776,7 @@ typename Function<F>::Result FunctionMockerBase<F>::InvokeWith(
}
ss << " Function call: " << Name();
- UniversalPrinter<ArgumentTuple>::Print(args, &ss);
+ UniversalPrint(args, &ss);
// In case the action deletes a piece of the expectation, we
// generate the message beforehand.
diff --git a/run_tests.py b/run_tests.py
index 42dc14bf..5e7b308f 100755
--- a/run_tests.py
+++ b/run_tests.py
@@ -68,7 +68,6 @@ def _Main():
options, args = run_tests_util.ParseArgs('gtest')
test_runner = run_tests_util.TestRunner(
script_dir=SCRIPT_DIR,
- build_dir_var_name='GMOCK_BUILD_DIR',
injected_build_dir_finder=GetGmockBuildDir)
tests = test_runner.GetTestsToRun(args,
options.configurations,
diff --git a/test/gmock_output_test.py b/test/gmock_output_test.py
index 614a58fa..eced8a81 100755
--- a/test/gmock_output_test.py
+++ b/test/gmock_output_test.py
@@ -32,7 +32,7 @@
"""Tests the text output of Google C++ Mocking Framework.
SYNOPSIS
- gmock_output_test.py --gmock_build_dir=BUILD/DIR --gengolden
+ gmock_output_test.py --build_dir=BUILD/DIR --gengolden
# where BUILD/DIR contains the built gmock_output_test_ file.
gmock_output_test.py --gengolden
gmock_output_test.py
diff --git a/test/gmock_test_utils.py b/test/gmock_test_utils.py
index fa896a47..ac3d67ae 100755
--- a/test/gmock_test_utils.py
+++ b/test/gmock_test_utils.py
@@ -51,62 +51,10 @@ sys.path.append(GTEST_TESTS_UTIL_DIR)
import gtest_test_utils # pylint: disable-msg=C6204
-# Initially maps a flag to its default value. After
-# _ParseAndStripGMockFlags() is called, maps a flag to its actual
-# value.
-_flag_map = {'gmock_source_dir': os.path.dirname(sys.argv[0]),
- 'gmock_build_dir': os.path.dirname(sys.argv[0])}
-_gmock_flags_are_parsed = False
-
-
-def _ParseAndStripGMockFlags(argv):
- """Parses and strips Google Test flags from argv. This is idempotent."""
-
- global _gmock_flags_are_parsed
- if _gmock_flags_are_parsed:
- return
-
- _gmock_flags_are_parsed = True
- for flag in _flag_map:
- # The environment variable overrides the default value.
- if flag.upper() in os.environ:
- _flag_map[flag] = os.environ[flag.upper()]
-
- # The command line flag overrides the environment variable.
- i = 1 # Skips the program name.
- while i < len(argv):
- prefix = '--' + flag + '='
- if argv[i].startswith(prefix):
- _flag_map[flag] = argv[i][len(prefix):]
- del argv[i]
- break
- else:
- # We don't increment i in case we just found a --gmock_* flag
- # and removed it from argv.
- i += 1
-
-
-def GetFlag(flag):
- """Returns the value of the given flag."""
-
- # In case GetFlag() is called before Main(), we always call
- # _ParseAndStripGMockFlags() here to make sure the --gmock_* flags
- # are parsed.
- _ParseAndStripGMockFlags(sys.argv)
-
- return _flag_map[flag]
-
-
def GetSourceDir():
"""Returns the absolute path of the directory where the .py files are."""
- return os.path.abspath(GetFlag('gmock_source_dir'))
-
-
-def GetBuildDir():
- """Returns the absolute path of the directory where the test binaries are."""
-
- return os.path.abspath(GetFlag('gmock_build_dir'))
+ return gtest_test_utils.GetSourceDir()
def GetTestExecutablePath(executable_name):
@@ -122,7 +70,7 @@ def GetTestExecutablePath(executable_name):
The absolute path of the test binary.
"""
- return gtest_test_utils.GetTestExecutablePath(executable_name, GetBuildDir())
+ return gtest_test_utils.GetTestExecutablePath(executable_name)
def GetExitStatus(exit_code):
@@ -160,8 +108,4 @@ TestCase = gtest_test_utils.TestCase
def Main():
"""Runs the unit test."""
- # We must call _ParseAndStripGMockFlags() before calling
- # gtest_test_utils.Main(). Otherwise unittest.main it calls will be
- # confused by the --gmock_* flags.
- _ParseAndStripGMockFlags(sys.argv)
gtest_test_utils.Main()