id,summary,reporter,owner,description,type,status,milestone,component,version,severity,resolution,keywords,cc 11825,Parsing command-line arguments on Windows,Mateusz Loskot,Gennadiy Rozental,"(I originally posted to the mailing list, thread [http://lists.boost.org/boost-users/2015/11/85342.php Parsing command-line arguments on Windows], but I suspect it is a bug, hence the ticket.) TL;TR: Boost.Test arguments parser is not handling Windows CLI patterns/rules correctly. Here is table with four example of command-line input on Windows and expected values of 'argv' elements, according to the rules when interpreting arguments, escape sequences etc.: https://msdn.microsoft.com/en-us/library/17w5ykft.aspx Here is simple program to test those rules with 'boost::unit_test::framework::master_test_suite' machinery: {{{ ///////// Boost.Test program /////////////////////////////////////// #define BOOST_TEST_MAIN #include BOOST_AUTO_TEST_CASE(argv_parsing) { auto argc = boost::unit_test::framework::master_test_suite().argc; auto argv = boost::unit_test::framework::master_test_suite().argv; for (int i = 0; i < argc; ++i) std::printf(""%d: %s\n"", i, argv[i]); } }}} and the four rules tested: {{{ F:\test_boost\Debug>test_boost.exe ""abc"" d e Running 1 test case... 0: test_boost.exe 1: abc 2: d 3: e F:\test_boost\Debug>test_boost.exe a\\b d""e f""g h Running 1 test case... 0: test_boost.exe 1: a\\b 2: de 3: fg 4: h F:\test_boost\Debug>test_boost.exe a\\\""b c d Running 1 test case... 0: test_boost.exe 1: a\""b 2: c 3: d F:\test_boost\Debug>test_boost.exe a\\\\""b c"" d e Running 1 test case... 0: test_boost.exe 1: a\\b 2: c 3: d 4: e }}} Results summary: Boost.Test gives different arguments in the runs, than presented in the MSDN article above. {{{ #2 (input: a\\b d""e f""g h) #4 (input: a\\\\""b c"" d e) }}} I can't see any caveats mentioned in the documentation http://www.boost.org/doc/libs/1_59_0/libs/test/doc/html/boost_test/tests_organization/test_suite/master_test_suite.html ---- Just in case, here is the test confirming what is expected output on Windows for those rules/argument patterns: {{{ #include int main(int argc, char* argv[]) { for (int i = 0; i < argc; ++i) std::printf(""%d: %s\n"", i, argv[i]); } }}} and the four runs {{{ F:\test_cpp2015\Debug>test_cpp2015.exe ""abc"" d e 0: test_cpp2015.exe 1: abc 2: d 3: e F:\test_cpp2015\Debug>test_cpp2015.exe a\\b d""e f""g h 0: test_cpp2015.exe 1: a\\b 2: de fg 3: h F:\test_cpp2015\Debug>test_cpp2015.exe a\\\""b c d 0: test_cpp2015.exe 1: a\""b 2: c 3: d F:\test_cpp2015\Debug>test_cpp2015.exe a\\\\""b c"" d e 0: test_cpp2015.exe 1: a\\b c 2: d 3: e }}} ",Bugs,closed,To Be Determined,test,Boost 1.59.0,Problem,fixed,,