mirror of
				https://github.com/catchorg/Catch2.git
				synced 2025-10-31 20:27:11 +01:00 
			
		
		
		
	Add a matcher that checks exception's message
Only works for exceptions that publicly derive from `std::exception` and the matching is done exactly, including case and whitespace. Closes #1649 Closes #1728 # Please enter the commit message for your changes. Lines starting # with '#' will be ignored, and an empty message aborts the commit. # On branch master # Your branch is up-to-date with 'origin/master'. # # Changes to be committed: # modified: ../docs/matchers.md # modified: ../include/internal/catch_capture_matchers.h # modified: ../projects/CMakeLists.txt # modified: ../projects/SelfTest/Baselines/compact.sw.approved.txt # modified: ../projects/SelfTest/Baselines/console.std.approved.txt # modified: ../projects/SelfTest/Baselines/console.sw.approved.txt # modified: ../projects/SelfTest/Baselines/junit.sw.approved.txt # modified: ../projects/SelfTest/Baselines/xml.sw.approved.txt # modified: ../projects/SelfTest/UsageTests/Matchers.tests.cpp # # Untracked files: # ./ # ../clang-full/ # ../clang-test/ # ../clang10-build/ # ../coverage-build/ # ../gcc-build/ # ../gcc-full/ # ../include/internal/catch_matchers_exception.cpp # ../include/internal/catch_matchers_exception.hpp # ../misc-build/ # ../msvc-sln/ # ../notes.txt # ../test-install/ #
This commit is contained in:
		| @@ -10,6 +10,7 @@ | ||||
|  | ||||
| #include "catch_capture.hpp" | ||||
| #include "catch_matchers.h" | ||||
| #include "catch_matchers_exception.hpp" | ||||
| #include "catch_matchers_floating.h" | ||||
| #include "catch_matchers_generic.hpp" | ||||
| #include "catch_matchers_string.h" | ||||
|   | ||||
							
								
								
									
										30
									
								
								include/internal/catch_matchers_exception.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								include/internal/catch_matchers_exception.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,30 @@ | ||||
| /* | ||||
|  *  Created by Martin Hořeňovský on 13/10/2019. | ||||
|  * | ||||
|  * Distributed under the Boost Software License, Version 1.0. (See accompanying | ||||
|  * file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) | ||||
|  */ | ||||
|  | ||||
| #include "catch_matchers_exception.hpp" | ||||
|  | ||||
|  | ||||
| namespace Catch { | ||||
| namespace Matchers { | ||||
| namespace Exception { | ||||
|  | ||||
| bool ExceptionMessageMatcher::match(std::exception const& ex) const { | ||||
|     return ex.what() == m_message; | ||||
| } | ||||
|  | ||||
| std::string ExceptionMessageMatcher::describe() const { | ||||
|     return "exception message matches \"" + m_message + "\""; | ||||
| } | ||||
|  | ||||
| } | ||||
| Exception::ExceptionMessageMatcher Message(std::string const& message) { | ||||
|     return Exception::ExceptionMessageMatcher(message); | ||||
| } | ||||
|  | ||||
| // namespace Exception | ||||
| } // namespace Matchers | ||||
| } // namespace Catch | ||||
							
								
								
									
										39
									
								
								include/internal/catch_matchers_exception.hpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								include/internal/catch_matchers_exception.hpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,39 @@ | ||||
| /* | ||||
|  *  Created by Martin Hořeňovský on 13/10/2019. | ||||
|  * | ||||
|  * Distributed under the Boost Software License, Version 1.0. (See accompanying | ||||
|  * file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) | ||||
|  */ | ||||
| #ifndef TWOBLUECUBES_CATCH_MATCHERS_EXCEPTION_HPP_INCLUDED | ||||
| #define TWOBLUECUBES_CATCH_MATCHERS_EXCEPTION_HPP_INCLUDED | ||||
|  | ||||
| #include "catch_matchers.h" | ||||
|  | ||||
| #include <functional> | ||||
| #include <string> | ||||
|  | ||||
| namespace Catch { | ||||
| namespace Matchers { | ||||
| namespace Exception { | ||||
|  | ||||
| class ExceptionMessageMatcher : public MatcherBase<std::exception> { | ||||
|     std::string m_message; | ||||
| public: | ||||
|  | ||||
|     ExceptionMessageMatcher(std::string const& message): | ||||
|         m_message(message) | ||||
|     {} | ||||
|  | ||||
|     bool match(std::exception const& ex) const override; | ||||
|  | ||||
|     std::string describe() const override; | ||||
| }; | ||||
|  | ||||
| } // namespace Exception | ||||
|  | ||||
| Exception::ExceptionMessageMatcher Message(std::string const& message); | ||||
|  | ||||
| } // namespace Matchers | ||||
| } // namespace Catch | ||||
|  | ||||
| #endif // TWOBLUECUBES_CATCH_MATCHERS_EXCEPTION_HPP_INCLUDED | ||||
		Reference in New Issue
	
	Block a user
	 Martin Hořeňovský
					Martin Hořeňovský