refactor catching exceptions during LAMMPS initialization
this will avoid the nasty segfaults with "cannot have multiple stdout capturers" instead it will catch and display any exception thrown during init.
This commit is contained in:
@ -61,7 +61,7 @@ void cleanup_lammps(LAMMPS *lmp, const TestConfig &cfg)
|
|||||||
delete lmp;
|
delete lmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
LAMMPS *init_lammps(LAMMPS::argv &args, const TestConfig &cfg, const bool newton = true)
|
LAMMPS *init_lammps(LAMMPS::argv &args, const TestConfig &cfg, const bool newton)
|
||||||
{
|
{
|
||||||
LAMMPS *lmp;
|
LAMMPS *lmp;
|
||||||
|
|
||||||
@ -92,21 +92,7 @@ LAMMPS *init_lammps(LAMMPS::argv &args, const TestConfig &cfg, const bool newton
|
|||||||
|
|
||||||
// utility lambdas to improve readability
|
// utility lambdas to improve readability
|
||||||
auto command = [&](const std::string &line) {
|
auto command = [&](const std::string &line) {
|
||||||
try {
|
lmp->input->one(line);
|
||||||
lmp->input->one(line);
|
|
||||||
} catch (LAMMPSAbortException &ae) {
|
|
||||||
fprintf(stderr, "LAMMPS Error: %s\n", ae.what());
|
|
||||||
exit(2);
|
|
||||||
} catch (LAMMPSException &e) {
|
|
||||||
fprintf(stderr, "LAMMPS Error: %s\n", e.what());
|
|
||||||
exit(3);
|
|
||||||
} catch (fmt::format_error &fe) {
|
|
||||||
fprintf(stderr, "fmt::format_error: %s\n", fe.what());
|
|
||||||
exit(4);
|
|
||||||
} catch (std::exception &e) {
|
|
||||||
fprintf(stderr, "General exception: %s\n", e.what());
|
|
||||||
exit(5);
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
auto parse_input_script = [&](const std::string &filename) {
|
auto parse_input_script = [&](const std::string &filename) {
|
||||||
lmp->input->file(filename.c_str());
|
lmp->input->file(filename.c_str());
|
||||||
@ -230,7 +216,12 @@ void generate_yaml_file(const char *outfile, const TestConfig &config)
|
|||||||
// initialize system geometry
|
// initialize system geometry
|
||||||
LAMMPS::argv args = {"AngleStyle", "-log", "none", "-echo", "screen", "-nocite"};
|
LAMMPS::argv args = {"AngleStyle", "-log", "none", "-echo", "screen", "-nocite"};
|
||||||
|
|
||||||
LAMMPS *lmp = init_lammps(args, config);
|
LAMMPS *lmp = nullptr;
|
||||||
|
try {
|
||||||
|
lmp = init_lammps(args, config, true);
|
||||||
|
} catch (std::exception &e) {
|
||||||
|
FAIL() << e.what();
|
||||||
|
}
|
||||||
if (!lmp) {
|
if (!lmp) {
|
||||||
std::cerr << "One or more prerequisite styles are not available "
|
std::cerr << "One or more prerequisite styles are not available "
|
||||||
"in this LAMMPS configuration:\n";
|
"in this LAMMPS configuration:\n";
|
||||||
@ -321,8 +312,14 @@ TEST(AngleStyle, plain)
|
|||||||
LAMMPS::argv args = {"AngleStyle", "-log", "none", "-echo", "screen", "-nocite"};
|
LAMMPS::argv args = {"AngleStyle", "-log", "none", "-echo", "screen", "-nocite"};
|
||||||
|
|
||||||
::testing::internal::CaptureStdout();
|
::testing::internal::CaptureStdout();
|
||||||
LAMMPS *lmp = init_lammps(args, test_config, true);
|
LAMMPS *lmp = nullptr;
|
||||||
|
try {
|
||||||
|
lmp = init_lammps(args, test_config, true);
|
||||||
|
} catch (std::exception &e) {
|
||||||
|
std::string output = ::testing::internal::GetCapturedStdout();
|
||||||
|
if (verbose) std::cout << output;
|
||||||
|
FAIL() << e.what();
|
||||||
|
}
|
||||||
std::string output = ::testing::internal::GetCapturedStdout();
|
std::string output = ::testing::internal::GetCapturedStdout();
|
||||||
if (verbose) std::cout << output;
|
if (verbose) std::cout << output;
|
||||||
|
|
||||||
@ -371,7 +368,12 @@ TEST(AngleStyle, plain)
|
|||||||
|
|
||||||
if (!verbose) ::testing::internal::CaptureStdout();
|
if (!verbose) ::testing::internal::CaptureStdout();
|
||||||
cleanup_lammps(lmp, test_config);
|
cleanup_lammps(lmp, test_config);
|
||||||
lmp = init_lammps(args, test_config, false);
|
try {
|
||||||
|
lmp = init_lammps(args, test_config, false);
|
||||||
|
} catch (std::exception &e) {
|
||||||
|
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||||
|
FAIL() << e.what();
|
||||||
|
}
|
||||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||||
|
|
||||||
// skip over these tests if newton bond is forced to be on
|
// skip over these tests if newton bond is forced to be on
|
||||||
@ -439,8 +441,14 @@ TEST(AngleStyle, omp)
|
|||||||
"-pk", "omp", "4", "-sf", "omp"};
|
"-pk", "omp", "4", "-sf", "omp"};
|
||||||
|
|
||||||
::testing::internal::CaptureStdout();
|
::testing::internal::CaptureStdout();
|
||||||
LAMMPS *lmp = init_lammps(args, test_config, true);
|
LAMMPS *lmp = nullptr;
|
||||||
|
try {
|
||||||
|
lmp = init_lammps(args, test_config, true);
|
||||||
|
} catch (std::exception &e) {
|
||||||
|
std::string output = ::testing::internal::GetCapturedStdout();
|
||||||
|
if (verbose) std::cout << output;
|
||||||
|
FAIL() << e.what();
|
||||||
|
}
|
||||||
std::string output = ::testing::internal::GetCapturedStdout();
|
std::string output = ::testing::internal::GetCapturedStdout();
|
||||||
if (verbose) std::cout << output;
|
if (verbose) std::cout << output;
|
||||||
|
|
||||||
@ -493,7 +501,12 @@ TEST(AngleStyle, omp)
|
|||||||
|
|
||||||
if (!verbose) ::testing::internal::CaptureStdout();
|
if (!verbose) ::testing::internal::CaptureStdout();
|
||||||
cleanup_lammps(lmp, test_config);
|
cleanup_lammps(lmp, test_config);
|
||||||
lmp = init_lammps(args, test_config, false);
|
try {
|
||||||
|
lmp = init_lammps(args, test_config, false);
|
||||||
|
} catch (std::exception &e) {
|
||||||
|
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||||
|
FAIL() << e.what();
|
||||||
|
}
|
||||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||||
|
|
||||||
// skip over these tests if newton bond is forced to be on
|
// skip over these tests if newton bond is forced to be on
|
||||||
@ -540,14 +553,21 @@ TEST(AngleStyle, kokkos_omp)
|
|||||||
// if KOKKOS has GPU support enabled, it *must* be used. We cannot test OpenMP only.
|
// if KOKKOS has GPU support enabled, it *must* be used. We cannot test OpenMP only.
|
||||||
if (Info::has_accelerator_feature("KOKKOS", "api", "cuda") ||
|
if (Info::has_accelerator_feature("KOKKOS", "api", "cuda") ||
|
||||||
Info::has_accelerator_feature("KOKKOS", "api", "hip") ||
|
Info::has_accelerator_feature("KOKKOS", "api", "hip") ||
|
||||||
Info::has_accelerator_feature("KOKKOS", "api", "sycl")) GTEST_SKIP();
|
Info::has_accelerator_feature("KOKKOS", "api", "sycl"))
|
||||||
|
GTEST_SKIP() << "Cannot test KOKKOS/OpenMP with GPU support enabled";
|
||||||
|
|
||||||
LAMMPS::argv args = {"AngleStyle", "-log", "none", "-echo", "screen", "-nocite",
|
LAMMPS::argv args = {"AngleStyle", "-log", "none", "-echo", "screen", "-nocite",
|
||||||
"-k", "on", "t", "4", "-sf", "kk"};
|
"-k", "on", "t", "4", "-sf", "kk"};
|
||||||
|
|
||||||
::testing::internal::CaptureStdout();
|
::testing::internal::CaptureStdout();
|
||||||
LAMMPS *lmp = init_lammps(args, test_config, true);
|
LAMMPS *lmp = nullptr;
|
||||||
|
try {
|
||||||
|
lmp = init_lammps(args, test_config, true);
|
||||||
|
} catch (std::exception &e) {
|
||||||
|
std::string output = ::testing::internal::GetCapturedStdout();
|
||||||
|
if (verbose) std::cout << output;
|
||||||
|
FAIL() << e.what();
|
||||||
|
}
|
||||||
std::string output = ::testing::internal::GetCapturedStdout();
|
std::string output = ::testing::internal::GetCapturedStdout();
|
||||||
if (verbose) std::cout << output;
|
if (verbose) std::cout << output;
|
||||||
|
|
||||||
@ -597,7 +617,12 @@ TEST(AngleStyle, kokkos_omp)
|
|||||||
|
|
||||||
if (!verbose) ::testing::internal::CaptureStdout();
|
if (!verbose) ::testing::internal::CaptureStdout();
|
||||||
cleanup_lammps(lmp, test_config);
|
cleanup_lammps(lmp, test_config);
|
||||||
lmp = init_lammps(args, test_config, false);
|
try {
|
||||||
|
lmp = init_lammps(args, test_config, false);
|
||||||
|
} catch (std::exception &e) {
|
||||||
|
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||||
|
FAIL() << e.what();
|
||||||
|
}
|
||||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||||
|
|
||||||
// skip over these tests if newton bond is forced to be on
|
// skip over these tests if newton bond is forced to be on
|
||||||
@ -664,8 +689,14 @@ TEST(AngleStyle, numdiff)
|
|||||||
LAMMPS::argv args = {"AngleStyle", "-log", "none", "-echo", "screen", "-nocite"};
|
LAMMPS::argv args = {"AngleStyle", "-log", "none", "-echo", "screen", "-nocite"};
|
||||||
|
|
||||||
::testing::internal::CaptureStdout();
|
::testing::internal::CaptureStdout();
|
||||||
LAMMPS *lmp = init_lammps(args, test_config, true);
|
LAMMPS *lmp = nullptr;
|
||||||
|
try {
|
||||||
|
lmp = init_lammps(args, test_config, true);
|
||||||
|
} catch (std::exception &e) {
|
||||||
|
std::string output = ::testing::internal::GetCapturedStdout();
|
||||||
|
if (verbose) std::cout << output;
|
||||||
|
FAIL() << e.what();
|
||||||
|
}
|
||||||
std::string output = ::testing::internal::GetCapturedStdout();
|
std::string output = ::testing::internal::GetCapturedStdout();
|
||||||
if (verbose) std::cout << output;
|
if (verbose) std::cout << output;
|
||||||
|
|
||||||
@ -717,7 +748,13 @@ TEST(AngleStyle, single)
|
|||||||
|
|
||||||
// create a LAMMPS instance with standard settings to detect the number of atom types
|
// create a LAMMPS instance with standard settings to detect the number of atom types
|
||||||
if (!verbose) ::testing::internal::CaptureStdout();
|
if (!verbose) ::testing::internal::CaptureStdout();
|
||||||
LAMMPS *lmp = init_lammps(args, test_config);
|
LAMMPS *lmp = nullptr;
|
||||||
|
try {
|
||||||
|
lmp = init_lammps(args, test_config, true);
|
||||||
|
} catch (std::exception &e) {
|
||||||
|
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||||
|
FAIL() << e.what();
|
||||||
|
}
|
||||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||||
|
|
||||||
if (!lmp) {
|
if (!lmp) {
|
||||||
@ -865,7 +902,13 @@ TEST(AngleStyle, extract)
|
|||||||
LAMMPS::argv args = {"AngleStyle", "-log", "none", "-echo", "screen", "-nocite"};
|
LAMMPS::argv args = {"AngleStyle", "-log", "none", "-echo", "screen", "-nocite"};
|
||||||
|
|
||||||
if (!verbose) ::testing::internal::CaptureStdout();
|
if (!verbose) ::testing::internal::CaptureStdout();
|
||||||
LAMMPS *lmp = init_lammps(args, test_config, true);
|
LAMMPS *lmp = nullptr;
|
||||||
|
try {
|
||||||
|
lmp = init_lammps(args, test_config, true);
|
||||||
|
} catch (std::exception &e) {
|
||||||
|
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||||
|
FAIL() << e.what();
|
||||||
|
}
|
||||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||||
|
|
||||||
if (!lmp) {
|
if (!lmp) {
|
||||||
|
|||||||
@ -61,7 +61,7 @@ void cleanup_lammps(LAMMPS *lmp, const TestConfig &cfg)
|
|||||||
delete lmp;
|
delete lmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
LAMMPS *init_lammps(LAMMPS::argv &args, const TestConfig &cfg, const bool newton = true)
|
LAMMPS *init_lammps(LAMMPS::argv &args, const TestConfig &cfg, const bool newton)
|
||||||
{
|
{
|
||||||
LAMMPS *lmp;
|
LAMMPS *lmp;
|
||||||
|
|
||||||
@ -92,21 +92,7 @@ LAMMPS *init_lammps(LAMMPS::argv &args, const TestConfig &cfg, const bool newton
|
|||||||
|
|
||||||
// utility lambdas to improve readability
|
// utility lambdas to improve readability
|
||||||
auto command = [&](const std::string &line) {
|
auto command = [&](const std::string &line) {
|
||||||
try {
|
lmp->input->one(line);
|
||||||
lmp->input->one(line);
|
|
||||||
} catch (LAMMPSAbortException &ae) {
|
|
||||||
fprintf(stderr, "LAMMPS Error: %s\n", ae.what());
|
|
||||||
exit(2);
|
|
||||||
} catch (LAMMPSException &e) {
|
|
||||||
fprintf(stderr, "LAMMPS Error: %s\n", e.what());
|
|
||||||
exit(3);
|
|
||||||
} catch (fmt::format_error &fe) {
|
|
||||||
fprintf(stderr, "fmt::format_error: %s\n", fe.what());
|
|
||||||
exit(4);
|
|
||||||
} catch (std::exception &e) {
|
|
||||||
fprintf(stderr, "General exception: %s\n", e.what());
|
|
||||||
exit(5);
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
auto parse_input_script = [&](const std::string &filename) {
|
auto parse_input_script = [&](const std::string &filename) {
|
||||||
lmp->input->file(filename.c_str());
|
lmp->input->file(filename.c_str());
|
||||||
@ -230,7 +216,13 @@ void generate_yaml_file(const char *outfile, const TestConfig &config)
|
|||||||
// initialize system geometry
|
// initialize system geometry
|
||||||
LAMMPS::argv args = {"BondStyle", "-log", "none", "-echo", "screen", "-nocite"};
|
LAMMPS::argv args = {"BondStyle", "-log", "none", "-echo", "screen", "-nocite"};
|
||||||
|
|
||||||
LAMMPS *lmp = init_lammps(args, config);
|
LAMMPS *lmp = nullptr;
|
||||||
|
try {
|
||||||
|
lmp = init_lammps(args, config, true);
|
||||||
|
} catch (std::exception &e) {
|
||||||
|
FAIL() << e.what();
|
||||||
|
}
|
||||||
|
|
||||||
if (!lmp) {
|
if (!lmp) {
|
||||||
std::cerr << "One or more prerequisite styles are not available "
|
std::cerr << "One or more prerequisite styles are not available "
|
||||||
"in this LAMMPS configuration:\n";
|
"in this LAMMPS configuration:\n";
|
||||||
@ -321,8 +313,14 @@ TEST(BondStyle, plain)
|
|||||||
LAMMPS::argv args = {"BondStyle", "-log", "none", "-echo", "screen", "-nocite"};
|
LAMMPS::argv args = {"BondStyle", "-log", "none", "-echo", "screen", "-nocite"};
|
||||||
|
|
||||||
::testing::internal::CaptureStdout();
|
::testing::internal::CaptureStdout();
|
||||||
LAMMPS *lmp = init_lammps(args, test_config, true);
|
LAMMPS *lmp = nullptr;
|
||||||
|
try {
|
||||||
|
lmp = init_lammps(args, test_config, true);
|
||||||
|
} catch (std::exception &e) {
|
||||||
|
std::string output = ::testing::internal::GetCapturedStdout();
|
||||||
|
if (verbose) std::cout << output;
|
||||||
|
FAIL() << e.what();
|
||||||
|
}
|
||||||
std::string output = ::testing::internal::GetCapturedStdout();
|
std::string output = ::testing::internal::GetCapturedStdout();
|
||||||
if (verbose) std::cout << output;
|
if (verbose) std::cout << output;
|
||||||
|
|
||||||
@ -371,7 +369,12 @@ TEST(BondStyle, plain)
|
|||||||
|
|
||||||
if (!verbose) ::testing::internal::CaptureStdout();
|
if (!verbose) ::testing::internal::CaptureStdout();
|
||||||
cleanup_lammps(lmp, test_config);
|
cleanup_lammps(lmp, test_config);
|
||||||
lmp = init_lammps(args, test_config, false);
|
try {
|
||||||
|
lmp = init_lammps(args, test_config, false);
|
||||||
|
} catch (std::exception &e) {
|
||||||
|
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||||
|
FAIL() << e.what();
|
||||||
|
}
|
||||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||||
|
|
||||||
// skip over these tests if newton bond is forced to be on
|
// skip over these tests if newton bond is forced to be on
|
||||||
@ -441,8 +444,14 @@ TEST(BondStyle, omp)
|
|||||||
"-pk", "omp", "4", "-sf", "omp"};
|
"-pk", "omp", "4", "-sf", "omp"};
|
||||||
|
|
||||||
::testing::internal::CaptureStdout();
|
::testing::internal::CaptureStdout();
|
||||||
LAMMPS *lmp = init_lammps(args, test_config, true);
|
LAMMPS *lmp = nullptr;
|
||||||
|
try {
|
||||||
|
lmp = init_lammps(args, test_config, true);
|
||||||
|
} catch (std::exception &e) {
|
||||||
|
std::string output = ::testing::internal::GetCapturedStdout();
|
||||||
|
if (verbose) std::cout << output;
|
||||||
|
FAIL() << e.what();
|
||||||
|
}
|
||||||
std::string output = ::testing::internal::GetCapturedStdout();
|
std::string output = ::testing::internal::GetCapturedStdout();
|
||||||
if (verbose) std::cout << output;
|
if (verbose) std::cout << output;
|
||||||
|
|
||||||
@ -495,7 +504,12 @@ TEST(BondStyle, omp)
|
|||||||
|
|
||||||
if (!verbose) ::testing::internal::CaptureStdout();
|
if (!verbose) ::testing::internal::CaptureStdout();
|
||||||
cleanup_lammps(lmp, test_config);
|
cleanup_lammps(lmp, test_config);
|
||||||
lmp = init_lammps(args, test_config, false);
|
try {
|
||||||
|
lmp = init_lammps(args, test_config, false);
|
||||||
|
} catch (std::exception &e) {
|
||||||
|
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||||
|
FAIL() << e.what();
|
||||||
|
}
|
||||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||||
|
|
||||||
// skip over these tests if newton bond is forced to be on
|
// skip over these tests if newton bond is forced to be on
|
||||||
@ -542,14 +556,21 @@ TEST(BondStyle, kokkos_omp)
|
|||||||
// if KOKKOS has GPU support enabled, it *must* be used. We cannot test OpenMP only.
|
// if KOKKOS has GPU support enabled, it *must* be used. We cannot test OpenMP only.
|
||||||
if (Info::has_accelerator_feature("KOKKOS", "api", "cuda") ||
|
if (Info::has_accelerator_feature("KOKKOS", "api", "cuda") ||
|
||||||
Info::has_accelerator_feature("KOKKOS", "api", "hip") ||
|
Info::has_accelerator_feature("KOKKOS", "api", "hip") ||
|
||||||
Info::has_accelerator_feature("KOKKOS", "api", "sycl")) GTEST_SKIP();
|
Info::has_accelerator_feature("KOKKOS", "api", "sycl"))
|
||||||
|
GTEST_SKIP() << "Cannot test KOKKOS/OpenMP with GPU support enabled";
|
||||||
|
|
||||||
LAMMPS::argv args = {"BondStyle", "-log", "none", "-echo", "screen", "-nocite",
|
LAMMPS::argv args = {"BondStyle", "-log", "none", "-echo", "screen", "-nocite",
|
||||||
"-k", "on", "t", "4", "-sf", "kk"};
|
"-k", "on", "t", "4", "-sf", "kk"};
|
||||||
|
|
||||||
::testing::internal::CaptureStdout();
|
::testing::internal::CaptureStdout();
|
||||||
LAMMPS *lmp = init_lammps(args, test_config, true);
|
LAMMPS *lmp = nullptr;
|
||||||
|
try {
|
||||||
|
lmp = init_lammps(args, test_config, true);
|
||||||
|
} catch (std::exception &e) {
|
||||||
|
std::string output = ::testing::internal::GetCapturedStdout();
|
||||||
|
if (verbose) std::cout << output;
|
||||||
|
FAIL() << e.what();
|
||||||
|
}
|
||||||
std::string output = ::testing::internal::GetCapturedStdout();
|
std::string output = ::testing::internal::GetCapturedStdout();
|
||||||
if (verbose) std::cout << output;
|
if (verbose) std::cout << output;
|
||||||
|
|
||||||
@ -603,7 +624,12 @@ TEST(BondStyle, kokkos_omp)
|
|||||||
|
|
||||||
if (!verbose) ::testing::internal::CaptureStdout();
|
if (!verbose) ::testing::internal::CaptureStdout();
|
||||||
cleanup_lammps(lmp, test_config);
|
cleanup_lammps(lmp, test_config);
|
||||||
lmp = init_lammps(args, test_config, false);
|
try {
|
||||||
|
lmp = init_lammps(args, test_config, false);
|
||||||
|
} catch (std::exception &e) {
|
||||||
|
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||||
|
FAIL() << e.what();
|
||||||
|
}
|
||||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||||
|
|
||||||
// skip over these tests if newton bond is forced to be on
|
// skip over these tests if newton bond is forced to be on
|
||||||
@ -652,8 +678,14 @@ TEST(BondStyle, numdiff)
|
|||||||
LAMMPS::argv args = {"BondStyle", "-log", "none", "-echo", "screen", "-nocite"};
|
LAMMPS::argv args = {"BondStyle", "-log", "none", "-echo", "screen", "-nocite"};
|
||||||
|
|
||||||
::testing::internal::CaptureStdout();
|
::testing::internal::CaptureStdout();
|
||||||
LAMMPS *lmp = init_lammps(args, test_config, true);
|
LAMMPS *lmp = nullptr;
|
||||||
|
try {
|
||||||
|
lmp = init_lammps(args, test_config, true);
|
||||||
|
} catch (std::exception &e) {
|
||||||
|
std::string output = ::testing::internal::GetCapturedStdout();
|
||||||
|
if (verbose) std::cout << output;
|
||||||
|
FAIL() << e.what();
|
||||||
|
}
|
||||||
std::string output = ::testing::internal::GetCapturedStdout();
|
std::string output = ::testing::internal::GetCapturedStdout();
|
||||||
if (verbose) std::cout << output;
|
if (verbose) std::cout << output;
|
||||||
|
|
||||||
@ -705,7 +737,13 @@ TEST(BondStyle, single)
|
|||||||
|
|
||||||
// create a LAMMPS instance with standard settings to detect the number of atom types
|
// create a LAMMPS instance with standard settings to detect the number of atom types
|
||||||
if (!verbose) ::testing::internal::CaptureStdout();
|
if (!verbose) ::testing::internal::CaptureStdout();
|
||||||
LAMMPS *lmp = init_lammps(args, test_config);
|
LAMMPS *lmp = nullptr;
|
||||||
|
try {
|
||||||
|
lmp = init_lammps(args, test_config, true);
|
||||||
|
} catch (std::exception &e) {
|
||||||
|
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||||
|
FAIL() << e.what();
|
||||||
|
}
|
||||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||||
|
|
||||||
if (!lmp) {
|
if (!lmp) {
|
||||||
@ -959,7 +997,13 @@ TEST(BondStyle, extract)
|
|||||||
LAMMPS::argv args = {"BondStyle", "-log", "none", "-echo", "screen", "-nocite"};
|
LAMMPS::argv args = {"BondStyle", "-log", "none", "-echo", "screen", "-nocite"};
|
||||||
|
|
||||||
if (!verbose) ::testing::internal::CaptureStdout();
|
if (!verbose) ::testing::internal::CaptureStdout();
|
||||||
LAMMPS *lmp = init_lammps(args, test_config, true);
|
LAMMPS *lmp = nullptr;
|
||||||
|
try {
|
||||||
|
lmp = init_lammps(args, test_config, true);
|
||||||
|
} catch (std::exception &e) {
|
||||||
|
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||||
|
FAIL() << e.what();
|
||||||
|
}
|
||||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||||
|
|
||||||
if (!lmp) {
|
if (!lmp) {
|
||||||
|
|||||||
@ -61,7 +61,7 @@ void cleanup_lammps(LAMMPS *lmp, const TestConfig &cfg)
|
|||||||
delete lmp;
|
delete lmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
LAMMPS *init_lammps(LAMMPS::argv &args, const TestConfig &cfg, const bool newton = true)
|
LAMMPS *init_lammps(LAMMPS::argv &args, const TestConfig &cfg, const bool newton)
|
||||||
{
|
{
|
||||||
auto *lmp = new LAMMPS(args, MPI_COMM_WORLD);
|
auto *lmp = new LAMMPS(args, MPI_COMM_WORLD);
|
||||||
|
|
||||||
@ -237,7 +237,13 @@ void generate_yaml_file(const char *outfile, const TestConfig &config)
|
|||||||
// initialize system geometry
|
// initialize system geometry
|
||||||
LAMMPS::argv args = {"DihedralStyle", "-log", "none", "-echo", "screen", "-nocite"};
|
LAMMPS::argv args = {"DihedralStyle", "-log", "none", "-echo", "screen", "-nocite"};
|
||||||
|
|
||||||
LAMMPS *lmp = init_lammps(args, config);
|
LAMMPS *lmp = nullptr;
|
||||||
|
try {
|
||||||
|
lmp = init_lammps(args, config, true);
|
||||||
|
} catch (std::exception &e) {
|
||||||
|
FAIL() << e.what();
|
||||||
|
}
|
||||||
|
|
||||||
if (!lmp) {
|
if (!lmp) {
|
||||||
std::cerr << "One or more prerequisite styles are not available "
|
std::cerr << "One or more prerequisite styles are not available "
|
||||||
"in this LAMMPS configuration:\n";
|
"in this LAMMPS configuration:\n";
|
||||||
@ -322,8 +328,14 @@ TEST(DihedralStyle, plain)
|
|||||||
LAMMPS::argv args = {"DihedralStyle", "-log", "none", "-echo", "screen", "-nocite"};
|
LAMMPS::argv args = {"DihedralStyle", "-log", "none", "-echo", "screen", "-nocite"};
|
||||||
|
|
||||||
::testing::internal::CaptureStdout();
|
::testing::internal::CaptureStdout();
|
||||||
LAMMPS *lmp = init_lammps(args, test_config, true);
|
LAMMPS *lmp = nullptr;
|
||||||
|
try {
|
||||||
|
lmp = init_lammps(args, test_config, true);
|
||||||
|
} catch (std::exception &e) {
|
||||||
|
std::string output = ::testing::internal::GetCapturedStdout();
|
||||||
|
if (verbose) std::cout << output;
|
||||||
|
FAIL() << e.what();
|
||||||
|
}
|
||||||
std::string output = ::testing::internal::GetCapturedStdout();
|
std::string output = ::testing::internal::GetCapturedStdout();
|
||||||
if (verbose) std::cout << output;
|
if (verbose) std::cout << output;
|
||||||
|
|
||||||
@ -372,7 +384,12 @@ TEST(DihedralStyle, plain)
|
|||||||
|
|
||||||
if (!verbose) ::testing::internal::CaptureStdout();
|
if (!verbose) ::testing::internal::CaptureStdout();
|
||||||
cleanup_lammps(lmp, test_config);
|
cleanup_lammps(lmp, test_config);
|
||||||
lmp = init_lammps(args, test_config, false);
|
try {
|
||||||
|
lmp = init_lammps(args, test_config, false);
|
||||||
|
} catch (std::exception &e) {
|
||||||
|
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||||
|
FAIL() << e.what();
|
||||||
|
}
|
||||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||||
|
|
||||||
// skip over these tests if newton bond is forced to be on
|
// skip over these tests if newton bond is forced to be on
|
||||||
@ -442,8 +459,14 @@ TEST(DihedralStyle, omp)
|
|||||||
"-pk", "omp", "4", "-sf", "omp"};
|
"-pk", "omp", "4", "-sf", "omp"};
|
||||||
|
|
||||||
::testing::internal::CaptureStdout();
|
::testing::internal::CaptureStdout();
|
||||||
LAMMPS *lmp = init_lammps(args, test_config, true);
|
LAMMPS *lmp = nullptr;
|
||||||
|
try {
|
||||||
|
lmp = init_lammps(args, test_config, true);
|
||||||
|
} catch (std::exception &e) {
|
||||||
|
std::string output = ::testing::internal::GetCapturedStdout();
|
||||||
|
if (verbose) std::cout << output;
|
||||||
|
FAIL() << e.what();
|
||||||
|
}
|
||||||
std::string output = ::testing::internal::GetCapturedStdout();
|
std::string output = ::testing::internal::GetCapturedStdout();
|
||||||
if (verbose) std::cout << output;
|
if (verbose) std::cout << output;
|
||||||
|
|
||||||
@ -497,7 +520,12 @@ TEST(DihedralStyle, omp)
|
|||||||
|
|
||||||
if (!verbose) ::testing::internal::CaptureStdout();
|
if (!verbose) ::testing::internal::CaptureStdout();
|
||||||
cleanup_lammps(lmp, test_config);
|
cleanup_lammps(lmp, test_config);
|
||||||
lmp = init_lammps(args, test_config, false);
|
try {
|
||||||
|
lmp = init_lammps(args, test_config, false);
|
||||||
|
} catch (std::exception &e) {
|
||||||
|
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||||
|
FAIL() << e.what();
|
||||||
|
}
|
||||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||||
|
|
||||||
// skip over these tests if newton bond is forced to be on
|
// skip over these tests if newton bond is forced to be on
|
||||||
@ -544,15 +572,22 @@ TEST(DihedralStyle, kokkos_omp)
|
|||||||
// if KOKKOS has GPU support enabled, it *must* be used. We cannot test OpenMP only.
|
// if KOKKOS has GPU support enabled, it *must* be used. We cannot test OpenMP only.
|
||||||
if (Info::has_accelerator_feature("KOKKOS", "api", "cuda") ||
|
if (Info::has_accelerator_feature("KOKKOS", "api", "cuda") ||
|
||||||
Info::has_accelerator_feature("KOKKOS", "api", "hip") ||
|
Info::has_accelerator_feature("KOKKOS", "api", "hip") ||
|
||||||
Info::has_accelerator_feature("KOKKOS", "api", "sycl")) GTEST_SKIP();
|
Info::has_accelerator_feature("KOKKOS", "api", "sycl"))
|
||||||
|
GTEST_SKIP() << "Cannot test KOKKOS/OpenMP with GPU support enabled";
|
||||||
|
|
||||||
LAMMPS::argv args = {"DihedralStyle", "-log", "none", "-echo", "screen",
|
LAMMPS::argv args = {"DihedralStyle", "-log", "none", "-echo", "screen",
|
||||||
"-nocite", "-k", "on", "t", "4",
|
"-nocite", "-k", "on", "t", "4",
|
||||||
"-sf", "kk"};
|
"-sf", "kk"};
|
||||||
|
|
||||||
::testing::internal::CaptureStdout();
|
::testing::internal::CaptureStdout();
|
||||||
LAMMPS *lmp = init_lammps(args, test_config, true);
|
LAMMPS *lmp = nullptr;
|
||||||
|
try {
|
||||||
|
lmp = init_lammps(args, test_config, true);
|
||||||
|
} catch (std::exception &e) {
|
||||||
|
std::string output = ::testing::internal::GetCapturedStdout();
|
||||||
|
if (verbose) std::cout << output;
|
||||||
|
FAIL() << e.what();
|
||||||
|
}
|
||||||
std::string output = ::testing::internal::GetCapturedStdout();
|
std::string output = ::testing::internal::GetCapturedStdout();
|
||||||
if (verbose) std::cout << output;
|
if (verbose) std::cout << output;
|
||||||
|
|
||||||
@ -606,7 +641,12 @@ TEST(DihedralStyle, kokkos_omp)
|
|||||||
|
|
||||||
if (!verbose) ::testing::internal::CaptureStdout();
|
if (!verbose) ::testing::internal::CaptureStdout();
|
||||||
cleanup_lammps(lmp, test_config);
|
cleanup_lammps(lmp, test_config);
|
||||||
lmp = init_lammps(args, test_config, false);
|
try {
|
||||||
|
lmp = init_lammps(args, test_config, false);
|
||||||
|
} catch (std::exception &e) {
|
||||||
|
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||||
|
FAIL() << e.what();
|
||||||
|
}
|
||||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||||
|
|
||||||
// skip over these tests if newton bond is forced to be on
|
// skip over these tests if newton bond is forced to be on
|
||||||
@ -655,8 +695,14 @@ TEST(DihedralStyle, numdiff)
|
|||||||
LAMMPS::argv args = {"DihedralStyle", "-log", "none", "-echo", "screen", "-nocite"};
|
LAMMPS::argv args = {"DihedralStyle", "-log", "none", "-echo", "screen", "-nocite"};
|
||||||
|
|
||||||
::testing::internal::CaptureStdout();
|
::testing::internal::CaptureStdout();
|
||||||
LAMMPS *lmp = init_lammps(args, test_config, true);
|
LAMMPS *lmp = nullptr;
|
||||||
|
try {
|
||||||
|
lmp = init_lammps(args, test_config, true);
|
||||||
|
} catch (std::exception &e) {
|
||||||
|
std::string output = ::testing::internal::GetCapturedStdout();
|
||||||
|
if (verbose) std::cout << output;
|
||||||
|
FAIL() << e.what();
|
||||||
|
}
|
||||||
std::string output = ::testing::internal::GetCapturedStdout();
|
std::string output = ::testing::internal::GetCapturedStdout();
|
||||||
if (verbose) std::cout << output;
|
if (verbose) std::cout << output;
|
||||||
|
|
||||||
|
|||||||
@ -62,7 +62,7 @@ void cleanup_lammps(LAMMPS *lmp, const TestConfig &cfg)
|
|||||||
delete lmp;
|
delete lmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
LAMMPS *init_lammps(LAMMPS::argv &args, const TestConfig &cfg, const bool use_respa = false)
|
LAMMPS *init_lammps(LAMMPS::argv &args, const TestConfig &cfg, const bool use_respa)
|
||||||
{
|
{
|
||||||
LAMMPS *lmp;
|
LAMMPS *lmp;
|
||||||
|
|
||||||
@ -178,7 +178,12 @@ void generate_yaml_file(const char *outfile, const TestConfig &config)
|
|||||||
{
|
{
|
||||||
// initialize system geometry
|
// initialize system geometry
|
||||||
LAMMPS::argv args = {"FixIntegrate", "-log", "none", "-echo", "screen", "-nocite"};
|
LAMMPS::argv args = {"FixIntegrate", "-log", "none", "-echo", "screen", "-nocite"};
|
||||||
LAMMPS *lmp = init_lammps(args, config);
|
LAMMPS *lmp = nullptr;
|
||||||
|
try {
|
||||||
|
lmp = init_lammps(args, config, false);
|
||||||
|
} catch (std::exception &e) {
|
||||||
|
FAIL() << e.what();
|
||||||
|
}
|
||||||
if (!lmp) {
|
if (!lmp) {
|
||||||
std::cerr << "One or more prerequisite styles are not available "
|
std::cerr << "One or more prerequisite styles are not available "
|
||||||
"in this LAMMPS configuration:\n";
|
"in this LAMMPS configuration:\n";
|
||||||
@ -272,7 +277,14 @@ TEST(FixTimestep, plain)
|
|||||||
LAMMPS::argv args = {"FixTimestep", "-log", "none", "-echo", "screen", "-nocite"};
|
LAMMPS::argv args = {"FixTimestep", "-log", "none", "-echo", "screen", "-nocite"};
|
||||||
|
|
||||||
::testing::internal::CaptureStdout();
|
::testing::internal::CaptureStdout();
|
||||||
LAMMPS *lmp = init_lammps(args, test_config);
|
LAMMPS *lmp = nullptr;
|
||||||
|
try {
|
||||||
|
lmp = init_lammps(args, test_config, false);
|
||||||
|
} catch (std::exception &e) {
|
||||||
|
std::string output = ::testing::internal::GetCapturedStdout();
|
||||||
|
if (verbose) std::cout << output;
|
||||||
|
FAIL() << e.what();
|
||||||
|
}
|
||||||
std::string output = ::testing::internal::GetCapturedStdout();
|
std::string output = ::testing::internal::GetCapturedStdout();
|
||||||
if (verbose) std::cout << output;
|
if (verbose) std::cout << output;
|
||||||
|
|
||||||
@ -430,14 +442,20 @@ TEST(FixTimestep, plain)
|
|||||||
// fix nve/limit cannot work with r-RESPA
|
// fix nve/limit cannot work with r-RESPA
|
||||||
ifix = lmp->modify->get_fix_by_id("test");
|
ifix = lmp->modify->get_fix_by_id("test");
|
||||||
if (ifix && !utils::strmatch(ifix->style, "^rigid") &&
|
if (ifix && !utils::strmatch(ifix->style, "^rigid") &&
|
||||||
!utils::strmatch(ifix->style, "^nve/limit") &&
|
!utils::strmatch(ifix->style, "^nve/limit") && !utils::strmatch(ifix->style, "^recenter")) {
|
||||||
!utils::strmatch(ifix->style, "^recenter")) {
|
|
||||||
if (!verbose) ::testing::internal::CaptureStdout();
|
if (!verbose) ::testing::internal::CaptureStdout();
|
||||||
cleanup_lammps(lmp, test_config);
|
cleanup_lammps(lmp, test_config);
|
||||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||||
|
|
||||||
::testing::internal::CaptureStdout();
|
::testing::internal::CaptureStdout();
|
||||||
lmp = init_lammps(args, test_config, true);
|
LAMMPS *lmp = nullptr;
|
||||||
|
try {
|
||||||
|
lmp = init_lammps(args, test_config, true);
|
||||||
|
} catch (std::exception &e) {
|
||||||
|
output = ::testing::internal::GetCapturedStdout();
|
||||||
|
if (verbose) std::cout << output;
|
||||||
|
FAIL() << e.what();
|
||||||
|
}
|
||||||
output = ::testing::internal::GetCapturedStdout();
|
output = ::testing::internal::GetCapturedStdout();
|
||||||
if (verbose) std::cout << output;
|
if (verbose) std::cout << output;
|
||||||
|
|
||||||
@ -572,15 +590,26 @@ TEST(FixTimestep, omp)
|
|||||||
"-pk", "omp", "4", "-sf", "omp"};
|
"-pk", "omp", "4", "-sf", "omp"};
|
||||||
|
|
||||||
::testing::internal::CaptureStdout();
|
::testing::internal::CaptureStdout();
|
||||||
LAMMPS *lmp = init_lammps(args, test_config);
|
LAMMPS *lmp = nullptr;
|
||||||
|
try {
|
||||||
|
lmp = init_lammps(args, test_config, false);
|
||||||
|
} catch (std::exception &e) {
|
||||||
|
std::string output = ::testing::internal::GetCapturedStdout();
|
||||||
|
if (verbose) std::cout << output;
|
||||||
|
FAIL() << e.what();
|
||||||
|
}
|
||||||
std::string output = ::testing::internal::GetCapturedStdout();
|
std::string output = ::testing::internal::GetCapturedStdout();
|
||||||
if (verbose) std::cout << output;
|
if (verbose) std::cout << output;
|
||||||
|
|
||||||
if (!lmp) {
|
if (!lmp) {
|
||||||
std::cerr << "One or more prerequisite styles are not available "
|
std::cerr << "One or more prerequisite styles with /omp suffix are not available "
|
||||||
"in this LAMMPS configuration:\n";
|
"in this LAMMPS configuration:\n";
|
||||||
for (auto &prerequisite : test_config.prerequisites) {
|
for (auto &prerequisite : test_config.prerequisites) {
|
||||||
std::cerr << prerequisite.first << "_style " << prerequisite.second << "\n";
|
if (prerequisite.first == "atom") {
|
||||||
|
std::cerr << prerequisite.first << "_style " << prerequisite.second << "\n";
|
||||||
|
} else {
|
||||||
|
std::cerr << prerequisite.first << "_style " << prerequisite.second << "/omp\n";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
GTEST_SKIP();
|
GTEST_SKIP();
|
||||||
}
|
}
|
||||||
@ -731,7 +760,13 @@ TEST(FixTimestep, omp)
|
|||||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||||
|
|
||||||
::testing::internal::CaptureStdout();
|
::testing::internal::CaptureStdout();
|
||||||
lmp = init_lammps(args, test_config, true);
|
try {
|
||||||
|
lmp = init_lammps(args, test_config, true);
|
||||||
|
} catch (std::exception &e) {
|
||||||
|
output = ::testing::internal::GetCapturedStdout();
|
||||||
|
if (verbose) std::cout << output;
|
||||||
|
FAIL() << e.what();
|
||||||
|
}
|
||||||
output = ::testing::internal::GetCapturedStdout();
|
output = ::testing::internal::GetCapturedStdout();
|
||||||
if (verbose) std::cout << output;
|
if (verbose) std::cout << output;
|
||||||
|
|
||||||
@ -861,13 +896,21 @@ TEST(FixTimestep, kokkos_omp)
|
|||||||
// if KOKKOS has GPU support enabled, it *must* be used. We cannot test OpenMP only.
|
// if KOKKOS has GPU support enabled, it *must* be used. We cannot test OpenMP only.
|
||||||
if (Info::has_accelerator_feature("KOKKOS", "api", "cuda") ||
|
if (Info::has_accelerator_feature("KOKKOS", "api", "cuda") ||
|
||||||
Info::has_accelerator_feature("KOKKOS", "api", "hip") ||
|
Info::has_accelerator_feature("KOKKOS", "api", "hip") ||
|
||||||
Info::has_accelerator_feature("KOKKOS", "api", "sycl")) GTEST_SKIP();
|
Info::has_accelerator_feature("KOKKOS", "api", "sycl")) {
|
||||||
|
GTEST_SKIP() << "Cannot test KOKKOS/OpenMP with GPU support enabled";
|
||||||
|
}
|
||||||
LAMMPS::argv args = {"FixTimestep", "-log", "none", "-echo", "screen", "-nocite",
|
LAMMPS::argv args = {"FixTimestep", "-log", "none", "-echo", "screen", "-nocite",
|
||||||
"-k", "on", "t", "4", "-sf", "kk"};
|
"-k", "on", "t", "4", "-sf", "kk"};
|
||||||
|
|
||||||
::testing::internal::CaptureStdout();
|
::testing::internal::CaptureStdout();
|
||||||
LAMMPS *lmp = init_lammps(args, test_config);
|
LAMMPS *lmp = nullptr;
|
||||||
|
try {
|
||||||
|
lmp = init_lammps(args, test_config, false);
|
||||||
|
} catch (std::exception &e) {
|
||||||
|
std::string output = ::testing::internal::GetCapturedStdout();
|
||||||
|
if (verbose) std::cout << output;
|
||||||
|
FAIL() << e.what();
|
||||||
|
}
|
||||||
std::string output = ::testing::internal::GetCapturedStdout();
|
std::string output = ::testing::internal::GetCapturedStdout();
|
||||||
if (verbose) std::cout << output;
|
if (verbose) std::cout << output;
|
||||||
|
|
||||||
@ -875,7 +918,7 @@ TEST(FixTimestep, kokkos_omp)
|
|||||||
std::cerr << "One or more prerequisite styles with /kk suffix\n"
|
std::cerr << "One or more prerequisite styles with /kk suffix\n"
|
||||||
"are not available in this LAMMPS configuration:\n";
|
"are not available in this LAMMPS configuration:\n";
|
||||||
for (auto &prerequisite : test_config.prerequisites) {
|
for (auto &prerequisite : test_config.prerequisites) {
|
||||||
std::cerr << prerequisite.first << "_style " << prerequisite.second << "\n";
|
std::cerr << prerequisite.first << "_style " << prerequisite.second << "/kk\n";
|
||||||
}
|
}
|
||||||
GTEST_SKIP();
|
GTEST_SKIP();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -61,7 +61,7 @@ void cleanup_lammps(LAMMPS *lmp, const TestConfig &cfg)
|
|||||||
delete lmp;
|
delete lmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
LAMMPS *init_lammps(LAMMPS::argv &args, const TestConfig &cfg, const bool newton = true)
|
LAMMPS *init_lammps(LAMMPS::argv &args, const TestConfig &cfg, const bool newton)
|
||||||
{
|
{
|
||||||
LAMMPS *lmp;
|
LAMMPS *lmp;
|
||||||
|
|
||||||
@ -92,21 +92,7 @@ LAMMPS *init_lammps(LAMMPS::argv &args, const TestConfig &cfg, const bool newton
|
|||||||
|
|
||||||
// utility lambdas to improve readability
|
// utility lambdas to improve readability
|
||||||
auto command = [&](const std::string &line) {
|
auto command = [&](const std::string &line) {
|
||||||
try {
|
lmp->input->one(line);
|
||||||
lmp->input->one(line);
|
|
||||||
} catch (LAMMPSAbortException &ae) {
|
|
||||||
fprintf(stderr, "LAMMPS Error: %s\n", ae.what());
|
|
||||||
exit(2);
|
|
||||||
} catch (LAMMPSException &e) {
|
|
||||||
fprintf(stderr, "LAMMPS Error: %s\n", e.what());
|
|
||||||
exit(3);
|
|
||||||
} catch (fmt::format_error &fe) {
|
|
||||||
fprintf(stderr, "fmt::format_error: %s\n", fe.what());
|
|
||||||
exit(4);
|
|
||||||
} catch (std::exception &e) {
|
|
||||||
fprintf(stderr, "General exception: %s\n", e.what());
|
|
||||||
exit(5);
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
auto parse_input_script = [&](const std::string &filename) {
|
auto parse_input_script = [&](const std::string &filename) {
|
||||||
lmp->input->file(filename.c_str());
|
lmp->input->file(filename.c_str());
|
||||||
@ -230,7 +216,12 @@ void generate_yaml_file(const char *outfile, const TestConfig &config)
|
|||||||
// initialize system geometry
|
// initialize system geometry
|
||||||
LAMMPS::argv args = {"ImproperStyle", "-log", "none", "-echo", "screen", "-nocite"};
|
LAMMPS::argv args = {"ImproperStyle", "-log", "none", "-echo", "screen", "-nocite"};
|
||||||
|
|
||||||
LAMMPS *lmp = init_lammps(args, config);
|
LAMMPS *lmp = nullptr;
|
||||||
|
try {
|
||||||
|
lmp = init_lammps(args, config, true);
|
||||||
|
} catch (std::exception &e) {
|
||||||
|
FAIL() << e.what();
|
||||||
|
}
|
||||||
if (!lmp) {
|
if (!lmp) {
|
||||||
std::cerr << "One or more prerequisite styles are not available "
|
std::cerr << "One or more prerequisite styles are not available "
|
||||||
"in this LAMMPS configuration:\n";
|
"in this LAMMPS configuration:\n";
|
||||||
@ -315,8 +306,14 @@ TEST(ImproperStyle, plain)
|
|||||||
LAMMPS::argv args = {"ImproperStyle", "-log", "none", "-echo", "screen", "-nocite"};
|
LAMMPS::argv args = {"ImproperStyle", "-log", "none", "-echo", "screen", "-nocite"};
|
||||||
|
|
||||||
::testing::internal::CaptureStdout();
|
::testing::internal::CaptureStdout();
|
||||||
LAMMPS *lmp = init_lammps(args, test_config, true);
|
LAMMPS *lmp = nullptr;
|
||||||
|
try {
|
||||||
|
lmp = init_lammps(args, test_config, true);
|
||||||
|
} catch (std::exception &e) {
|
||||||
|
std::string output = ::testing::internal::GetCapturedStdout();
|
||||||
|
if (verbose) std::cout << output;
|
||||||
|
FAIL() << e.what();
|
||||||
|
}
|
||||||
std::string output = ::testing::internal::GetCapturedStdout();
|
std::string output = ::testing::internal::GetCapturedStdout();
|
||||||
if (verbose) std::cout << output;
|
if (verbose) std::cout << output;
|
||||||
|
|
||||||
@ -365,7 +362,12 @@ TEST(ImproperStyle, plain)
|
|||||||
|
|
||||||
if (!verbose) ::testing::internal::CaptureStdout();
|
if (!verbose) ::testing::internal::CaptureStdout();
|
||||||
cleanup_lammps(lmp, test_config);
|
cleanup_lammps(lmp, test_config);
|
||||||
lmp = init_lammps(args, test_config, false);
|
try {
|
||||||
|
lmp = init_lammps(args, test_config, false);
|
||||||
|
} catch (std::exception &e) {
|
||||||
|
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||||
|
FAIL() << e.what();
|
||||||
|
}
|
||||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||||
|
|
||||||
// skip over these tests if newton bond is forced to be on
|
// skip over these tests if newton bond is forced to be on
|
||||||
@ -435,8 +437,14 @@ TEST(ImproperStyle, omp)
|
|||||||
"-pk", "omp", "4", "-sf", "omp"};
|
"-pk", "omp", "4", "-sf", "omp"};
|
||||||
|
|
||||||
::testing::internal::CaptureStdout();
|
::testing::internal::CaptureStdout();
|
||||||
LAMMPS *lmp = init_lammps(args, test_config, true);
|
LAMMPS *lmp = nullptr;
|
||||||
|
try {
|
||||||
|
lmp = init_lammps(args, test_config, true);
|
||||||
|
} catch (std::exception &e) {
|
||||||
|
std::string output = ::testing::internal::GetCapturedStdout();
|
||||||
|
if (verbose) std::cout << output;
|
||||||
|
FAIL() << e.what();
|
||||||
|
}
|
||||||
std::string output = ::testing::internal::GetCapturedStdout();
|
std::string output = ::testing::internal::GetCapturedStdout();
|
||||||
if (verbose) std::cout << output;
|
if (verbose) std::cout << output;
|
||||||
|
|
||||||
@ -490,7 +498,12 @@ TEST(ImproperStyle, omp)
|
|||||||
|
|
||||||
if (!verbose) ::testing::internal::CaptureStdout();
|
if (!verbose) ::testing::internal::CaptureStdout();
|
||||||
cleanup_lammps(lmp, test_config);
|
cleanup_lammps(lmp, test_config);
|
||||||
lmp = init_lammps(args, test_config, false);
|
try {
|
||||||
|
lmp = init_lammps(args, test_config, false);
|
||||||
|
} catch (std::exception &e) {
|
||||||
|
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||||
|
FAIL() << e.what();
|
||||||
|
}
|
||||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||||
|
|
||||||
// skip over these tests if newton bond is forced to be on
|
// skip over these tests if newton bond is forced to be on
|
||||||
@ -536,15 +549,22 @@ TEST(ImproperStyle, kokkos_omp)
|
|||||||
// if KOKKOS has GPU support enabled, it *must* be used. We cannot test OpenMP only.
|
// if KOKKOS has GPU support enabled, it *must* be used. We cannot test OpenMP only.
|
||||||
if (Info::has_accelerator_feature("KOKKOS", "api", "cuda") ||
|
if (Info::has_accelerator_feature("KOKKOS", "api", "cuda") ||
|
||||||
Info::has_accelerator_feature("KOKKOS", "api", "hip") ||
|
Info::has_accelerator_feature("KOKKOS", "api", "hip") ||
|
||||||
Info::has_accelerator_feature("KOKKOS", "api", "sycl")) GTEST_SKIP();
|
Info::has_accelerator_feature("KOKKOS", "api", "sycl"))
|
||||||
|
GTEST_SKIP() << "Cannot test KOKKOS/OpenMP with GPU support enabled";
|
||||||
|
|
||||||
LAMMPS::argv args = {"ImproperStyle", "-log", "none", "-echo", "screen",
|
LAMMPS::argv args = {"ImproperStyle", "-log", "none", "-echo", "screen",
|
||||||
"-nocite", "-k", "on", "t", "4",
|
"-nocite", "-k", "on", "t", "4",
|
||||||
"-sf", "kk"};
|
"-sf", "kk"};
|
||||||
|
|
||||||
::testing::internal::CaptureStdout();
|
::testing::internal::CaptureStdout();
|
||||||
LAMMPS *lmp = init_lammps(args, test_config, true);
|
LAMMPS *lmp = nullptr;
|
||||||
|
try {
|
||||||
|
lmp = init_lammps(args, test_config, true);
|
||||||
|
} catch (std::exception &e) {
|
||||||
|
std::string output = ::testing::internal::GetCapturedStdout();
|
||||||
|
if (verbose) std::cout << output;
|
||||||
|
FAIL() << e.what();
|
||||||
|
}
|
||||||
std::string output = ::testing::internal::GetCapturedStdout();
|
std::string output = ::testing::internal::GetCapturedStdout();
|
||||||
if (verbose) std::cout << output;
|
if (verbose) std::cout << output;
|
||||||
|
|
||||||
@ -597,7 +617,12 @@ TEST(ImproperStyle, kokkos_omp)
|
|||||||
|
|
||||||
if (!verbose) ::testing::internal::CaptureStdout();
|
if (!verbose) ::testing::internal::CaptureStdout();
|
||||||
cleanup_lammps(lmp, test_config);
|
cleanup_lammps(lmp, test_config);
|
||||||
lmp = init_lammps(args, test_config, false);
|
try {
|
||||||
|
lmp = init_lammps(args, test_config, false);
|
||||||
|
} catch (std::exception &e) {
|
||||||
|
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||||
|
FAIL() << e.what();
|
||||||
|
}
|
||||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||||
|
|
||||||
// skip over these tests if newton bond is forced to be on
|
// skip over these tests if newton bond is forced to be on
|
||||||
@ -644,8 +669,14 @@ TEST(ImproperStyle, numdiff)
|
|||||||
LAMMPS::argv args = {"ImproperStyle", "-log", "none", "-echo", "screen", "-nocite"};
|
LAMMPS::argv args = {"ImproperStyle", "-log", "none", "-echo", "screen", "-nocite"};
|
||||||
|
|
||||||
::testing::internal::CaptureStdout();
|
::testing::internal::CaptureStdout();
|
||||||
LAMMPS *lmp = init_lammps(args, test_config, true);
|
LAMMPS *lmp = nullptr;
|
||||||
|
try {
|
||||||
|
lmp = init_lammps(args, test_config, true);
|
||||||
|
} catch (std::exception &e) {
|
||||||
|
std::string output = ::testing::internal::GetCapturedStdout();
|
||||||
|
if (verbose) std::cout << output;
|
||||||
|
FAIL() << e.what();
|
||||||
|
}
|
||||||
std::string output = ::testing::internal::GetCapturedStdout();
|
std::string output = ::testing::internal::GetCapturedStdout();
|
||||||
if (verbose) std::cout << output;
|
if (verbose) std::cout << output;
|
||||||
|
|
||||||
|
|||||||
@ -62,7 +62,7 @@ void cleanup_lammps(LAMMPS *lmp, const TestConfig &cfg)
|
|||||||
delete lmp;
|
delete lmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
LAMMPS *init_lammps(LAMMPS::argv &args, const TestConfig &cfg, const bool newton = true)
|
LAMMPS *init_lammps(LAMMPS::argv &args, const TestConfig &cfg, const bool newton)
|
||||||
{
|
{
|
||||||
LAMMPS *lmp;
|
LAMMPS *lmp;
|
||||||
|
|
||||||
@ -93,21 +93,7 @@ LAMMPS *init_lammps(LAMMPS::argv &args, const TestConfig &cfg, const bool newton
|
|||||||
|
|
||||||
// utility lambdas to improve readability
|
// utility lambdas to improve readability
|
||||||
auto command = [&](const std::string &line) {
|
auto command = [&](const std::string &line) {
|
||||||
try {
|
lmp->input->one(line);
|
||||||
lmp->input->one(line);
|
|
||||||
} catch (LAMMPSAbortException &ae) {
|
|
||||||
fprintf(stderr, "LAMMPS Error: %s\n", ae.what());
|
|
||||||
exit(2);
|
|
||||||
} catch (LAMMPSException &e) {
|
|
||||||
fprintf(stderr, "LAMMPS Error: %s\n", e.what());
|
|
||||||
exit(3);
|
|
||||||
} catch (fmt::format_error &fe) {
|
|
||||||
fprintf(stderr, "fmt::format_error: %s\n", fe.what());
|
|
||||||
exit(4);
|
|
||||||
} catch (std::exception &e) {
|
|
||||||
fprintf(stderr, "General exception: %s\n", e.what());
|
|
||||||
exit(5);
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
auto parse_input_script = [&](const std::string &filename) {
|
auto parse_input_script = [&](const std::string &filename) {
|
||||||
@ -242,8 +228,12 @@ void generate_yaml_file(const char *outfile, const TestConfig &config)
|
|||||||
{
|
{
|
||||||
// initialize system geometry
|
// initialize system geometry
|
||||||
LAMMPS::argv args = {"PairStyle", "-log", "none", "-echo", "screen", "-nocite"};
|
LAMMPS::argv args = {"PairStyle", "-log", "none", "-echo", "screen", "-nocite"};
|
||||||
|
LAMMPS *lmp = nullptr;
|
||||||
LAMMPS *lmp = init_lammps(args, config);
|
try {
|
||||||
|
lmp = init_lammps(args, config, true);
|
||||||
|
} catch (std::exception &e) {
|
||||||
|
FAIL() << e.what();
|
||||||
|
}
|
||||||
if (!lmp) {
|
if (!lmp) {
|
||||||
std::cerr << "One or more prerequisite styles are not available "
|
std::cerr << "One or more prerequisite styles are not available "
|
||||||
"in this LAMMPS configuration:\n";
|
"in this LAMMPS configuration:\n";
|
||||||
@ -340,8 +330,14 @@ TEST(PairStyle, plain)
|
|||||||
LAMMPS::argv args = {"PairStyle", "-log", "none", "-echo", "screen", "-nocite"};
|
LAMMPS::argv args = {"PairStyle", "-log", "none", "-echo", "screen", "-nocite"};
|
||||||
|
|
||||||
::testing::internal::CaptureStdout();
|
::testing::internal::CaptureStdout();
|
||||||
LAMMPS *lmp = init_lammps(args, test_config, true);
|
LAMMPS *lmp = nullptr;
|
||||||
|
try {
|
||||||
|
lmp = init_lammps(args, test_config, true);
|
||||||
|
} catch (std::exception &e) {
|
||||||
|
std::string output = ::testing::internal::GetCapturedStdout();
|
||||||
|
if (verbose) std::cout << output;
|
||||||
|
FAIL() << e.what();
|
||||||
|
}
|
||||||
std::string output = ::testing::internal::GetCapturedStdout();
|
std::string output = ::testing::internal::GetCapturedStdout();
|
||||||
if (verbose) std::cout << output;
|
if (verbose) std::cout << output;
|
||||||
|
|
||||||
@ -399,7 +395,12 @@ TEST(PairStyle, plain)
|
|||||||
|
|
||||||
if (!verbose) ::testing::internal::CaptureStdout();
|
if (!verbose) ::testing::internal::CaptureStdout();
|
||||||
cleanup_lammps(lmp, test_config);
|
cleanup_lammps(lmp, test_config);
|
||||||
lmp = init_lammps(args, test_config, false);
|
try {
|
||||||
|
lmp = init_lammps(args, test_config, false);
|
||||||
|
} catch (std::exception &e) {
|
||||||
|
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||||
|
FAIL() << e.what();
|
||||||
|
}
|
||||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||||
|
|
||||||
// skip over these tests if newton pair is forced to be on
|
// skip over these tests if newton pair is forced to be on
|
||||||
@ -480,9 +481,14 @@ TEST(PairStyle, plain)
|
|||||||
if (pair->respa_enable) {
|
if (pair->respa_enable) {
|
||||||
if (!verbose) ::testing::internal::CaptureStdout();
|
if (!verbose) ::testing::internal::CaptureStdout();
|
||||||
cleanup_lammps(lmp, test_config);
|
cleanup_lammps(lmp, test_config);
|
||||||
lmp = init_lammps(args, test_config, false);
|
try {
|
||||||
lmp->input->one("run_style respa 2 1 inner 1 4.8 5.5 outer 2");
|
lmp = init_lammps(args, test_config, false);
|
||||||
run_lammps(lmp);
|
lmp->input->one("run_style respa 2 1 inner 1 4.8 5.5 outer 2");
|
||||||
|
run_lammps(lmp);
|
||||||
|
} catch (std::exception &e) {
|
||||||
|
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||||
|
FAIL() << e.what();
|
||||||
|
}
|
||||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||||
|
|
||||||
// need to relax error by a large amount with tabulation, since
|
// need to relax error by a large amount with tabulation, since
|
||||||
@ -519,8 +525,14 @@ TEST(PairStyle, omp)
|
|||||||
if (utils::strmatch(test_config.pair_style, "^dpd")) args[8] = "1";
|
if (utils::strmatch(test_config.pair_style, "^dpd")) args[8] = "1";
|
||||||
|
|
||||||
::testing::internal::CaptureStdout();
|
::testing::internal::CaptureStdout();
|
||||||
LAMMPS *lmp = init_lammps(args, test_config, true);
|
LAMMPS *lmp = nullptr;
|
||||||
|
try {
|
||||||
|
lmp = init_lammps(args, test_config, true);
|
||||||
|
} catch (std::exception &e) {
|
||||||
|
std::string output = ::testing::internal::GetCapturedStdout();
|
||||||
|
if (verbose) std::cout << output;
|
||||||
|
FAIL() << e.what();
|
||||||
|
}
|
||||||
std::string output = ::testing::internal::GetCapturedStdout();
|
std::string output = ::testing::internal::GetCapturedStdout();
|
||||||
if (verbose) std::cout << output;
|
if (verbose) std::cout << output;
|
||||||
|
|
||||||
@ -578,7 +590,12 @@ TEST(PairStyle, omp)
|
|||||||
|
|
||||||
if (!verbose) ::testing::internal::CaptureStdout();
|
if (!verbose) ::testing::internal::CaptureStdout();
|
||||||
cleanup_lammps(lmp, test_config);
|
cleanup_lammps(lmp, test_config);
|
||||||
lmp = init_lammps(args, test_config, false);
|
try {
|
||||||
|
lmp = init_lammps(args, test_config, false);
|
||||||
|
} catch (std::exception &e) {
|
||||||
|
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||||
|
FAIL() << e.what();
|
||||||
|
}
|
||||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||||
|
|
||||||
pair = lmp->force->pair;
|
pair = lmp->force->pair;
|
||||||
@ -636,7 +653,9 @@ TEST(PairStyle, kokkos_omp)
|
|||||||
// if KOKKOS has GPU support enabled, it *must* be used. We cannot test OpenMP only.
|
// if KOKKOS has GPU support enabled, it *must* be used. We cannot test OpenMP only.
|
||||||
if (Info::has_accelerator_feature("KOKKOS", "api", "cuda") ||
|
if (Info::has_accelerator_feature("KOKKOS", "api", "cuda") ||
|
||||||
Info::has_accelerator_feature("KOKKOS", "api", "hip") ||
|
Info::has_accelerator_feature("KOKKOS", "api", "hip") ||
|
||||||
Info::has_accelerator_feature("KOKKOS", "api", "sycl")) GTEST_SKIP();
|
Info::has_accelerator_feature("KOKKOS", "api", "sycl")) {
|
||||||
|
GTEST_SKIP() << "Cannot test KOKKOS/OpenMP with GPU support enabled";
|
||||||
|
}
|
||||||
|
|
||||||
LAMMPS::argv args = {"PairStyle", "-log", "none", "-echo", "screen", "-nocite",
|
LAMMPS::argv args = {"PairStyle", "-log", "none", "-echo", "screen", "-nocite",
|
||||||
"-k", "on", "t", "4", "-sf", "kk"};
|
"-k", "on", "t", "4", "-sf", "kk"};
|
||||||
@ -655,8 +674,14 @@ TEST(PairStyle, kokkos_omp)
|
|||||||
args[9] = "1";
|
args[9] = "1";
|
||||||
|
|
||||||
::testing::internal::CaptureStdout();
|
::testing::internal::CaptureStdout();
|
||||||
LAMMPS *lmp = init_lammps(args, test_config, true);
|
LAMMPS *lmp = nullptr;
|
||||||
|
try {
|
||||||
|
lmp = init_lammps(args, test_config, true);
|
||||||
|
} catch (std::exception &e) {
|
||||||
|
std::string output = ::testing::internal::GetCapturedStdout();
|
||||||
|
if (verbose) std::cout << output;
|
||||||
|
FAIL() << e.what();
|
||||||
|
}
|
||||||
std::string output = ::testing::internal::GetCapturedStdout();
|
std::string output = ::testing::internal::GetCapturedStdout();
|
||||||
if (verbose) std::cout << output;
|
if (verbose) std::cout << output;
|
||||||
|
|
||||||
@ -713,7 +738,12 @@ TEST(PairStyle, kokkos_omp)
|
|||||||
if (lmp->force->newton_pair == 0) {
|
if (lmp->force->newton_pair == 0) {
|
||||||
if (!verbose) ::testing::internal::CaptureStdout();
|
if (!verbose) ::testing::internal::CaptureStdout();
|
||||||
cleanup_lammps(lmp, test_config);
|
cleanup_lammps(lmp, test_config);
|
||||||
lmp = init_lammps(args, test_config, false);
|
try {
|
||||||
|
lmp = init_lammps(args, test_config, false);
|
||||||
|
} catch (std::exception &e) {
|
||||||
|
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||||
|
FAIL() << e.what();
|
||||||
|
}
|
||||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||||
|
|
||||||
pair = lmp->force->pair;
|
pair = lmp->force->pair;
|
||||||
@ -788,8 +818,14 @@ TEST(PairStyle, gpu)
|
|||||||
}
|
}
|
||||||
|
|
||||||
::testing::internal::CaptureStdout();
|
::testing::internal::CaptureStdout();
|
||||||
LAMMPS *lmp = init_lammps(args, test_config, false);
|
LAMMPS *lmp = nullptr;
|
||||||
|
try {
|
||||||
|
lmp = init_lammps(args, test_config, false);
|
||||||
|
} catch (std::exception &e) {
|
||||||
|
std::string output = ::testing::internal::GetCapturedStdout();
|
||||||
|
if (verbose) std::cout << output;
|
||||||
|
FAIL() << e.what();
|
||||||
|
}
|
||||||
std::string output = ::testing::internal::GetCapturedStdout();
|
std::string output = ::testing::internal::GetCapturedStdout();
|
||||||
if (verbose) std::cout << output;
|
if (verbose) std::cout << output;
|
||||||
|
|
||||||
@ -868,8 +904,14 @@ TEST(PairStyle, intel)
|
|||||||
if (utils::strmatch(test_config.pair_style, "^dpd")) args[12] = "1";
|
if (utils::strmatch(test_config.pair_style, "^dpd")) args[12] = "1";
|
||||||
|
|
||||||
::testing::internal::CaptureStdout();
|
::testing::internal::CaptureStdout();
|
||||||
LAMMPS *lmp = init_lammps(args, test_config, true);
|
LAMMPS *lmp = nullptr;
|
||||||
|
try {
|
||||||
|
lmp = init_lammps(args, test_config, true);
|
||||||
|
} catch (std::exception &e) {
|
||||||
|
std::string output = ::testing::internal::GetCapturedStdout();
|
||||||
|
if (verbose) std::cout << output;
|
||||||
|
FAIL() << e.what();
|
||||||
|
}
|
||||||
std::string output = ::testing::internal::GetCapturedStdout();
|
std::string output = ::testing::internal::GetCapturedStdout();
|
||||||
if (verbose) std::cout << output;
|
if (verbose) std::cout << output;
|
||||||
|
|
||||||
@ -948,8 +990,14 @@ TEST(PairStyle, opt)
|
|||||||
LAMMPS::argv args = {"PairStyle", "-log", "none", "-echo", "screen", "-nocite", "-sf", "opt"};
|
LAMMPS::argv args = {"PairStyle", "-log", "none", "-echo", "screen", "-nocite", "-sf", "opt"};
|
||||||
|
|
||||||
::testing::internal::CaptureStdout();
|
::testing::internal::CaptureStdout();
|
||||||
LAMMPS *lmp = init_lammps(args, test_config);
|
LAMMPS *lmp = nullptr;
|
||||||
|
try {
|
||||||
|
lmp = init_lammps(args, test_config, true);
|
||||||
|
} catch (std::exception &e) {
|
||||||
|
std::string output = ::testing::internal::GetCapturedStdout();
|
||||||
|
if (verbose) std::cout << output;
|
||||||
|
FAIL() << e.what();
|
||||||
|
}
|
||||||
std::string output = ::testing::internal::GetCapturedStdout();
|
std::string output = ::testing::internal::GetCapturedStdout();
|
||||||
if (verbose) std::cout << output;
|
if (verbose) std::cout << output;
|
||||||
|
|
||||||
@ -1032,7 +1080,13 @@ TEST(PairStyle, single)
|
|||||||
|
|
||||||
// create a LAMMPS instance with standard settings to detect the number of atom types
|
// create a LAMMPS instance with standard settings to detect the number of atom types
|
||||||
if (!verbose) ::testing::internal::CaptureStdout();
|
if (!verbose) ::testing::internal::CaptureStdout();
|
||||||
LAMMPS *lmp = init_lammps(args, test_config);
|
LAMMPS *lmp = nullptr;
|
||||||
|
try {
|
||||||
|
lmp = init_lammps(args, test_config, true);
|
||||||
|
} catch (std::exception &e) {
|
||||||
|
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||||
|
FAIL() << e.what();
|
||||||
|
}
|
||||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||||
|
|
||||||
if (!lmp) {
|
if (!lmp) {
|
||||||
@ -1276,7 +1330,13 @@ TEST(PairStyle, extract)
|
|||||||
LAMMPS::argv args = {"PairStyle", "-log", "none", "-echo", "screen", "-nocite"};
|
LAMMPS::argv args = {"PairStyle", "-log", "none", "-echo", "screen", "-nocite"};
|
||||||
|
|
||||||
if (!verbose) ::testing::internal::CaptureStdout();
|
if (!verbose) ::testing::internal::CaptureStdout();
|
||||||
LAMMPS *lmp = init_lammps(args, test_config, true);
|
LAMMPS *lmp = nullptr;
|
||||||
|
try {
|
||||||
|
lmp = init_lammps(args, test_config, true);
|
||||||
|
} catch (std::exception &e) {
|
||||||
|
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||||
|
FAIL() << e.what();
|
||||||
|
}
|
||||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||||
|
|
||||||
if (!lmp) {
|
if (!lmp) {
|
||||||
|
|||||||
Reference in New Issue
Block a user