Commit Graph

3087 Commits

Author SHA1 Message Date
Enji Cooper
7475ba5039 clang: explicitly enable/disable RTTI support with the compiler
Add `-frtti` to the compiler with the base flags case so that RTTI is
enabled by default with clang. Add its inverse analog,
`cxx_no_rtti_flags` in order to test the case with RTTI off, similar to
gcc.

This reduces the amount of testing/support overhead needed in the
non-RTTI case with clang, as the tests currently fail when these two
features are off with version 1.8.1. This something I used in when
investigating test failures on FreeBSD, as the tests that rely on
RTTI were failing with googletest 1.8.1 on the OS platform.

More investigation is being done to determine how this should be fixed
on FreeBSD 11.2-RELEASE with ports, as the package doesn't currently
compile the tests, and when enabled (based on my WIP diff), the tests
fail in similar ways.

Signed-off-by: Enji Cooper <yaneurabeya@gmail.com>
2019-04-03 21:09:20 -07:00
Gennadiy Civil
1f3b098ef3 Merge pull request #2203 from ngie-eign:issue-2189
PiperOrigin-RevId: 241803437
2019-04-03 17:15:16 -04:00
Abseil Team
c9e0aed90b Googletest export
Typos: "more then" -> "more than".
PiperOrigin-RevId: 241483698
2019-04-03 15:14:17 -04:00
Abseil Team
b617b27718 Googletest export
Add HWASan annotations.

These mirror existing ASan annotations.

HWASan uses memory (address) tagging to detect memory errors:
https://clang.llvm.org/docs/HardwareAssistedAddressSanitizerDesign.html

It inserts a random tag in the MSB of heap and stack allocation addresses. This tag dominates pointer comparison in StackGrowsDown(), making the result non-deterministic, and entirely unrelated to the actual stack growth direction. The function attribute disables this behavior.

The annotations in gtest-printers are there because the printers are used to basically dump memory. The sanitizers may have ideas why this memory should not be accessed, and that is counter productive. In particular, the test may access only part of an array, but in case of a test failure gtest will dump the entire array which may contain uninitialized bytes - that's what SANITIZE_MEMORY annotation is for. There are similar reasons for ADDRESS and THREAD annotations. HWADDRESS in its current implementation can not cause issues there, I believe, but it falls under the same umbrella of tools whose checking should not apply to test printers because it is not the code under test.

PiperOrigin-RevId: 241379822
2019-04-01 15:45:51 -04:00
Gennadiy Civil
2efd659a13 Merge pull request #2163 from ngie-eign:cmake-fix-gtest-binary-prefixing-when-gmock-enabled
PiperOrigin-RevId: 241376090
2019-04-01 15:27:49 -04:00
Abseil Team
d982543131 Googletest export
Remove support for "global" ::string and ::wstring types.
This support existed for legacy codebases that existed from before namespaces
where a thing. It is no longer necessary.

PiperOrigin-RevId: 241335738
2019-04-01 15:05:10 -04:00
Enji Cooper
67c75ff8ba Handle GTEST_SKIP() when calling Environment::SetUp()
gtest prior to this change would completely ignore `GTEST_SKIP()` if
called in `Environment::SetUp()`, instead of bailing out early, unlike
`Test::SetUp()`, which would cause the tests themselves to be skipped.
The only way (prior to this change) to skip the tests would be to
trigger a fatal error via `GTEST_FAIL()`.

Desirable behavior, in this case, when dealing with
`Environment::SetUp()` is to check for prerequisites on a system
(example, kernel supports a particular featureset, e.g., capsicum), and
skip the tests. The alternatives prior to this change would be
undesirable:

- Failing sends the wrong message to the test user, as the result of the
  tests is indeterminate, not failed.
- Having to add per-test class abstractions that override `SetUp()` to
  test for the capsicum feature set, then skip all of the tests in their
  respective SetUp fixtures, would be a lot of human and computational
  work; checking for the feature would need to be done for all of the
  tests, instead of once for all of the tests.

For those reasons, making `Environment::SetUp()` handle `GTEST_SKIP()`,
by not executing the testcases, is the most desirable solution.

