From 7176900df615d6a2fa846736f76cc3df90b51f5c Mon Sep 17 00:00:00 2001 From: William Breathitt Gray Date: Tue, 8 Sep 2020 09:41:16 -0400 Subject: dev-cpp/prometheus-cpp: Add patch to skip test if locale not available Closes: https://bugs.gentoo.org/741040 Signed-off-by: William Breathitt Gray Closes: https://github.com/gentoo/gentoo/pull/17466 Signed-off-by: Joonas Niilola --- ...erialization-test-if-locale-is-not-availa.patch | 80 ++++++++++++++++++++++ dev-cpp/prometheus-cpp/prometheus-cpp-0.9.0.ebuild | 4 ++ 2 files changed, 84 insertions(+) create mode 100644 dev-cpp/prometheus-cpp/files/prometheus-cpp-0.9.0-core-Skip-serialization-test-if-locale-is-not-availa.patch (limited to 'dev-cpp') diff --git a/dev-cpp/prometheus-cpp/files/prometheus-cpp-0.9.0-core-Skip-serialization-test-if-locale-is-not-availa.patch b/dev-cpp/prometheus-cpp/files/prometheus-cpp-0.9.0-core-Skip-serialization-test-if-locale-is-not-availa.patch new file mode 100644 index 000000000000..ced0b80e83e9 --- /dev/null +++ b/dev-cpp/prometheus-cpp/files/prometheus-cpp-0.9.0-core-Skip-serialization-test-if-locale-is-not-availa.patch @@ -0,0 +1,80 @@ +From bf6e2ce56abe2a710181f0365a21ca2dafd2a8f5 Mon Sep 17 00:00:00 2001 +From: Gregor Jasny +Date: Fri, 13 Mar 2020 13:16:56 +0100 +Subject: [PATCH] core: Skip serialization test if locale is not available + +Closes: #345 +--- + core/tests/raii_locale.h | 15 +++++++++++++++ + core/tests/serializer_test.cc | 21 ++++++++++++++------- + 2 files changed, 29 insertions(+), 7 deletions(-) + create mode 100644 core/tests/raii_locale.h + +diff --git a/core/tests/raii_locale.h b/core/tests/raii_locale.h +new file mode 100644 +index 0000000..592d74f +--- /dev/null ++++ b/core/tests/raii_locale.h +@@ -0,0 +1,15 @@ ++#pragma once ++ ++#include ++ ++class RAIILocale { ++ public: ++ RAIILocale(const char* name) : savedLocale_(std::locale::classic()) { ++ std::locale::global(std::locale(name)); ++ } ++ ++ ~RAIILocale() { std::locale::global(savedLocale_); } ++ ++ private: ++ const std::locale savedLocale_; ++}; +diff --git a/core/tests/serializer_test.cc b/core/tests/serializer_test.cc +index f935a3b..6cb8f0e 100644 +--- a/core/tests/serializer_test.cc ++++ b/core/tests/serializer_test.cc +@@ -1,9 +1,13 @@ + #include "prometheus/counter.h" ++#include "prometheus/detail/future_std.h" + #include "prometheus/family.h" + #include "prometheus/text_serializer.h" + ++#include "raii_locale.h" ++ + #include +-#include ++ ++#include + #include + + namespace prometheus { +@@ -25,15 +29,18 @@ class SerializerTest : public testing::Test { + + #ifndef _WIN32 + TEST_F(SerializerTest, shouldSerializeLocaleIndependent) { +- // save and change locale +- const std::locale oldLocale = std::locale::classic(); +- std::locale::global(std::locale("de_DE.UTF-8")); ++ std::unique_ptr localeWithCommaDecimalSeparator; ++ ++ // ignore missing locale and skip test if setup fails ++ try { ++ localeWithCommaDecimalSeparator = ++ detail::make_unique("de_DE.UTF-8"); ++ } catch (std::runtime_error&) { ++ GTEST_SKIP(); ++ } + + const auto serialized = textSerializer.Serialize(collected); + EXPECT_THAT(serialized, testing::HasSubstr("1.0")); +- +- // restore locale +- std::locale::global(oldLocale); + } + #endif + +-- +2.28.0 + diff --git a/dev-cpp/prometheus-cpp/prometheus-cpp-0.9.0.ebuild b/dev-cpp/prometheus-cpp/prometheus-cpp-0.9.0.ebuild index 3cd755921597..75d66bcbc3d2 100644 --- a/dev-cpp/prometheus-cpp/prometheus-cpp-0.9.0.ebuild +++ b/dev-cpp/prometheus-cpp/prometheus-cpp-0.9.0.ebuild @@ -26,6 +26,10 @@ DEPEND="${RDEPEND} dev-cpp/gtest )" +PATCHES=( + "${FILESDIR}/${P}-core-Skip-serialization-test-if-locale-is-not-availa.patch" +) + src_configure() { local mycmakeargs=( -DENABLE_PULL=yes -- cgit v1.2.3-65-gdbad