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

View File

@ -3,6 +3,17 @@
<exe-name> is a <version> host application.
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
-------------------------------------------------------------------------------
@ -890,6 +901,6 @@ with expansion:
"first" == "second"
===============================================================================
test cases: 164 | 119 passed | 43 failed | 2 failed as expected
assertions: 955 | 851 passed | 86 failed | 18 failed as expected
test cases: 165 | 119 passed | 44 failed | 2 failed as expected
assertions: 957 | 852 passed | 87 failed | 18 failed as expected

View File

@ -48,6 +48,23 @@ PASSED:
with expansion:
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
-------------------------------------------------------------------------------
@ -9350,6 +9367,6 @@ MiscTests.cpp:<line number>:
PASSED:
===============================================================================
test cases: 164 | 118 passed | 44 failed | 2 failed as expected
assertions: 957 | 851 passed | 88 failed | 18 failed as expected
test cases: 165 | 118 passed | 45 failed | 2 failed as expected
assertions: 959 | 852 passed | 89 failed | 18 failed as expected

View File

@ -48,6 +48,23 @@ PASSED:
with expansion:
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
-------------------------------------------------------------------------------
@ -65,10 +82,7 @@ ConditionTests.cpp:<line number>: FAILED:
with expansion:
false
ConditionTests.cpp:<line number>: FAILED:
CHECK_FALSE( true )
===============================================================================
test cases: 4 | 3 passed | 1 failed
assertions: 10 | 6 passed | 4 failed
test cases: 5 | 3 passed | 2 failed
assertions: 11 | 7 passed | 4 failed

View File

@ -1,9 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<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="#542" 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}">
<failure message="false != false" type="CHECK">
ConditionTests.cpp:<line number>

View File

@ -50,6 +50,25 @@
</Expression>
<OverallResult success="true"/>
</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" >
<Expression success="false" type="CHECK" filename="projects/<exe-name>/ConditionTests.cpp" >
<Original>
@ -9988,7 +10007,7 @@ spanner <OverallResult success="true"/>
</Section>
<OverallResult success="true"/>
</TestCase>
<OverallResults successes="851" failures="89" expectedFailures="18"/>
<OverallResults successes="852" failures="90" expectedFailures="18"/>
</Group>
<OverallResults successes="851" failures="88" expectedFailures="18"/>
<OverallResults successes="852" failures="89" expectedFailures="18"/>
</Catch>

View File

@ -16,6 +16,7 @@
#include "../include/internal/catch_xmlwriter.hpp"
#include <iostream>
#include <cerrno>
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 #" ) {
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.
}