In order to properly diagnose what happened when running the tests if
they are skipped, print out the diagnostics in an ad hoc manner.

Update the documentation to note this change and integrate a new test,
gtest_skip_in_environment_setup_test, into the test suite.

This change addresses #2189.

Signed-off-by: Enji Cooper <yaneurabeya@gmail.com>
2019-03-30 11:38:03 -07:00
Enji Cooper
9b6de41b5d Prefix googletest binaries under its own subtree instead of gtest
Building all test binaries under their respective subtrees makes
building the project via cmake easier to grok without additional hacks.
In particular, when dealing with the conversion I proposed in
https://reviews.freebsd.org/D19430 (switching from autotools to cmake),
I ran into unexpected gtest prefixing under the googlemock directory, as
opposed to the googletest directory. Example:

Before: `googlemock/gtest/googletest-break-on-failure-unittest_`
After:  `googletest/googletest-break-on-failure-unittest_`

The latter form is easier to translate to packaging manifests when
building googlemock is disabled, as well as enabled, as the path remains
consistent when the feature flag is disabled.

Signed-off-by: Enji Cooper <yaneurabeya@gmail.com>
2019-03-29 15:00:05 -07:00
Abseil Team
5b752b1947 Googletest export
Update XML and JSON output to be consistent with the standard.

PiperOrigin-RevId: 239833242
2019-03-28 17:56:02 -04:00
Gennadiy Civil
1f64659fb2
Update CONTRIBUTING.md 2019-03-28 17:21:41 -04:00
Gennadiy Civil
1040b342f8
Update CONTRIBUTING.md 2019-03-28 17:21:14 -04:00
Gennadiy Civil
a5532dae75
Merge pull request #2199 from syohex/update-xcode-project-file-again
Update Xcode project file
2019-03-26 10:28:23 -04:00
Syohei YOSHIDA
c651b45281 Update Xcode project file
- Remove files which no longer exists
- Add newer file
2019-03-26 16:39:34 +09:00
Gennadiy Civil
a18ac392d8
Merge pull request #2193 from antismap/patch-1
Note about INSTANTIATE_TEST_SUITE_P / INSTANTIATE_TEST_CASE_P
2019-03-21 15:43:59 -04:00
Gennadiy Civil
d31151a493
Update googletest/docs/advanced.md
Co-Authored-By: antismap <michael.thenault@gmail.com>
2019-03-21 16:20:07 +01:00
Gennadiy Civil
10e98c4f2a Merge pull request #2180 from twam:master
PiperOrigin-RevId: 239404016
2019-03-21 10:43:14 -04:00
Abseil Team
f1883b1824 Googletest export
Remove mention of unused type ProtocolMessage.

PiperOrigin-RevId: 239242706
2019-03-21 10:43:06 -04:00
Abseil Team
a4b63e7efb Googletest export
Action helpers need to pass by const& so that they can work with unique_ptr.

PiperOrigin-RevId: 239062671
2019-03-21 10:42:58 -04:00
antismap
f233360933
Note about INSTANTIATE_TEST_SUITE_P / INSTANTIATE_TEST_CASE_P keyword change
See https://github.com/google/googletest/issues/2065
2019-03-21 14:38:50 +01:00
Gennadiy Civil
f957bd0c25
Merge pull request #2181 from sethraymond/patch-1
DesignDoc Markdown table was broken
2019-03-20 11:52:49 -04:00
Tobias Müller
c3ac2655f7 Remove old_crtdbg_flag_ member if not required 2019-03-19 09:29:48 +01:00
Seth Raymond
1619ebcf29
DesignDoc Markdown table was broken
Added a missing newline
2019-03-15 09:27:08 -04:00
Gennadiy Civil
8b6d3f9c4a Merge pull request #2158 from CarloWood:master
PiperOrigin-RevId: 236716851
2019-03-05 08:39:41 -05:00
Abseil Team
3dd2e841c3 Googletest export
Fix emission of -Wzero-as-null-pointer-constant when comparing integers.

The following code fails to compile:

