this repo has no description
at trunk 39 lines 1.1 kB view raw
1// Copyright (c) Facebook, Inc. and its affiliates. (http://www.facebook.com) 2#include "Python.h" 3#include "gtest/gtest.h" 4 5#include "capi-fixture.h" 6#include "capi-testing.h" 7 8namespace py { 9namespace testing { 10 11using SignalModuleApiTest = ExtensionApi; 12 13TEST_F(SignalModuleApiTest, PyErrSetInterruptTriggersInterrupt) { 14 PyErr_SetInterrupt(); 15 EXPECT_EQ(PyErr_Occurred(), nullptr); 16 PyObject* main(PyImport_AddModule("__main__")); 17 ASSERT_NE(main, nullptr); 18 PyObject* globals(PyModule_GetDict(main)); 19 PyObjectPtr result(PyRun_String("pass", Py_file_input, globals, globals)); 20 EXPECT_EQ(result.get(), nullptr); 21 EXPECT_NE(PyErr_Occurred(), nullptr); 22 EXPECT_TRUE(PyErr_ExceptionMatches(PyExc_KeyboardInterrupt)); 23 PyErr_Clear(); 24} 25 26TEST_F(SignalModuleApiTest, PyErrCheckSignalsReturnsZero) { 27 EXPECT_EQ(PyErr_CheckSignals(), 0); 28} 29 30TEST_F(SignalModuleApiTest, PyErrCheckSignalsRunsSignalHandlers) { 31 PyErr_SetInterrupt(); 32 EXPECT_EQ(PyErr_CheckSignals(), -1); 33 EXPECT_NE(PyErr_Occurred(), nullptr); 34 EXPECT_TRUE(PyErr_ExceptionMatches(PyExc_KeyboardInterrupt)); 35 PyErr_Clear(); 36} 37 38} // namespace testing 39} // namespace py