Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
yangql
googletest
Commits
1f3b098e
Commit
1f3b098e
authored
Apr 03, 2019
by
Gennadiy Civil
Browse files
Merge pull request #2203 from ngie-eign:issue-2189
PiperOrigin-RevId: 241803437
parents
c9e0aed9
67c75ff8
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
150 additions
and
5 deletions
+150
-5
googletest/CMakeLists.txt
googletest/CMakeLists.txt
+3
-0
googletest/Makefile.am
googletest/Makefile.am
+6
-0
googletest/docs/advanced.md
googletest/docs/advanced.md
+4
-2
googletest/src/gtest.cc
googletest/src/gtest.cc
+17
-3
googletest/test/BUILD.bazel
googletest/test/BUILD.bazel
+17
-0
googletest/test/gtest_skip_environment_check_output_test.py
googletest/test/gtest_skip_environment_check_output_test.py
+54
-0
googletest/test/gtest_skip_in_environment_setup_test.cc
googletest/test/gtest_skip_in_environment_setup_test.cc
+49
-0
No files found.
googletest/CMakeLists.txt
View file @
1f3b098e
...
...
@@ -222,6 +222,7 @@ $env:Path = \"$project_bin;$env:Path\"
test/gtest-typed-test2_test.cc
)
cxx_test
(
gtest_unittest gtest_main
)
cxx_test
(
gtest-unittest-api_test gtest
)
cxx_test
(
gtest_skip_in_environment_setup_test gtest_main
)
cxx_test
(
gtest_skip_test gtest_main
)
############################################################
...
...
@@ -262,6 +263,8 @@ $env:Path = \"$project_bin;$env:Path\"
cxx_executable
(
googletest-break-on-failure-unittest_ test gtest
)
py_test
(
googletest-break-on-failure-unittest
)
py_test
(
gtest_skip_environment_check_output_test
)
# Visual Studio .NET 2003 does not support STL with exceptions disabled.
if
(
NOT MSVC OR MSVC_VERSION GREATER 1310
)
# 1310 is Visual Studio .NET 2003
cxx_executable_with_flags
(
...
...
googletest/Makefile.am
View file @
1f3b098e
...
...
@@ -283,6 +283,12 @@ test_gtest_all_test_SOURCES = test/gtest_all_test.cc
test_gtest_all_test_LDADD
=
lib/libgtest_main.la
\
lib/libgtest.la
TESTS
+=
test
/gtest_skip_in_environment_setup_test
check_PROGRAMS
+=
test
/gtest_skip_in_environment_setup_test
test_gtest_skip_in_environment_setup_test_SOURCES
=
test
/gtest_skip_in_environment_setup_test.cc
test_gtest_skip_in_environment_setup_test_LDADD
=
lib/libgtest_main.la
\
lib/libgtest.la
# Tests that fused gtest files compile and work.
FUSED_GTEST_SRC
=
\
fused-src/gtest/gtest-all.cc
\
...
...
googletest/docs/advanced.md
View file @
1f3b098e
...
...
@@ -1289,8 +1289,10 @@ Environment* AddGlobalTestEnvironment(Environment* env);
```
Now, when
`RUN_ALL_TESTS()`
is called, it first calls the
`SetUp()`
method of
the environment object, then runs the tests if there was no fatal failures, and
finally calls
`TearDown()`
of the environment object.
each environment object, then runs the tests if none of the environments
reported fatal failures and
`GTEST_SKIP()`
was not called.
`RUN_ALL_TESTS()`
always calls
`TearDown()`
with each environment object, regardless of whether
or not the tests were run.
It's OK to register multiple environment objects. In this case, their
`SetUp()`
will be called in the order they are registered, and their
`TearDown()`
will be
...
...
googletest/src/gtest.cc
View file @
1f3b098e
...
...
@@ -5254,9 +5254,23 @@ bool UnitTestImpl::RunAllTests() {
ForEach
(
environments_
,
SetUpEnvironment
);
repeater
->
OnEnvironmentsSetUpEnd
(
*
parent_
);
// Runs the tests only if there was no fatal failure during global
// set-up.
if
(
!
Test
::
HasFatalFailure
())
{
// Runs the tests only if there was no fatal failure or skip triggered
// during global set-up.
if
(
Test
::
IsSkipped
())
{
// Emit diagnostics when global set-up calls skip, as it will not be
// emitted by default.
TestResult
&
test_result
=
*
internal
::
GetUnitTestImpl
()
->
current_test_result
();
for
(
int
j
=
0
;
j
<
test_result
.
total_part_count
();
++
j
)
{
const
TestPartResult
&
test_part_result
=
test_result
.
GetTestPartResult
(
j
);
if
(
test_part_result
.
type
()
==
TestPartResult
::
kSkip
)
{
const
std
::
string
&
result
=
test_part_result
.
message
();
printf
(
"%s
\n
"
,
result
.
c_str
());
}
}
fflush
(
stdout
);
}
else
if
(
!
Test
::
HasFatalFailure
())
{
for
(
int
test_index
=
0
;
test_index
<
total_test_suite_count
();
test_index
++
)
{
GetMutableSuiteCase
(
test_index
)
->
Run
();
...
...
googletest/test/BUILD.bazel
View file @
1f3b098e
...
...
@@ -285,6 +285,23 @@ cc_test(
deps
=
[
"//:gtest_main"
],
)
cc_test
(
name
=
"gtest_skip_in_environment_setup_test"
,
size
=
"small"
,
srcs
=
[
"gtest_skip_in_environment_setup_test.cc"
],
deps
=
[
"//:gtest_main"
],
)
py_test
(
name
=
"gtest_skip_environment_check_output_test"
,
size
=
"small"
,
srcs
=
[
"gtest_skip_environment_check_output_test.py"
],
data
=
[
":gtest_skip_in_environment_setup_test"
,
],
deps
=
[
":gtest_test_utils"
],
)
py_test
(
name
=
"googletest-list-tests-unittest"
,
size
=
"small"
,
...
...
googletest/test/gtest_skip_environment_check_output_test.py
0 → 100755
View file @
1f3b098e
#!/usr/bin/env python
#
# Copyright 2019 Google LLC. All Rights Reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above
# copyright notice, this list of conditions and the following disclaimer
# in the documentation and/or other materials provided with the
# distribution.
# * Neither the name of Google Inc. nor the names of its
# contributors may be used to endorse or promote products derived from
# this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
"""Tests Google Test's gtest skip in environment setup behavior.
This script invokes gtest_skip_in_environment_setup_test_ and verifies its
output.
"""
import
gtest_test_utils
# Path to the gtest_skip_in_environment_setup_test binary
EXE_PATH
=
gtest_test_utils
.
GetTestExecutablePath
(
'gtest_skip_in_environment_setup_test'
)
OUTPUT
=
gtest_test_utils
.
Subprocess
([
EXE_PATH
]).
output
# Test.
class
SkipEntireEnvironmentTest
(
gtest_test_utils
.
TestCase
):
def
testSkipEntireEnvironmentTest
(
self
):
self
.
assertIn
(
'Skipping the entire environment'
,
OUTPUT
)
self
.
assertNotIn
(
'FAILED'
,
OUTPUT
)
if
__name__
==
'__main__'
:
gtest_test_utils
.
Main
()
googletest/test/gtest_skip_in_environment_setup_test.cc
0 → 100644
View file @
1f3b098e
// Copyright 2019, Google LLC.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
// * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
// * Neither the name of Google LLC. nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
// This test verifies that skipping in the environment results in the
// testcases being skipped.
#include <iostream>
#include "gtest/gtest.h"
class
SetupEnvironment
:
public
testing
::
Environment
{
public:
void
SetUp
()
override
{
GTEST_SKIP
()
<<
"Skipping the entire environment"
;
}
};
TEST
(
Test
,
AlwaysFails
)
{
EXPECT_EQ
(
true
,
false
);
}
int
main
(
int
argc
,
char
**
argv
)
{
testing
::
InitGoogleTest
(
&
argc
,
argv
);
testing
::
AddGlobalTestEnvironment
(
new
SetupEnvironment
());
return
RUN_ALL_TESTS
();
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment