mirror of
https://github.com/catchorg/Catch2.git
synced 2024-11-22 21:36:11 +01:00
Prevent duplicate test names from being registered
If a test case with the same name as an already registered test case is registered an error is logged to cerr and the program exits (with error level 1)
This commit is contained in:
parent
fd78e0f6df
commit
3fd7dc0218
@ -161,7 +161,7 @@ namespace Catch
|
|||||||
)
|
)
|
||||||
const
|
const
|
||||||
{
|
{
|
||||||
return *m_test == *other.m_test && m_name == other.m_name && m_description == other.m_description;
|
return *m_test == *other.m_test && m_name == other.m_name;
|
||||||
}
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////
|
||||||
@ -171,12 +171,7 @@ namespace Catch
|
|||||||
)
|
)
|
||||||
const
|
const
|
||||||
{
|
{
|
||||||
if( m_name < other.m_name )
|
return m_name < other.m_name;
|
||||||
return true;
|
|
||||||
if( m_name > other.m_name )
|
|
||||||
return false;
|
|
||||||
|
|
||||||
return *m_test < *other.m_test;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -48,6 +48,14 @@ namespace Catch
|
|||||||
m_functions.insert( testInfo );
|
m_functions.insert( testInfo );
|
||||||
m_functionsInOrder.push_back( testInfo );
|
m_functionsInOrder.push_back( testInfo );
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
const TestCaseInfo& prev = *m_functions.find( testInfo );
|
||||||
|
std::cerr << "error: TEST_CASE( \"" << testInfo.getName() << "\" ) already defined.\n"
|
||||||
|
<< "\tFirst seen at " << prev.getFilename() << ":" << prev.getLine() << "\n"
|
||||||
|
<< "\tRedefined at " << testInfo.getFilename() << ":" << testInfo.getLine() << std::endl;
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
@ -281,3 +281,15 @@ TEST_CASE( "./succeeding/unimplemented static bool", "static bools can be evalua
|
|||||||
REQUIRE_FALSE( is_true<false>::value );
|
REQUIRE_FALSE( is_true<false>::value );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Uncomment these tests to produce an error at test registration time
|
||||||
|
/*
|
||||||
|
TEST_CASE( "./sameName", "Tests with the same name are not allowed" )
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
TEST_CASE( "./sameName", "Tests with the same name are not allowed" )
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
*/
|
Loading…
Reference in New Issue
Block a user