diff --git a/unittest/commands/test_simple_commands.cpp b/unittest/commands/test_simple_commands.cpp index d425bb1555..e93025195e 100644 --- a/unittest/commands/test_simple_commands.cpp +++ b/unittest/commands/test_simple_commands.cpp @@ -11,6 +11,7 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +#include "info.h" #include "input.h" #include "lammps.h" #include "utils.h" @@ -30,6 +31,14 @@ using LAMMPS_NS::utils::split_words; namespace LAMMPS_NS { using ::testing::Eq; +using ::testing::MatchesRegex; + +#define TEST_FAILURE(...) \ + if (Info::has_exceptions()) { \ + ASSERT_ANY_THROW({__VA_ARGS__}); \ + } else { \ + ASSERT_DEATH({__VA_ARGS__}, ""); \ + } class SimpleCommandsTest : public ::testing::Test { protected: @@ -81,6 +90,16 @@ TEST_F(SimpleCommandsTest, Echo) if (!verbose) ::testing::internal::GetCapturedStdout(); ASSERT_EQ(lmp->input->echo_screen, 0); ASSERT_EQ(lmp->input->echo_log, 1); + + ::testing::internal::CaptureStdout(); + TEST_FAILURE(lmp->input->one("echo");); + auto mesg = ::testing::internal::GetCapturedStdout(); + ASSERT_THAT(mesg, MatchesRegex("^ERROR: Illegal echo command.*")); + + ::testing::internal::CaptureStdout(); + TEST_FAILURE(lmp->input->one("echo xxx");); + mesg = ::testing::internal::GetCapturedStdout(); + ASSERT_THAT(mesg, MatchesRegex("^ERROR: Illegal echo command.*")); } TEST_F(SimpleCommandsTest, Log) diff --git a/unittest/formats/test_file_operations.cpp b/unittest/formats/test_file_operations.cpp index bf47c28391..a81f734a32 100644 --- a/unittest/formats/test_file_operations.cpp +++ b/unittest/formats/test_file_operations.cpp @@ -29,6 +29,13 @@ using utils::sfgets; using utils::sfread; using utils::split_words; +#define TEST_FAILURE(...) \ + if (Info::has_exceptions()) { \ + ASSERT_ANY_THROW({__VA_ARGS__}); \ + } else { \ + ASSERT_DEATH({__VA_ARGS__}, ""); \ + } + // whether to print verbose output (i.e. not capturing LAMMPS screen output). bool verbose = false; @@ -93,15 +100,9 @@ TEST_F(FileOperationsTest, safe_fgets) memset(buf, 0, MAX_BUF_SIZE); ::testing::internal::CaptureStdout(); - if (Info::has_exceptions()) { - ASSERT_ANY_THROW( - utils::sfgets(FLERR, buf, MAX_BUF_SIZE, fp, "safe_file_read_test.txt", lmp->error)); - } else { - ASSERT_DEATH( - { utils::sfgets(FLERR, buf, MAX_BUF_SIZE, fp, "safe_file_read_test.txt", lmp->error); }, - ""); - } - std::string mesg = ::testing::internal::GetCapturedStdout(); + TEST_FAILURE( + utils::sfgets(FLERR, buf, MAX_BUF_SIZE, fp, "safe_file_read_test.txt", lmp->error);); + auto mesg = ::testing::internal::GetCapturedStdout(); ASSERT_THAT(mesg, StartsWith("ERROR on proc 0: Unexpected end of file while " "reading file 'safe_file_read_test.txt'")); @@ -125,14 +126,8 @@ TEST_F(FileOperationsTest, safe_fread) ASSERT_THAT(buf, StrEq("two_lines\n")); ::testing::internal::CaptureStdout(); - if (Info::has_exceptions()) { - ASSERT_ANY_THROW( - utils::sfread(FLERR, buf, 1, 100, fp, "safe_file_read_test.txt", lmp->error)); - } else { - ASSERT_DEATH( - { utils::sfread(FLERR, buf, 1, 100, fp, "safe_file_read_test.txt", lmp->error); }, ""); - } - std::string mesg = ::testing::internal::GetCapturedStdout(); + TEST_FAILURE(utils::sfread(FLERR, buf, 1, 100, fp, "safe_file_read_test.txt", lmp->error);); + auto mesg = ::testing::internal::GetCapturedStdout(); ASSERT_THAT(mesg, StartsWith("ERROR on proc 0: Unexpected end of file while " "reading file 'safe_file_read_test.txt'"));