fix(conv): try_to<bool> wasn't actually calling str_to_bool

This commit is contained in:
Marcus Holland-Moritz 2025-08-17 18:38:50 +02:00
parent 03e54a490c
commit d080c20c20
2 changed files with 34 additions and 1 deletions

View File

@ -77,7 +77,7 @@ std::optional<bool> try_to(std::string_view s)
template <typename T, typename U>
std::optional<T> try_to(U&& s)
requires(std::convertible_to<U, T>)
requires(!std::same_as<T, bool> && std::convertible_to<U, T>)
{
return std::forward<U>(s);
}

View File

@ -29,6 +29,8 @@
#include <tuple>
#include <vector>
#include <folly/portability/Stdlib.h>
#include <dwarfs/error.h>
#include <dwarfs/util.h>
@ -390,3 +392,34 @@ TEST(utils, parse_time_point) {
::testing::ThrowsMessage<dwarfs::runtime_error>(
::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));
}