Comments (7)
I don't know why haven't hit this before, or why I wasn't paying more attention
during the original discussion, but this seems *extremely* unintuitive. Why
isn't
this the *default* behavior? When I write an "ASSERT_()" I want it to behavie
like
"assert()" might, but limited only to the test case. What are the implementation
challenges to making this happen? I'd much rather have a
"IGNORE_FATAL_FAILURES()"
macro than the proposed macro pattern.
Again, apologies for not bringing this up during the initial discussion, or
missing
it if it was already addressed.
-Chandler
Original comment by [email protected]
on 5 Aug 2008 at 7:35
from googletest.
Chandler, the problem is that gtest needs to compile where exceptions are
turned off,
which rules out throw. long-jump is not an option either as its behavior is
undefined in a C++ program where objects can have non-trivial destructors.
Original comment by [email protected]
on 5 Aug 2008 at 8:02
from googletest.
I suppose an alternative might be to always fork (on *NIX platforms, anyway)
before
running a test, as in death tests, implementing ASSERT* using process death.
That
would cleanly deliver Chandler's desired semantics, I think. Is this too
expensive?
Bob
Original comment by [email protected]
on 5 Aug 2008 at 8:13
from googletest.
fork() is too heavy-handed as it changes the behavior of existing tests when
they
have side effects. We also don't want Google Test's behavior to diverage on
different platforms.
Note that death tests come with some caveats. In particular, fork() doesn't
work
well with threads, and thus cannot be used in the general test runner. fork()
also
makes debugging much harder as now the users need to deal with multiple
processes.
Original comment by [email protected]
on 5 Aug 2008 at 8:21
from googletest.
Original comment by [email protected]
on 30 Sep 2008 at 4:13
- Added labels: Priority-High
- Removed labels: Priority-Medium
from googletest.
Original comment by [email protected]
on 30 Sep 2008 at 4:52
from googletest.
Done in trunk.
Original comment by [email protected]
on 12 Oct 2008 at 3:22
- Changed state: Fixed
from googletest.
Related Issues (20)
- Netbeans IDE hates googletest macros HOT 1
- Hexadecimal Printing in Test Fail messages HOT 1
- Python testing scripts allow binaries under test to write XML output HOT 1
- Need to simplify Python test scripts to pass required env deltas into Subproces calls HOT 2
- Visual Studio 2010 Express does not compile googletest due to tuple issue HOT 3
- google test compilation fails on visual studio 2010 beta HOT 1
- gtest_break_on_failure does not honour EXPECT_FATAL_FAILURE HOT 3
- gtest compile error with STLPort Debug (MSVC++ 9.0) in death tests HOT 8
- define macros to simplify warning suppression HOT 1
- gtest may invoke an ANSI WIn32 API on a Unicode argument. HOT 2
- Enhancement: comparison between containers HOT 2
- Report failing tests to stderr instead of stdout HOT 1
- On SUN Warning: A non-POD object of type ... passed as a variable argument to function "testing::internal::IsNullLiteralHelper(...)". HOT 1
- Death tests don't pass when using FAIL() in a child process on Windows. HOT 5
- 奇怪的tuple 编译错误 HOT 2
- configure.ac:29: error: possibly undefined macro: AC_PROG_LIBTOOL HOT 4
- EXPECT_DEATH test passes but leaves a dumped core from spawned process. HOT 2
- gtest-port_test.cc tries to use testing::Types without looking at GTEST_HAS_TYPED_TEST HOT 1
- gtest should treat - as _ when parsing command line flags HOT 1
- gtest-port.h use of #if prevents compilation with -Wundef HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from googletest.