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)); +}