diff --git a/include/pcp-cpp/pmda.hpp b/include/pcp-cpp/pmda.hpp index 319881a..965bdbd 100644 --- a/include/pcp-cpp/pmda.hpp +++ b/include/pcp-cpp/pmda.hpp @@ -754,6 +754,8 @@ class pmda { */ virtual void display_version() const { + const std::ostream::fmtflags cout_format_flags(std::cout.flags()); + std::cout << std::endl << get_pmda_name() << " PMDA"; const std::string pmda_version = get_pmda_version(); if (!pmda_version.empty()) { @@ -765,6 +767,8 @@ class pmda { << get_pcp_runtime_version() << " (" << std::hex << get_pcp_runtime_version() << ')' << std::endl << std::endl; + + std::cout.flags(cout_format_flags); // Restore cout to its entry state. } /** diff --git a/test/unit/src/test_pmda.cpp b/test/unit/src/test_pmda.cpp index 9ad9a80..888836f 100644 --- a/test/unit/src/test_pmda.cpp +++ b/test/unit/src/test_pmda.cpp @@ -307,3 +307,14 @@ TEST(pmda, store_value_throws_by_default) { const pmValueBlock * const value = NULL; EXPECT_THROW(pmda.store_value(metric_id, value), pcp::exception); } + +TEST(pmda, display_functions_do_not_leave_cout_flags_modified) { + const std::ostream::fmtflags flags(std::cout.flags()); + const stub_pmda pmda; + + pmda.display_help(pmda.get_pmda_name()); + EXPECT_EQ(flags, std::cout.flags()); + + pmda.display_version(); + EXPECT_EQ(flags, std::cout.flags()); +}