#pragma clang diagnostic error "-Wzero-as-null-pointer-constant"
void foo() {
  EXPECT_EQ(0, 0);
}

This happens because gtest checks the first argument to EXPECT_EQ and
ASSERT_EQ is a null pointer constant. The magic it does to do this causes the
warning to be emitted.

This patch removes that check. It replaces the explicit check with a Compare
overload that can only be selected when 0 or nullptr is passed on the LHS
with a pointer on the right.

This patch does not suppress -Wzero-as-null-pointer-constant when users
are actually using it as NULL.

PiperOrigin-RevId: 236654634
2019-03-05 08:39:34 -05:00
Abseil Team
a1dd07786b Googletest export
Build gmock cleanly with clang -Wextra-semi and -Wextra-semi-stmt

Extends 56ef07a203 to take -Wc++98-compat-extra-semi
(https://reviews.llvm.org/D43162) and -Wextra-semi-stmt
(https://reviews.llvm.org/D52695) into account.

For https://crbug.com/926235.

PiperOrigin-RevId: 236643095
2019-03-05 08:39:28 -05:00
Abseil Team
db9b85e275 Googletest export
Let embedders customize GTEST_INTERNAL_DEPRECATED().

GTEST_INTERNAL_DEPRECATED is currently used to nudge googletest users to migrate off old TEST_CASE macros to the new TEST_SUITE macros. This move is non-trivial for Chromium (see https://crbug.com/925652), and might be difficult for other big projects with many dependencies.

This CL facilitates moving off of deprecated APIs by making it possible for an embedder to define GTEST_INTERNAL_DEPRECATED() in gtest/internal/custom/gtest-port.h. Example usage:

1) #define GTEST_INTERNAL_DEPRECATED() to nothing, to disable deprecation warnings while migrating off googletest's deprecated APIs. This can be preferable to having to disable all deprecation warnings (-Wno-error=deprecated or -Wno-deprecated-declarations).

2) #define GTEST_INTERNAL_DEPRECATED() for an unsupported compiler.

PiperOrigin-RevId: 236171043
2019-03-01 16:18:24 -05:00
Abseil Team
56ef07a203 Googletest export
Build gmock cleanly with clang -Wextra-semi

For https://crbug.com/926235.
From https://github.com/google/googletest/pull/2139.
Fixes https://github.com/google/googletest/issues/2138.

PiperOrigin-RevId: 235832527
2019-03-01 16:18:17 -05:00
Carlo Wood
fc979623a9 Minor build system fixes. 2019-03-01 08:11:56 +01:00
Abseil Team
efecb0bfa6 Googletest export
Replace more pump'd code with variadic templates.

PiperOrigin-RevId: 235584585
2019-02-25 17:20:00 -05:00
Gennadiy Civil
5154386c5f
Merge pull request #2152 from rsinnet/patch-1
Fix grammatical error in primer.md
2019-02-25 12:43:55 -05:00
Ryan Sinnet
d70cd4e358
Fix grammatical error in primer.md 2019-02-25 08:03:28 -08:00
Gennadiy Civil
37ae1fc5e6 Merge pull request #2147 from ngie-eign:gtest-test-death-test-dont-hardcode-test-name
PiperOrigin-RevId: 235248114
2019-02-22 16:39:33 -05:00
Gennadiy Civil
b6473fcf90 Merge pull request #2126 from ngie-eign:clang-add-more-strict-warnings
PiperOrigin-RevId: 235220570
2019-02-22 16:18:28 -05:00
Enji Cooper
cd09534dec Don't hardcode the filename in CxxExceptionDeathTest.PrintsMessageForStdException
Due to some caveats in the FreeBSD build system and the fact that the
source file is used to compile 2 different death tests with different
flags, I needed (as a shortterm workaround) to copy the test to 2
differently named files.

While this works for compiling the test, as I discovered, this doesn't
work with running `CxxExceptionDeathTest.PrintsMessageForStdException`,
as the testcase hardcodes `googletest-death-test_ex_test.cc`. Use `__FILE__`
when looking for failures, as opposed to looking for the hardcoded name
as it can vary depending on how the test was built.

Signed-off-by: Enji Cooper <yaneurabeya@gmail.com>
2019-02-21 12:10:15 -08:00
Gennadiy Civil
7203f37f57 Merge pull request #2137 from ngie-eign:clang-ignore-sign-conversion
PiperOrigin-RevId: 235012245
2019-02-21 13:14:17 -05:00
Gennadiy Civil
1411d27a94 Merge pull request #2061 from samolisov:building-with-bazel-as-a-dll-on-windows
PiperOrigin-RevId: 234845565
2019-02-20 15:22:43 -05:00
Gennadiy Civil
c5a792d1b6 Merge pull request #2125 from ngie-eign:clang-unused-parameter
PiperOrigin-RevId: 234844287
2019-02-20 15:22:35 -05:00
Gennadiy Civil
c374893023 Merge pull request #2123 from ngie-eign:clang-inconsistent-missing-override
PiperOrigin-RevId: 234840107
2019-02-20 15:22:28 -05:00
misterg
873e479817 Googletest export
Internal Change

PiperOrigin-RevId: 234823465
2019-02-20 13:35:36 -05:00
Abseil Team
0e424c7594 Googletest export
Update gtest-death-test to use new Fuchsia API

Fuchsia has renamed this API and removed the need for several parameters. We now use the newer, simpler API.

PiperOrigin-RevId: 234617715
2019-02-20 13:35:30 -05:00
Gennadiy Civil
6d4d2f06be
Merge pull request #2141 from dspinellis/index-fix
Avoid array index out of range
2019-02-20 13:04:20 -05:00
Diomidis Spinellis
9dc235b59c Avoid array index out of range
Issue: #2140
2019-02-20 00:59:21 +02:00
Enji Cooper
fcf59ca7bf Ignore -Wsign-conversion issues
clang++ compilation when `-Wsign-conversion` is currently broken and the
issues within the code are varied and widespread. For the time being
ignore `-Wsign-conversion` issues, even though some of them are valid
and bleed over into issues that would be found with
`-Wtautological-compare`, et al.

Signed-off-by: Enji Cooper <yaneurabeya@gmail.com>
2019-02-18 19:19:34 -08:00
Enji Cooper
1c22797cd3 Fix clang -Wunused-parameter warnings
Comment out unused method parameters in their relevant definitions.

Signed-off-by: Enji Cooper <yaneurabeya@gmail.com>
2019-02-13 14:38:51 -08:00
Enji Cooper
5388473acf Fix clang -Winconsistent-missing-override warnings
`DescribeTo(..)` and `MatchAndExplain(..)` in `gmock-matchers_test` both
override virtual methods. Remove the `virtual` keyword and apply `override` to
them instead.

Signed-off-by: Enji Cooper <yaneurabeya@gmail.com>
2019-02-13 14:38:51 -08:00
Enji Cooper
2147806d2d Fix clang -Winconsistent-missing-override warnings
`DescribeTo(..)` and `MatchAndExplain(..)` in `gmock-matchers_test` both
override virtual methods. Remove the `virtual` keyword and apply `override` to
them instead.

Signed-off-by: Enji Cooper <yaneurabeya@gmail.com>
2019-02-13 14:38:50 -08:00
Enji Cooper
a4af76cf8c Add cxx_strict_flags for clang to match FreeBSD's WARNS flags
Signed-off-by: Enji Cooper <yaneurabeya@gmail.com>
2019-02-13 14:38:49 -08:00
Gennadiy Civil
d850e14471 Merge pull request #2112 from knuto:pr/fix_null_pointer
PiperOrigin-RevId: 233825166
2019-02-13 17:04:09 -05:00
Gennadiy Civil
54ec41f000 Merge pull request #2121 from ngie-eign:add-dragonflybsd-and-kfreebsd-support
PiperOrigin-RevId: 233789488
2019-02-13 14:07:33 -05:00
Gennadiy Civil
f73b2fb39e Merge pull request #2114 from knuto:pr/libtool_support
PiperOrigin-RevId: 233773676
2019-02-13 14:07:26 -05:00