Я пытаюсь сопоставить номер строки в тесте на смерть, но не могу заставить работать регулярное выражение. Следующие работы:
EXPECT_DEATH(run_test(), "70");
Но следующие не:
EXPECT_DEATH(run_test(), "\\\\d\\\\d");
В этом случае я получаю эту ошибку:
10: [ RUN ] AgentErrorTest.DiesOnTimerCreateError
10: /home/edge/test/test_dispatcher_error.cc:119: Failure
10: Death test: run_test()
10: Result: died but not with expected error.
10: Expected: \\d\\d
10: Actual msg:
10: [ DEATH ] src/dispatcher/dispatcher.cc:70 loop_sync(): MESSAGE=timer_create() error: Inappropriate ioctl for device PRIORITY=3 SYSLOG_IDENTIFIER=test_dispatcher_error DEVICE_ID=my_device_id TASK_ID=?
10: [ DEATH ]
10: [ FAILED ] AgentErrorTest.DiesOnTimerCreateError (244 ms)
Имею пробовал различное количество обратных слешей, но ничего не работает.
Когда я использую MatchesRegex()
:
EXPECT_DEATH(run_test(), MatchesRegex("\\d+"));
У меня возникает проблема компиляции:
In file included from /usr/include/gtest/gtest-death-test.h:41:0,
from /usr/include/gtest/gtest.h:60,
from /usr/include/gmock/internal/gmock-internal-utils.h:47,
from /usr/include/gmock/gmock-actions.h:46,
from /usr/include/gmock/gmock.h:58,
from /home/edge/test/test_dispatcher_error.cc:14:
/home/edge/test/test_dispatcher_error.cc: In member function 'virtual void {anonymous}::AgentErrorTest_DiesOnTimerCreateError_Test::TestBody()':
/home/edge/test/test_dispatcher_error.cc:111:47: error: invalid initialization of reference of type 'const testing::internal::RE&' from expression of type 'testing::PolymorphicMatcher<testing::internal::MatchesRegexMatcher>'
EXPECT_DEATH( run_test(), MatchesRegex("\\d+"));
^
Чего мне не хватает?