diff options
| author | Tobias Kohlbau <tobias@kohlbau.de> | 2017-04-27 12:20:21 +0200 |
|---|---|---|
| committer | Tobias Kohlbau <tobias@kohlbau.de> | 2017-04-27 12:20:21 +0200 |
| commit | 4302675092ccad14b09dd8c0f548248832a537e8 (patch) | |
| tree | f9f35b2007b0eb71ac303e4aee08bc1501d88956 /toolsrc/src | |
| parent | d6d506d678273f729a86b985c3cb85c291d6751b (diff) | |
| download | vcpkg-4302675092ccad14b09dd8c0f548248832a537e8.tar.gz vcpkg-4302675092ccad14b09dd8c0f548248832a537e8.zip | |
[options] makes options case insensitive
This resolves #987
Signed-off-by: Tobias Kohlbau <tobias@kohlbau.de>
Diffstat (limited to 'toolsrc/src')
| -rw-r--r-- | toolsrc/src/VcpkgCmdArguments.cpp | 3 | ||||
| -rw-r--r-- | toolsrc/src/tests_arguments.cpp | 46 |
2 files changed, 49 insertions, 0 deletions
diff --git a/toolsrc/src/VcpkgCmdArguments.cpp b/toolsrc/src/VcpkgCmdArguments.cpp index 86b1b6d8c..2d4205240 100644 --- a/toolsrc/src/VcpkgCmdArguments.cpp +++ b/toolsrc/src/VcpkgCmdArguments.cpp @@ -78,6 +78,9 @@ namespace vcpkg if (arg[0] == '-' && arg[1] == '-') { + // make argument case insensitive + auto &f = std::use_facet<std::ctype<char>>(std::locale()); + f.tolower(&arg[0], &arg[0] + arg.size()); // command switch if (arg == "--vcpkg-root") { diff --git a/toolsrc/src/tests_arguments.cpp b/toolsrc/src/tests_arguments.cpp new file mode 100644 index 000000000..7cdf68048 --- /dev/null +++ b/toolsrc/src/tests_arguments.cpp @@ -0,0 +1,46 @@ +#include "CppUnitTest.h"
+#include "VcpkgCmdArguments.h"
+
+#pragma comment(lib,"version") +#pragma comment(lib,"winhttp") + +using namespace Microsoft::VisualStudio::CppUnitTestFramework; + +using namespace vcpkg; + +namespace UnitTest1 +{ + TEST_CLASS(ArgumentTests) + { + public: + TEST_METHOD(create_from_arg_sequence_options_lower) + { + std::vector<std::string> t = { + "--vcpkg-root", "C:\vcpkg", + "--debug", + "--sendmetrics", + "--printmetrics" + }; + auto v = VcpkgCmdArguments::create_from_arg_sequence(t.data(), t.data() + t.size()); + Assert::AreEqual("C:\vcpkg", v.vcpkg_root_dir.get()->c_str()); + Assert::IsTrue(vcpkg::OptBoolC::ENABLED == v.debug); + Assert::IsTrue(vcpkg::OptBoolC::ENABLED == v.sendmetrics); + Assert::IsTrue(vcpkg::OptBoolC::ENABLED == v.printmetrics); + } + + TEST_METHOD(create_from_arg_sequence_options_upper) + { + std::vector<std::string> t = { + "--VCPKG-ROOT", "C:\vcpkg", + "--DEBUG", + "--SENDMETRICS", + "--PRINTMETRICS" + }; + auto v = VcpkgCmdArguments::create_from_arg_sequence(t.data(), t.data() + t.size()); + Assert::AreEqual("C:\vcpkg", v.vcpkg_root_dir.get()->c_str()); + Assert::IsTrue(vcpkg::OptBoolC::ENABLED == v.debug); + Assert::IsTrue(vcpkg::OptBoolC::ENABLED == v.sendmetrics); + Assert::IsTrue(vcpkg::OptBoolC::ENABLED == v.printmetrics); + } + }; +}
\ No newline at end of file |
