Commit c6ddbeb2814ac0eb0331f3e7c10f7b49af91d1c7
Committed by
Henry Schreiner
1 parent
93311928
Fix for spaces in names issue
Showing
4 changed files
with
27 additions
and
2 deletions
include/CLI/Split.hpp
| ... | ... | @@ -44,10 +44,10 @@ inline std::vector<std::string> split_names(std::string current) { |
| 44 | 44 | std::vector<std::string> output; |
| 45 | 45 | size_t val; |
| 46 | 46 | while((val = current.find(",")) != std::string::npos) { |
| 47 | - output.push_back(current.substr(0, val)); | |
| 47 | + output.push_back(trim_copy(current.substr(0, val))); | |
| 48 | 48 | current = current.substr(val + 1); |
| 49 | 49 | } |
| 50 | - output.push_back(current); | |
| 50 | + output.push_back(trim_copy(current)); | |
| 51 | 51 | return output; |
| 52 | 52 | } |
| 53 | 53 | ... | ... |
tests/AppTest.cpp
tests/CreationTest.cpp
| ... | ... | @@ -230,3 +230,24 @@ TEST_F(TApp, CheckNameNoCase) { |
| 230 | 230 | EXPECT_TRUE(pos2->check_name("pOs2")); |
| 231 | 231 | EXPECT_TRUE(pos2->check_name("pos2")); |
| 232 | 232 | } |
| 233 | + | |
| 234 | + | |
| 235 | +TEST_F(TApp, PreSpaces) { | |
| 236 | + int x; | |
| 237 | + auto myapp = app.add_option(" -a, --long, other", x); | |
| 238 | + | |
| 239 | + EXPECT_TRUE(myapp->check_lname("long")); | |
| 240 | + EXPECT_TRUE(myapp->check_sname("a")); | |
| 241 | + EXPECT_TRUE(myapp->check_name("other")); | |
| 242 | + | |
| 243 | +} | |
| 244 | + | |
| 245 | +TEST_F(TApp, AllSpaces) { | |
| 246 | + int x; | |
| 247 | + auto myapp = app.add_option(" -a , --long , other ", x); | |
| 248 | + | |
| 249 | + EXPECT_TRUE(myapp->check_lname("long")); | |
| 250 | + EXPECT_TRUE(myapp->check_sname("a")); | |
| 251 | + EXPECT_TRUE(myapp->check_name("other")); | |
| 252 | + | |
| 253 | +} | ... | ... |
tests/HelpersTest.cpp
| ... | ... | @@ -179,6 +179,9 @@ TEST(Split, StringList) { |
| 179 | 179 | |
| 180 | 180 | std::vector<std::string> results{"a", "long", "--lone", "-q"}; |
| 181 | 181 | EXPECT_EQ(results, CLI::detail::split_names("a,long,--lone,-q")); |
| 182 | + EXPECT_EQ(results, CLI::detail::split_names(" a, long, --lone, -q")); | |
| 183 | + EXPECT_EQ(results, CLI::detail::split_names(" a , long , --lone , -q ")); | |
| 184 | + EXPECT_EQ(results, CLI::detail::split_names(" a , long , --lone , -q ")); | |
| 182 | 185 | |
| 183 | 186 | EXPECT_EQ(std::vector<std::string>({"one"}), CLI::detail::split_names("one")); |
| 184 | 187 | } | ... | ... |