From d080c20c20854591b00750a98dceca95449d3a1a Mon Sep 17 00:00:00 2001 From: Marcus Holland-Moritz Date: Sun, 17 Aug 2025 18:38:50 +0200 Subject: [PATCH] fix(conv): `try_to` wasn't actually calling `str_to_bool` --- include/dwarfs/conv.h | 2 +- test/utils_test.cpp | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/include/dwarfs/conv.h b/include/dwarfs/conv.h index dafe9572..da4baf8a 100644 --- a/include/dwarfs/conv.h +++ b/include/dwarfs/conv.h @@ -77,7 +77,7 @@ std::optional try_to(std::string_view s) template std::optional try_to(U&& s) - requires(std::convertible_to) + requires(!std::same_as && std::convertible_to) { return std::forward(s); } diff --git a/test/utils_test.cpp b/test/utils_test.cpp index 06e0cc0b..ca5153e1 100644 --- a/test/utils_test.cpp +++ b/test/utils_test.cpp @@ -29,6 +29,8 @@ #include #include +#include + #include #include @@ -390,3 +392,34 @@ TEST(utils, parse_time_point) { ::testing::ThrowsMessage( ::testing::HasSubstr("cannot parse time point"))); } + +TEST(utils, getenv_is_enabled) { + static char const* const test_var = "_DWARFS_THIS_IS_A_TEST_"; + + EXPECT_EQ(0, unsetenv("_DWARFS_THIS_IS_A_TEST_")); + EXPECT_FALSE(getenv_is_enabled(test_var)); + + EXPECT_EQ(0, setenv(test_var, "0", 1)); + EXPECT_FALSE(getenv_is_enabled(test_var)); + + EXPECT_EQ(0, setenv(test_var, "1", 1)); + EXPECT_TRUE(getenv_is_enabled(test_var)); + + EXPECT_EQ(0, setenv(test_var, "false", 1)); + EXPECT_FALSE(getenv_is_enabled(test_var)); + + EXPECT_EQ(0, setenv(test_var, "true", 1)); + EXPECT_TRUE(getenv_is_enabled(test_var)); + + EXPECT_EQ(0, setenv(test_var, "off", 1)); + EXPECT_FALSE(getenv_is_enabled(test_var)); + + EXPECT_EQ(0, setenv(test_var, "on", 1)); + EXPECT_TRUE(getenv_is_enabled(test_var)); + + EXPECT_EQ(0, setenv(test_var, "ThisAintBool", 1)); + EXPECT_FALSE(getenv_is_enabled(test_var)); + + EXPECT_EQ(0, unsetenv(test_var)); + EXPECT_FALSE(getenv_is_enabled(test_var)); +}