Add tests for #835

Also add ErrnoGuard before `isatty` call, because apparently it can set
errno to 25 (ENOTTY).
This commit is contained in:
Martin Hořeňovský 2017-03-06 22:07:33 +01:00
parent 613e1466f9
commit ace70407a2
7 changed files with 92 additions and 12 deletions

View File

@ -9,6 +9,7 @@
#define TWOBLUECUBES_CATCH_CONSOLE_COLOUR_IMPL_HPP_INCLUDED #define TWOBLUECUBES_CATCH_CONSOLE_COLOUR_IMPL_HPP_INCLUDED
#include "catch_console_colour.hpp" #include "catch_console_colour.hpp"
#include "catch_errno_guard.hpp"
namespace Catch { namespace Catch {
namespace { namespace {
@ -148,6 +149,7 @@ namespace {
}; };
IColourImpl* platformColourInstance() { IColourImpl* platformColourInstance() {
ErrnoGuard guard;
Ptr<IConfig const> config = getCurrentContext().getConfig(); Ptr<IConfig const> config = getCurrentContext().getConfig();
UseColour::YesOrNo colourMode = config UseColour::YesOrNo colourMode = config
? config->useColour() ? config->useColour()

View File

@ -3,6 +3,17 @@
<exe-name> is a <version> host application. <exe-name> is a <version> host application.
Run with -? for options Run with -? for options
-------------------------------------------------------------------------------
#835 -- errno should not be touched by Catch
-------------------------------------------------------------------------------
MiscTests.cpp:<line number>
...............................................................................
MiscTests.cpp:<line number>: FAILED:
CHECK( f() == 0 )
with expansion:
1 == 0
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
'Not' checks that should fail 'Not' checks that should fail
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
@ -890,6 +901,6 @@ with expansion:
"first" == "second" "first" == "second"
=============================================================================== ===============================================================================
test cases: 164 | 119 passed | 43 failed | 2 failed as expected test cases: 165 | 119 passed | 44 failed | 2 failed as expected
assertions: 955 | 851 passed | 86 failed | 18 failed as expected assertions: 957 | 852 passed | 87 failed | 18 failed as expected

View File

@ -48,6 +48,23 @@ PASSED:
with expansion: with expansion:
42 == {?} 42 == {?}
-------------------------------------------------------------------------------
#835 -- errno should not be touched by Catch
-------------------------------------------------------------------------------
MiscTests.cpp:<line number>
...............................................................................
MiscTests.cpp:<line number>: FAILED:
CHECK( f() == 0 )
with expansion:
1 == 0
MiscTests.cpp:<line number>:
PASSED:
REQUIRE( (*__errno_location ()) == 1 )
with expansion:
1 == 1
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
'Not' checks that should fail 'Not' checks that should fail
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
@ -9350,6 +9367,6 @@ MiscTests.cpp:<line number>:
PASSED: PASSED:
=============================================================================== ===============================================================================
test cases: 164 | 118 passed | 44 failed | 2 failed as expected test cases: 165 | 118 passed | 45 failed | 2 failed as expected
assertions: 957 | 851 passed | 88 failed | 18 failed as expected assertions: 959 | 852 passed | 89 failed | 18 failed as expected

View File

@ -48,6 +48,23 @@ PASSED:
with expansion: with expansion:
42 == {?} 42 == {?}
-------------------------------------------------------------------------------
#835 -- errno should not be touched by Catch
-------------------------------------------------------------------------------
MiscTests.cpp:<line number>
...............................................................................
MiscTests.cpp:<line number>: FAILED:
CHECK( f() == 0 )
with expansion:
1 == 0
MiscTests.cpp:<line number>:
PASSED:
REQUIRE( (*__errno_location ()) == 1 )
with expansion:
1 == 1
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
'Not' checks that should fail 'Not' checks that should fail
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
@ -65,10 +82,7 @@ ConditionTests.cpp:<line number>: FAILED:
with expansion: with expansion:
false false
ConditionTests.cpp:<line number>: FAILED:
CHECK_FALSE( true )
=============================================================================== ===============================================================================
test cases: 4 | 3 passed | 1 failed test cases: 5 | 3 passed | 2 failed
assertions: 10 | 6 passed | 4 failed assertions: 11 | 7 passed | 4 failed

View File

@ -1,9 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<testsuitesspanner> <testsuitesspanner>
<testsuite name="<exe-name>" errors="13" failures="76" tests="958" hostname="tbd" time="{duration}" timestamp="{iso8601-timestamp}"> <testsuite name="<exe-name>" errors="13" failures="77" tests="960" hostname="tbd" time="{duration}" timestamp="{iso8601-timestamp}">
<testcase classname="global" name="# A test name that starts with a #" time="{duration}"/> <testcase classname="global" name="# A test name that starts with a #" time="{duration}"/>
<testcase classname="global" name="#542" time="{duration}"/> <testcase classname="global" name="#542" time="{duration}"/>
<testcase classname="global" name="#809" time="{duration}"/> <testcase classname="global" name="#809" time="{duration}"/>
<testcase classname="global" name="#835 -- errno should not be touched by Catch" time="{duration}">
<failure message="1 == 0" type="CHECK">
MiscTests.cpp:<line number>
</failure>
</testcase>
<testcase classname="global" name="'Not' checks that should fail" time="{duration}"> <testcase classname="global" name="'Not' checks that should fail" time="{duration}">
<failure message="false != false" type="CHECK"> <failure message="false != false" type="CHECK">
ConditionTests.cpp:<line number> ConditionTests.cpp:<line number>

View File

@ -50,6 +50,25 @@
</Expression> </Expression>
<OverallResult success="true"/> <OverallResult success="true"/>
</TestCase> </TestCase>
<TestCase name="#835 -- errno should not be touched by Catch" filename="projects/<exe-name>/MiscTests.cpp" >
<Expression success="false" type="CHECK" filename="projects/<exe-name>/MiscTests.cpp" >
<Original>
f() == 0
</Original>
<Expanded>
1 == 0
</Expanded>
</Expression>
<Expression success="true" type="REQUIRE" filename="projects/<exe-name>/MiscTests.cpp" >
<Original>
(*__errno_location ()) == 1
</Original>
<Expanded>
1 == 1
</Expanded>
</Expression>
<OverallResult success="false"/>
</TestCase>
<TestCase name="'Not' checks that should fail" tags="[.][failing][hide]" filename="projects/<exe-name>/ConditionTests.cpp" > <TestCase name="'Not' checks that should fail" tags="[.][failing][hide]" filename="projects/<exe-name>/ConditionTests.cpp" >
<Expression success="false" type="CHECK" filename="projects/<exe-name>/ConditionTests.cpp" > <Expression success="false" type="CHECK" filename="projects/<exe-name>/ConditionTests.cpp" >
<Original> <Original>
@ -9988,7 +10007,7 @@ spanner <OverallResult success="true"/>
</Section> </Section>
<OverallResult success="true"/> <OverallResult success="true"/>
</TestCase> </TestCase>
<OverallResults successes="851" failures="89" expectedFailures="18"/> <OverallResults successes="852" failures="90" expectedFailures="18"/>
</Group> </Group>
<OverallResults successes="851" failures="88" expectedFailures="18"/> <OverallResults successes="852" failures="89" expectedFailures="18"/>
</Catch> </Catch>

View File

@ -16,6 +16,7 @@
#include "../include/internal/catch_xmlwriter.hpp" #include "../include/internal/catch_xmlwriter.hpp"
#include <iostream> #include <iostream>
#include <cerrno>
TEST_CASE( "random SECTION tests", "[.][sections][failing]" ) TEST_CASE( "random SECTION tests", "[.][sections][failing]" )
{ {
@ -393,3 +394,14 @@ TEST_CASE( "This test 'should' fail but doesn't", "[.][failing][!shouldfail]" )
TEST_CASE( "# A test name that starts with a #" ) { TEST_CASE( "# A test name that starts with a #" ) {
SUCCEED( "yay" ); SUCCEED( "yay" );
} }
static int f() {
return 1;
}
TEST_CASE( "#835 -- errno should not be touched by Catch" ) {
errno = 1;
CHECK(f() == 0);
REQUIRE(errno == 1); // Check that f() doesn't touch errno.
}