From af05a507409a5c50343a21498562ca12f23c49d3 Mon Sep 17 00:00:00 2001 From: Julian Brost Date: Fri, 9 Apr 2021 15:28:40 +0200 Subject: [PATCH] Avoid dependency on Visual C++ ATL in tests on Windows Better not have dependencies on Visual C++ if you can do without. --- test/base-utility.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/test/base-utility.cpp b/test/base-utility.cpp index eb59bf3f9..1da0a623b 100644 --- a/test/base-utility.cpp +++ b/test/base-utility.cpp @@ -7,7 +7,6 @@ #ifdef _WIN32 # include # include -# include #endif /* _WIN32 */ using namespace icinga; @@ -84,6 +83,8 @@ BOOST_AUTO_TEST_CASE(validateutf8) BOOST_AUTO_TEST_CASE(EscapeCreateProcessArg) { #ifdef _WIN32 + using convert = std::wstring_convert, wchar_t>; + std::vector testdata = { R"(foobar)", R"(foo bar)", @@ -98,11 +99,11 @@ BOOST_AUTO_TEST_CASE(EscapeCreateProcessArg) // Prepend some fake exec name as the first argument is handled differently. std::string escaped = "some.exe " + Utility::EscapeCreateProcessArg(t); int argc; - std::shared_ptr argv(CommandLineToArgvW(CA2W(escaped.c_str()), &argc), LocalFree); + std::shared_ptr argv(CommandLineToArgvW(convert{}.from_bytes(escaped.c_str()).data(), &argc), LocalFree); BOOST_CHECK_MESSAGE(argv != nullptr, "CommandLineToArgvW() should not return nullptr for " << t); BOOST_CHECK_MESSAGE(argc == 2, "CommandLineToArgvW() should find 2 arguments for " << t); if (argc >= 2) { - std::string unescaped = CW2A(argv.get()[1]); + std::string unescaped = convert{}.to_bytes(argv.get()[1]); BOOST_CHECK_MESSAGE(unescaped == t, "CommandLineToArgvW() should return original value for " << t << " (got: " << unescaped << ")"); }