| #pragma once | |
| #include <c10/util/Exception.h> | |
| #include <gtest/gtest.h> | |
| #include <stdexcept> | |
| #include <string> | |
| namespace torch { | |
| namespace test { | |
| #define ASSERT_THROWS_WITH(statement, substring) \ | |
| { \ | |
| std::string assert_throws_with_error_message; \ | |
| try { \ | |
| (void)statement; \ | |
| FAIL() << "Expected statement `" #statement \ | |
| "` to throw an exception, but it did not"; \ | |
| } catch (const c10::Error& e) { \ | |
| assert_throws_with_error_message = e.what_without_backtrace(); \ | |
| } catch (const std::exception& e) { \ | |
| assert_throws_with_error_message = e.what(); \ | |
| } \ | |
| if (assert_throws_with_error_message.find(substring) == \ | |
| std::string::npos) { \ | |
| FAIL() << "Error message \"" << assert_throws_with_error_message \ | |
| << "\" did not contain expected substring \"" << substring \ | |
| << "\""; \ | |
| } \ | |
| } | |
| } // namespace test | |
| } // namespace torch |