summaryrefslogtreecommitdiff
path: root/src/mongo/dbtests/commandtests.cpp
diff options
context:
space:
mode:
authorBilly Donahue <billy.donahue@mongodb.com>2019-10-02 00:03:00 +0000
committerevergreen <evergreen@mongodb.com>2019-10-02 00:03:00 +0000
commit6adefc73b4990253e4f277b49b119db1a05b7490 (patch)
treecbad4fe8afa2418bd2b7b4bd33303b0e6be66bc6 /src/mongo/dbtests/commandtests.cpp
parentdfb22aca7b1e62693fd5272d37239a40000c3d0e (diff)
downloadmongo-6adefc73b4990253e4f277b49b119db1a05b7490.tar.gz
SERVER-43367 unittest framework refactor/fixes
- Segregate old-style dbtests into their own Suite initialization system: OldStyleSuiteSpecification. This is where the funky deprecated features can live on without interfering with the Suite API. It also gives us a searchable base class to identify them in the future. OldStyleSuite has `setupTests()` and an `add<T>()` that Suite does not have. Suite API can shrink when it doesn't have to support these dbtest adaptor features. Suite only needs non-template `add(name, callback)`. - Add OldStyleSuiteInitializer to some dbtests that were missing it! These didn't use SuiteInstance to register themselves and were incorrect. They would self register, resulting in _allSuites() holding a std::shared_ptr to a static-duration Suite object! - Change `getSuite()` to return `Suite&` instead of `Suite*`. - No more "self-registering" in Suite constructor. Registration must be done as a separate post-construction step. This removes some unusual lifetime management code and is easier to document. Suite::getSuite(name) is the only way to make a Suite, and it does the make_shared and registration calls with a pseudo-private ConstructorEnable idiom. - Suite->run() returns std::unique_ptr<Result> instead of raw `Result*`. It's virtual to support OldStyleSuite behavior. - Suite._ran does nothing. Removed. - Result.cur does nothing. Removed. - Switch to pass-by-value and std::move for most ctor args. - Add explicit on 1-arg ctors. - Get rid of TestHolder. It's just a 2-field struct. - use fmt instead of snprintf - TEST and TEST_F macros: generate TEST_TYPE once. - TEST and TEST_F macros: inline the _agent variable. - Mark _doRun as `override`. - Terminology: replace CASE_NAME with SUITE_NAME. - rename DeathTestImpl -> DeathTestBase - move getDeathTestPattern into the test as a static member function - refactor out some repetition from the comparator decl macros - use if-constexpr and diamond relops to clean up the ComparisonAssertion class. - dbtests: conditionally skip some add<T> calls - further dedup (DEATH_)TEST(_F) macros
Diffstat (limited to 'src/mongo/dbtests/commandtests.cpp')
-rw-r--r--src/mongo/dbtests/commandtests.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/mongo/dbtests/commandtests.cpp b/src/mongo/dbtests/commandtests.cpp
index d2479943ffc..2a464621bcd 100644
--- a/src/mongo/dbtests/commandtests.cpp
+++ b/src/mongo/dbtests/commandtests.cpp
@@ -361,9 +361,9 @@ public:
}
};
-class All : public Suite {
+class All : public OldStyleSuiteSpecification {
public:
- All() : Suite("commands") {}
+ All() : OldStyleSuiteSpecification("commands") {}
void setupTests() {
add<FileMD5::Type0>();
@@ -380,5 +380,5 @@ public:
}
};
-SuiteInstance<All> all;
+OldStyleSuiteInitializer<All> all;
} // namespace CommandTests