diff options
Diffstat (limited to 'toolsrc/src/vcpkg-test/system.cpp')
| -rw-r--r-- | toolsrc/src/vcpkg-test/system.cpp | 52 |
1 files changed, 33 insertions, 19 deletions
diff --git a/toolsrc/src/vcpkg-test/system.cpp b/toolsrc/src/vcpkg-test/system.cpp index 6e87f9b3e..8b44f8f24 100644 --- a/toolsrc/src/vcpkg-test/system.cpp +++ b/toolsrc/src/vcpkg-test/system.cpp @@ -7,16 +7,17 @@ #include <vcpkg/base/zstringview.h> #include <vcpkg/base/strings.h> #include <vcpkg/base/system.h> +#include <vcpkg/base/system.process.h> +using vcpkg::nullopt; using vcpkg::Optional; using vcpkg::StringView; using vcpkg::ZStringView; using vcpkg::Checks::check_exit; +using vcpkg::System::CPUArchitecture; using vcpkg::System::get_environment_variable; -using vcpkg::System::to_cpu_architecture; using vcpkg::System::guess_visual_studio_prompt_target_architecture; -using vcpkg::nullopt; -using vcpkg::System::CPUArchitecture; +using vcpkg::System::to_cpu_architecture; namespace { @@ -126,30 +127,43 @@ TEST_CASE ("guess_visual_studio_prompt", "[system]") set_environment_variable("VSCMD_ARG_TGT_ARCH", nullopt); CHECK(!guess_visual_studio_prompt_target_architecture().has_value()); set_environment_variable("VSCMD_ARG_TGT_ARCH", "x86"); - CHECK(guess_visual_studio_prompt_target_architecture() - .value_or_exit(VCPKG_LINE_INFO) == CPUArchitecture::X86); + CHECK(guess_visual_studio_prompt_target_architecture().value_or_exit(VCPKG_LINE_INFO) == CPUArchitecture::X86); set_environment_variable("VSCMD_ARG_TGT_ARCH", "x64"); - CHECK(guess_visual_studio_prompt_target_architecture() - .value_or_exit(VCPKG_LINE_INFO) == CPUArchitecture::X64); + CHECK(guess_visual_studio_prompt_target_architecture().value_or_exit(VCPKG_LINE_INFO) == CPUArchitecture::X64); set_environment_variable("VSCMD_ARG_TGT_ARCH", "arm"); - CHECK(guess_visual_studio_prompt_target_architecture() - .value_or_exit(VCPKG_LINE_INFO) == CPUArchitecture::ARM); + CHECK(guess_visual_studio_prompt_target_architecture().value_or_exit(VCPKG_LINE_INFO) == CPUArchitecture::ARM); set_environment_variable("VSCMD_ARG_TGT_ARCH", "arm64"); - CHECK(guess_visual_studio_prompt_target_architecture() - .value_or_exit(VCPKG_LINE_INFO) == CPUArchitecture::ARM64); + CHECK(guess_visual_studio_prompt_target_architecture().value_or_exit(VCPKG_LINE_INFO) == CPUArchitecture::ARM64); // check that apparent "nested" prompts defer to "vsdevcmd" set_environment_variable("VCINSTALLDIR", "anything"); - CHECK(guess_visual_studio_prompt_target_architecture() - .value_or_exit(VCPKG_LINE_INFO) == CPUArchitecture::ARM64); + CHECK(guess_visual_studio_prompt_target_architecture().value_or_exit(VCPKG_LINE_INFO) == CPUArchitecture::ARM64); set_environment_variable("VSCMD_ARG_TGT_ARCH", nullopt); set_environment_variable("Platform", nullopt); - CHECK(guess_visual_studio_prompt_target_architecture() - .value_or_exit(VCPKG_LINE_INFO) == CPUArchitecture::X86); + CHECK(guess_visual_studio_prompt_target_architecture().value_or_exit(VCPKG_LINE_INFO) == CPUArchitecture::X86); set_environment_variable("Platform", "x86"); - CHECK(guess_visual_studio_prompt_target_architecture() - .value_or_exit(VCPKG_LINE_INFO) == CPUArchitecture::X86); + CHECK(guess_visual_studio_prompt_target_architecture().value_or_exit(VCPKG_LINE_INFO) == CPUArchitecture::X86); set_environment_variable("Platform", "x64"); - CHECK(guess_visual_studio_prompt_target_architecture() - .value_or_exit(VCPKG_LINE_INFO) == CPUArchitecture::X64); + CHECK(guess_visual_studio_prompt_target_architecture().value_or_exit(VCPKG_LINE_INFO) == CPUArchitecture::X64); +} + +TEST_CASE ("cmdlinebuilder", "[system]") +{ + using vcpkg::System::CmdLineBuilder; + + CmdLineBuilder cmd; + cmd.path_arg(fs::u8path("relative/path.exe")); + cmd.string_arg("abc"); + cmd.string_arg("hello world!"); + cmd.string_arg("|"); + cmd.string_arg(";"); + REQUIRE(cmd.extract() == "relative/path.exe abc \"hello world!\" \"|\" \";\""); + + cmd.path_arg(fs::u8path("trailing\\slash\\")); + cmd.string_arg("inner\"quotes"); +#ifdef _WIN32 + REQUIRE(cmd.extract() == "\"trailing\\slash\\\\\" \"inner\\\"quotes\""); +#else + REQUIRE(cmd.extract() == "\"trailing\\\\slash\\\\\" \"inner\\\"quotes\""); +#endif } |
