34 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			34 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C++
		
	
	
	
| //===----------------------------------------------------------------------===//
 | |
| //
 | |
| // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
 | |
| // See https://llvm.org/LICENSE.txt for license information.
 | |
| // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 | |
| //
 | |
| //===----------------------------------------------------------------------===//
 | |
| 
 | |
| #ifndef TEST_SUPPORT_DEBUG_MACROS_H
 | |
| #define TEST_SUPPORT_DEBUG_MACROS_H
 | |
| 
 | |
| #include <__debug>
 | |
| #include <cassert>
 | |
| #include <string>
 | |
| 
 | |
| static const char* expected_libcpp_assert_message = 0;
 | |
| 
 | |
| static void test_debug_function(std::__libcpp_debug_info const& info) {
 | |
|   if (0 == std::strcmp(info.__msg_, expected_libcpp_assert_message))
 | |
|     std::exit(0);
 | |
|   std::fprintf(stderr, "%s\n", info.what().c_str());
 | |
|   std::abort();
 | |
| }
 | |
| 
 | |
| #define TEST_LIBCPP_ASSERT_FAILURE(expr, m)                                                                            \
 | |
|   do {                                                                                                                 \
 | |
|     ::expected_libcpp_assert_message = m;                                                                              \
 | |
|     std::__libcpp_set_debug_function(&::test_debug_function);                                                          \
 | |
|     (void)(expr);                                                                                                      \
 | |
|     assert(false);                                                                                                     \
 | |
|   } while (false)
 | |
| 
 | |
| #endif // TEST_SUPPORT_DEBUG_MACROS_H
 |