Repository: mesos Updated Branches: refs/heads/master b0beb5b4a -> 299b082f9
Fixed const'ness of flags::load. Replacing argument arrays with static initializers in tests. Making the argument 'argv' const in load method to reflect the semantics. Review: https://reviews.apache.org/r/35743 Project: http://git-wip-us.apache.org/repos/asf/mesos/repo Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/299b082f Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/299b082f Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/299b082f Branch: refs/heads/master Commit: 299b082f9d04060bdd93e2c179c046764dc857a1 Parents: b0beb5b Author: Jojy Varghese <[email protected]> Authored: Sat Jun 27 01:56:42 2015 +0200 Committer: Till Toenshoff <[email protected]> Committed: Sat Jun 27 02:39:13 2015 +0200 ---------------------------------------------------------------------- .../stout/include/stout/flags/flags.hpp | 4 +- .../3rdparty/stout/include/stout/utils.hpp | 7 + .../3rdparty/stout/tests/flags_tests.cpp | 196 +++++++++---------- 3 files changed, 105 insertions(+), 102 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/mesos/blob/299b082f/3rdparty/libprocess/3rdparty/stout/include/stout/flags/flags.hpp ---------------------------------------------------------------------- diff --git a/3rdparty/libprocess/3rdparty/stout/include/stout/flags/flags.hpp b/3rdparty/libprocess/3rdparty/stout/include/stout/flags/flags.hpp index 3bb114b..ae54566 100644 --- a/3rdparty/libprocess/3rdparty/stout/include/stout/flags/flags.hpp +++ b/3rdparty/libprocess/3rdparty/stout/include/stout/flags/flags.hpp @@ -59,7 +59,7 @@ public: virtual Try<Nothing> load( const Option<std::string>& prefix, int argc, - char** argv, + const char* const* argv, bool unknowns = false, bool duplicates = false); @@ -551,7 +551,7 @@ inline Try<Nothing> FlagsBase::load(const std::string& prefix) inline Try<Nothing> FlagsBase::load( const Option<std::string>& prefix, int argc, - char** argv, + const char* const *argv, bool unknowns, bool duplicates) { http://git-wip-us.apache.org/repos/asf/mesos/blob/299b082f/3rdparty/libprocess/3rdparty/stout/include/stout/utils.hpp ---------------------------------------------------------------------- diff --git a/3rdparty/libprocess/3rdparty/stout/include/stout/utils.hpp b/3rdparty/libprocess/3rdparty/stout/include/stout/utils.hpp index dfcd62a..faca859 100644 --- a/3rdparty/libprocess/3rdparty/stout/include/stout/utils.hpp +++ b/3rdparty/libprocess/3rdparty/stout/include/stout/utils.hpp @@ -21,6 +21,13 @@ namespace utils { template <typename T> T copy(const T& t) { return t; } + +template <typename T, size_t N> +static constexpr size_t arraySize(T(&)[N]) +{ + return N; +} + } // namespace utils { #endif // __STOUT_UTILS_HPP__ http://git-wip-us.apache.org/repos/asf/mesos/blob/299b082f/3rdparty/libprocess/3rdparty/stout/tests/flags_tests.cpp ---------------------------------------------------------------------- diff --git a/3rdparty/libprocess/3rdparty/stout/tests/flags_tests.cpp b/3rdparty/libprocess/3rdparty/stout/tests/flags_tests.cpp index c2f6c22..2a6f67b 100644 --- a/3rdparty/libprocess/3rdparty/stout/tests/flags_tests.cpp +++ b/3rdparty/libprocess/3rdparty/stout/tests/flags_tests.cpp @@ -14,6 +14,7 @@ #include <stout/os.hpp> #include <stout/path.hpp> #include <stout/some.hpp> +#include <stout/utils.hpp> #include <stout/tests/utils.hpp> @@ -24,6 +25,7 @@ using std::endl; using std::string; using std::map; +using utils::arraySize; // Just used to test that the default implementation // of --help and 'usage()' works as intended. @@ -71,13 +73,13 @@ TEST(FlagsTest, Load) { TestFlags flags; - map<string, Option<string> > values; - - values["name1"] = Some("billy joel"); - values["name2"] = Some("43"); - values["name3"] = Some("false"); - values["no-name4"] = None(); - values["name5"] = None(); + const map<string, Option<string> > values = { + {"name1", Some("billy joel")}, + {"name2", Some("43")}, + {"name3", Some("false")}, + {"no-name4", None()}, + {"name5", None()} + }; flags.load(values); @@ -114,10 +116,10 @@ TEST(FlagsTest, Add) "name8", "Also set name8"); - map<string, Option<string> > values; - - values["name6"] = Some("ben folds"); - values["no-name7"] = None(); + const map<string, Option<string> > values = { + {"name6", Some("ben folds")}, + {"no-name7", None()} + }; flags.load(values); @@ -134,13 +136,13 @@ TEST(FlagsTest, Flags) { TestFlags flags; - map<string, Option<string> > values; - - values["name1"] = Some("billy joel"); - values["name2"] = Some("43"); - values["name3"] = Some("false"); - values["no-name4"] = None(); - values["name5"] = None(); + const map<string, Option<string> > values = { + {"name1", Some("billy joel")}, + {"name2", Some("43")}, + {"name3", Some("false")}, + {"no-name4", None()}, + {"name5", None()} + }; flags.load(values); @@ -187,17 +189,16 @@ TEST(FlagsTest, LoadFromCommandLine) { TestFlags flags; - int argc = 6; - char* argv[argc]; - - argv[0] = (char*) "/path/to/program"; - argv[1] = (char*) "--name1=billy joel"; - argv[2] = (char*) "--name2=43"; - argv[3] = (char*) "--no-name3"; - argv[4] = (char*) "--no-name4"; - argv[5] = (char*) "--name5"; + const char* argv[] = { + "/path/to/program", + "--name1=billy joel", + "--name2=43", + "--no-name3", + "--no-name4", + "--name5" + }; - Try<Nothing> load = flags.load("FLAGSTEST_", argc, argv); + Try<Nothing> load = flags.load("FLAGSTEST_", arraySize(argv), argv); EXPECT_SOME(load); EXPECT_EQ("billy joel", flags.name1); @@ -214,22 +215,21 @@ TEST(FlagsTest, LoadFromCommandLineWithNonFlags) { TestFlags flags; - int argc = 11; - char* argv[argc]; - - argv[0] = (char*) "/path/to/program"; - argv[1] = (char*) "more"; - argv[2] = (char*) "--name1=billy joel"; - argv[3] = (char*) "stuff"; - argv[4] = (char*) "at"; - argv[5] = (char*) "--name2=43"; - argv[6] = (char*) "--no-name3"; - argv[7] = (char*) "--no-name4"; - argv[8] = (char*) "--name5"; - argv[9] = (char*) "the"; - argv[10] = (char*) "end"; + const char* argv[] = { + "/path/to/program", + "more", + "--name1=billy joel", + "stuff", + "at", + "--name2=43", + "--no-name3", + "--no-name4", + "--name5", + "the", + "end" + }; - Try<Nothing> load = flags.load("FLAGSTEST_", argc, argv); + Try<Nothing> load = flags.load("FLAGSTEST_", arraySize(argv), argv); EXPECT_SOME(load); EXPECT_EQ("billy joel", flags.name1); @@ -246,22 +246,21 @@ TEST(FlagsTest, LoadFromCommandLineWithDashDash) { TestFlags flags; - int argc = 11; - char* argv[argc]; - - argv[0] = (char*) "/path/to/program"; - argv[1] = (char*) "more"; - argv[2] = (char*) "--name1=billy joel"; - argv[3] = (char*) "stuff"; - argv[4] = (char*) "at"; - argv[5] = (char*) "--name2=43"; - argv[6] = (char*) "--no-name3"; - argv[7] = (char*) "--"; - argv[8] = (char*) "--no-name4"; - argv[9] = (char*) "--name5"; - argv[10] = (char*) "the"; + const char* argv[] = { + "/path/to/program", + "more", + "--name1=billy joel", + "stuff", + "at", + "--name2=43", + "--no-name3", + "--", + "--no-name4", + "--name5", + "the" + }; - Try<Nothing> load = flags.load("FLAGSTEST_", argc, argv); + Try<Nothing> load = flags.load("FLAGSTEST_", arraySize(argv), argv); EXPECT_SOME(load); EXPECT_EQ("billy joel", flags.name1); @@ -276,20 +275,20 @@ TEST(FlagsTest, LoadFromCommandLineAndUpdateArgcArgv) { TestFlags flags; - int argc = 11; - char* argv[argc]; - - argv[0] = (char*) "/path/to/program"; - argv[1] = (char*) "more"; - argv[2] = (char*) "--name1=billy joel"; - argv[3] = (char*) "stuff"; - argv[4] = (char*) "at"; - argv[5] = (char*) "--name2=43"; - argv[6] = (char*) "--no-name3"; - argv[7] = (char*) "--"; - argv[8] = (char*) "--no-name4"; - argv[9] = (char*) "--name5"; - argv[10] = (char*) "the"; + char* argv[] = { + (char*)"/path/to/program", + (char*)"more", + (char*)"--name1=billy joel", + (char*)"stuff", + (char*)"at", + (char*)"--name2=43", + (char*)"--no-name3", + (char*)"--", + (char*)"--no-name4", + (char*)"--name5", + (char*)"the" + }; + int argc = arraySize(argv); // Need a temporary since some compilers want to treat the type of // 'argv' as 'char *(*)[argc]' since the size of the array is known. @@ -339,11 +338,11 @@ TEST(FlagsTest, Stringification) "name8", "Optional name8"); - map<string, Option<string> > values; - - values["name2"] = Some("43"); - values["no-name4"] = None(); - values["name5"] = None(); + const map<string, Option<string> > values = { + {"name2", Some("43")}, + {"no-name4", None()}, + {"name5", None()} + }; flags.load(values); @@ -382,13 +381,12 @@ TEST(FlagsTest, DuplicatesFromEnvironment) os::setenv("FLAGSTEST_name1", "ben folds"); - int argc = 2; - char* argv[argc]; - - argv[0] = (char*) "/path/to/program"; - argv[1] = (char*) "--name1=billy joel"; + const char* argv[] = { + "/path/to/program", + "--name1=billy joel" + }; - Try<Nothing> load = flags.load("FLAGSTEST_", argc, argv); + Try<Nothing> load = flags.load("FLAGSTEST_", arraySize(argv), argv); EXPECT_ERROR(load); EXPECT_EQ("Duplicate flag 'name1' on command line", load.error()); @@ -401,14 +399,13 @@ TEST(FlagsTest, DuplicatesFromCommandLine) { TestFlags flags; - int argc = 3; - char* argv[argc]; - - argv[0] = (char*) "/path/to/program"; - argv[1] = (char*) "--name1=billy joel"; - argv[2] = (char*) "--name1=ben folds"; + const char* argv[] = { + "/path/to/program", + "--name1=billy joel", + "--name1=ben folds" + }; - Try<Nothing> load = flags.load("FLAGSTEST_", argc, argv); + Try<Nothing> load = flags.load("FLAGSTEST_", arraySize(argv), argv); EXPECT_ERROR(load); EXPECT_EQ("Duplicate flag 'name1' on command line", load.error()); @@ -511,13 +508,12 @@ TEST(FlagsTest, Validate) ValidatingTestFlags flags; - int argc = 2; - char* argv[argc]; - - argv[0] = (char*) "/path/to/program"; - argv[1] = (char*) "--duration=2hrs"; + const char* argv[] = { + "/path/to/program", + "--duration=2hrs" + }; - Try<Nothing> load = flags.load("FLAGSTEST_", argc, argv); + Try<Nothing> load = flags.load("FLAGSTEST_", arraySize(argv), argv); EXPECT_ERROR(load); EXPECT_EQ("Expected --duration to be less than 1 hour", load.error()); @@ -615,10 +611,10 @@ TEST(FlagsTest, Duration) "name7", "Also some amount of time"); - map<string, Option<string> > values; - - values["name6"] = Some("2mins"); - values["name7"] = Some("3hrs"); + const map<string, Option<string> > values = { + {"name6", Some("2mins")}, + {"name7", Some("3hrs")} + }; ASSERT_SOME(flags.load(values));
