diff --git a/include/internal/catch_test_case_info.hpp b/include/internal/catch_test_case_info.hpp index e27a084d..782a3342 100644 --- a/include/internal/catch_test_case_info.hpp +++ b/include/internal/catch_test_case_info.hpp @@ -161,7 +161,7 @@ namespace Catch ) 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 { - if( m_name < other.m_name ) - return true; - if( m_name > other.m_name ) - return false; - - return *m_test < *other.m_test; + return m_name < other.m_name; } private: diff --git a/include/internal/catch_test_case_registry_impl.hpp b/include/internal/catch_test_case_registry_impl.hpp index ea30f234..876bdc8d 100644 --- a/include/internal/catch_test_case_registry_impl.hpp +++ b/include/internal/catch_test_case_registry_impl.hpp @@ -48,6 +48,14 @@ namespace Catch m_functions.insert( 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); + } } /////////////////////////////////////////////////////////////////////////// diff --git a/projects/SelfTest/TrickyTests.cpp b/projects/SelfTest/TrickyTests.cpp index 358fa05b..b5b72a42 100644 --- a/projects/SelfTest/TrickyTests.cpp +++ b/projects/SelfTest/TrickyTests.cpp @@ -281,3 +281,15 @@ TEST_CASE( "./succeeding/unimplemented static bool", "static bools can be evalua REQUIRE_FALSE( is_true::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" ) +{ + +} +*/ \ No newline at end of file