Consistently used virtual inheritance for Flags classes in stout. In order for different `Flags` classes to be composable classes should always use virtual inheritance.
Review: https://reviews.apache.org/r/49833/ Project: http://git-wip-us.apache.org/repos/asf/mesos/repo Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/16914ae8 Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/16914ae8 Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/16914ae8 Branch: refs/heads/master Commit: 16914ae87b999223e26d63415b56d5aca4bf8b2b Parents: 5d491eb Author: Benjamin Bannier <benjamin.bann...@mesosphere.io> Authored: Fri Oct 14 18:56:02 2016 -0400 Committer: Michael Park <mp...@apache.org> Committed: Mon Oct 17 05:34:41 2016 -0400 ---------------------------------------------------------------------- 3rdparty/stout/tests/flags_tests.cpp | 14 ++++---------- 3rdparty/stout/tests/subcommand_tests.cpp | 2 +- 2 files changed, 5 insertions(+), 11 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/mesos/blob/16914ae8/3rdparty/stout/tests/flags_tests.cpp ---------------------------------------------------------------------- diff --git a/3rdparty/stout/tests/flags_tests.cpp b/3rdparty/stout/tests/flags_tests.cpp index 50d7c17..b2de02d 100644 --- a/3rdparty/stout/tests/flags_tests.cpp +++ b/3rdparty/stout/tests/flags_tests.cpp @@ -45,7 +45,7 @@ using utils::arraySize; // Just used to test that the default implementation // of --help and 'usage()' works as intended. -class EmptyFlags : public FlagsBase {}; +class EmptyFlags : public virtual FlagsBase {}; class TestFlags : public virtual FlagsBase @@ -725,7 +725,7 @@ TEST(FlagsTest, MissingRequiredFlag) TEST(FlagsTest, Validate) { // To provide validation functions. - class ValidatingTestFlags : public TestFlags + class ValidatingTestFlags : public virtual FlagsBase { public: ValidatingTestFlags() @@ -835,24 +835,18 @@ TEST(FlagsTest, EmptyUsage) TEST(FlagsTest, ProgramName) { // To test with a custom program name. - class MyTestFlags : public TestFlags + class MyTestFlags : public virtual FlagsBase { public: MyTestFlags() { programName_ = "TestProgram"; } }; - MyTestFlags flags; EXPECT_EQ( "Usage: TestProgram [options]\n" "\n" - " --[no-]help Prints this help message (default: false)\n" - " --name1=VALUE Set name1 (default: ben folds)\n" - " --name2=VALUE Set name2 (default: 42)\n" - " --[no-]name3 Set name3 (default: false)\n" - " --[no-]name4 Set name4\n" - " --[no-]name5 Set name5\n", + " --[no-]help Prints this help message (default: false)\n", flags.usage()); } http://git-wip-us.apache.org/repos/asf/mesos/blob/16914ae8/3rdparty/stout/tests/subcommand_tests.cpp ---------------------------------------------------------------------- diff --git a/3rdparty/stout/tests/subcommand_tests.cpp b/3rdparty/stout/tests/subcommand_tests.cpp index 9213d6b..9cdb1ad 100644 --- a/3rdparty/stout/tests/subcommand_tests.cpp +++ b/3rdparty/stout/tests/subcommand_tests.cpp @@ -29,7 +29,7 @@ using std::vector; class TestSubcommand : public Subcommand { public: - struct Flags : public flags::FlagsBase + struct Flags : public virtual flags::FlagsBase { Flags() {