From 7cdef9c3982206dfc2fdd3b660d4e4d6f5e5d9e9 Mon Sep 17 00:00:00 2001 From: Benety Goh Date: Sat, 1 Aug 2020 14:25:50 -0400 Subject: SERVER-49800 fix use-after-move violations in tests --- src/mongo/base/data_builder_test.cpp | 6 +++--- src/mongo/base/status_test.cpp | 24 +++++++++++----------- src/mongo/bson/bsonobjbuilder_test.cpp | 4 ++-- .../document_metadata_fields_test.cpp | 4 ++-- src/mongo/db/exec/working_set_test.cpp | 6 +++--- src/mongo/db/keys_collection_document_test.cpp | 3 +-- src/mongo/db/operation_context_test.cpp | 2 +- src/mongo/db/s/op_observer_sharding_test.cpp | 2 +- .../executor/thread_pool_task_executor_test.cpp | 4 ++-- src/mongo/util/producer_consumer_queue_test.cpp | 2 +- 10 files changed, 28 insertions(+), 29 deletions(-) diff --git a/src/mongo/base/data_builder_test.cpp b/src/mongo/base/data_builder_test.cpp index 0133ae20273..5a0abdc09a4 100644 --- a/src/mongo/base/data_builder_test.cpp +++ b/src/mongo/base/data_builder_test.cpp @@ -163,9 +163,9 @@ TEST(DataBuilder, Move) { ASSERT_EQUALS(42u, db2.capacity()); ASSERT_EQUALS(2u, db2.size()); - ASSERT_EQUALS(0u, db.capacity()); - ASSERT_EQUALS(0u, db.size()); - ASSERT(!db.getCursor().data()); + ASSERT_EQUALS(0u, db.capacity()); // NOLINT(bugprone-use-after-move) + ASSERT_EQUALS(0u, db.size()); // NOLINT(bugprone-use-after-move) + ASSERT(!db.getCursor().data()); // NOLINT(bugprone-use-after-move) } TEST(DataBuilder, TerminatedStringDatas) { diff --git a/src/mongo/base/status_test.cpp b/src/mongo/base/status_test.cpp index 1cb9094ad28..4be67a3f43b 100644 --- a/src/mongo/base/status_test.cpp +++ b/src/mongo/base/status_test.cpp @@ -108,8 +108,8 @@ TEST(Cloning, MoveCopyOK) { Status dest(std::move(orig)); - ASSERT_TRUE(orig.isOK()); - ASSERT_EQUALS(orig.refCount(), 0U); + ASSERT_TRUE(orig.isOK()); // NOLINT(bugprone-use-after-move) + ASSERT_EQUALS(orig.refCount(), 0U); // NOLINT(bugprone-use-after-move) ASSERT_TRUE(dest.isOK()); ASSERT_EQUALS(dest.refCount(), 0U); @@ -122,8 +122,8 @@ TEST(Cloning, MoveCopyError) { Status dest(std::move(orig)); - ASSERT_TRUE(orig.isOK()); - ASSERT_EQUALS(orig.refCount(), 0U); + ASSERT_TRUE(orig.isOK()); // NOLINT(bugprone-use-after-move) + ASSERT_EQUALS(orig.refCount(), 0U); // NOLINT(bugprone-use-after-move) ASSERT_FALSE(dest.isOK()); ASSERT_EQUALS(dest.refCount(), 1U); @@ -142,8 +142,8 @@ TEST(Cloning, MoveAssignOKToOK) { dest = std::move(orig); - ASSERT_TRUE(orig.isOK()); - ASSERT_EQUALS(orig.refCount(), 0U); + ASSERT_TRUE(orig.isOK()); // NOLINT(bugprone-use-after-move) + ASSERT_EQUALS(orig.refCount(), 0U); // NOLINT(bugprone-use-after-move) ASSERT_TRUE(dest.isOK()); ASSERT_EQUALS(dest.refCount(), 0U); @@ -164,8 +164,8 @@ TEST(Cloning, MoveAssignErrorToError) { dest = std::move(orig); - ASSERT_TRUE(orig.isOK()); - ASSERT_EQUALS(orig.refCount(), 0U); + ASSERT_TRUE(orig.isOK()); // NOLINT(bugprone-use-after-move) + ASSERT_EQUALS(orig.refCount(), 0U); // NOLINT(bugprone-use-after-move) ASSERT_FALSE(dest.isOK()); ASSERT_EQUALS(dest.refCount(), 1U); @@ -186,8 +186,8 @@ TEST(Cloning, MoveAssignErrorToOK) { dest = std::move(orig); - ASSERT_TRUE(orig.isOK()); - ASSERT_EQUALS(orig.refCount(), 0U); + ASSERT_TRUE(orig.isOK()); // NOLINT(bugprone-use-after-move) + ASSERT_EQUALS(orig.refCount(), 0U); // NOLINT(bugprone-use-after-move) ASSERT_FALSE(dest.isOK()); ASSERT_EQUALS(dest.refCount(), 1U); @@ -213,8 +213,8 @@ TEST(Cloning, MoveAssignOKToError) { ASSERT_EQUALS(orig.code(), ErrorCodes::MaxError); ASSERT_EQUALS(orig.reason(), "error"); - ASSERT_TRUE(dest.isOK()); - ASSERT_EQUALS(dest.refCount(), 0U); + ASSERT_TRUE(dest.isOK()); // NOLINT(bugprone-use-after-move) + ASSERT_EQUALS(dest.refCount(), 0U); // NOLINT(bugprone-use-after-move) } TEST(Cloning, OKIsNotRefCounted) { diff --git a/src/mongo/bson/bsonobjbuilder_test.cpp b/src/mongo/bson/bsonobjbuilder_test.cpp index a807a19d35d..f8c992508bb 100644 --- a/src/mongo/bson/bsonobjbuilder_test.cpp +++ b/src/mongo/bson/bsonobjbuilder_test.cpp @@ -358,7 +358,7 @@ TEST(BSONObjBuilderTest, SeedingBSONObjBuilderWithRootedUnsharedOwnedBsonWorks) BSONObjBuilder bob(std::move(origObj)); // moving. bob.append("b", 1); const auto obj = bob.obj(); - ASSERT_BSONOBJ_EQ(origObj, BSONObj()); + ASSERT_BSONOBJ_EQ(origObj, BSONObj()); // NOLINT(bugprone-use-after-move) ASSERT_BSONOBJ_EQ(obj, BSON("a" << 1 << "b" << 1)); ASSERT_EQ(static_cast(obj.objdata()), static_cast(origObjPtr)); } @@ -398,7 +398,7 @@ TEST(BSONObjBuilderTest, SeedingBSONObjBuilderWithNonrootedUnsharedOwnedBsonWork BSONObjBuilder bob(std::move(origObj)); // moving. bob.append("b", 1); const auto obj = bob.obj(); - ASSERT_BSONOBJ_EQ(origObj, BSONObj()); + ASSERT_BSONOBJ_EQ(origObj, BSONObj()); // NOLINT(bugprone-use-after-move) ASSERT_BSONOBJ_EQ(obj, BSON("a" << 1 << "b" << 1)); ASSERT_EQ(static_cast(obj.objdata()), static_cast(origObjPtr)); } diff --git a/src/mongo/db/exec/document_value/document_metadata_fields_test.cpp b/src/mongo/db/exec/document_value/document_metadata_fields_test.cpp index b19127ef226..b783406ce29 100644 --- a/src/mongo/db/exec/document_value/document_metadata_fields_test.cpp +++ b/src/mongo/db/exec/document_value/document_metadata_fields_test.cpp @@ -139,7 +139,7 @@ TEST(DocumentMetadataFieldsTest, MoveConstructor) { ASSERT_VALUE_EQ(moveConstructed.getSearchHighlights(), Value{"foo"_sd}); ASSERT_BSONOBJ_EQ(moveConstructed.getIndexKey(), BSON("b" << 1)); - ASSERT_FALSE(metadata); + ASSERT_FALSE(metadata); // NOLINT(bugprone-use-after-move) } TEST(DocumentMetadataFieldsTest, MoveAssignmentOperator) { @@ -168,7 +168,7 @@ TEST(DocumentMetadataFieldsTest, MoveAssignmentOperator) { ASSERT_VALUE_EQ(moveAssigned.getSearchHighlights(), Value{"foo"_sd}); ASSERT_BSONOBJ_EQ(moveAssigned.getIndexKey(), BSON("b" << 1)); - ASSERT_FALSE(metadata); + ASSERT_FALSE(metadata); // NOLINT(bugprone-use-after-move) } TEST(DocumentMetadataFieldsTest, CopyConstructor) { diff --git a/src/mongo/db/exec/working_set_test.cpp b/src/mongo/db/exec/working_set_test.cpp index 230c2d81a1a..a66d81e5b6a 100644 --- a/src/mongo/db/exec/working_set_test.cpp +++ b/src/mongo/db/exec/working_set_test.cpp @@ -175,9 +175,9 @@ TEST_F(WorkingSetFixture, MetadataCanBeCorrectlyTransferredBackAndForthFromDocum MutableDocument md{std::move(document)}; md.setMetadata(std::move(releasedMetadata)); document = md.freeze(); - ASSERT_FALSE(releasedMetadata); - ASSERT_FALSE(releasedMetadata.hasTextScore()); - ASSERT_FALSE(releasedMetadata.hasSearchScore()); + ASSERT_FALSE(releasedMetadata); // NOLINT(bugprone-use-after-move) + ASSERT_FALSE(releasedMetadata.hasTextScore()); // NOLINT(bugprone-use-after-move) + ASSERT_FALSE(releasedMetadata.hasSearchScore()); // NOLINT(bugprone-use-after-move) ASSERT_TRUE(document.metadata()); ASSERT_TRUE(document.metadata().hasTextScore()); ASSERT_TRUE(document.metadata().hasSearchScore()); diff --git a/src/mongo/db/keys_collection_document_test.cpp b/src/mongo/db/keys_collection_document_test.cpp index 4e4b4ec0b5d..dfa6124a212 100644 --- a/src/mongo/db/keys_collection_document_test.cpp +++ b/src/mongo/db/keys_collection_document_test.cpp @@ -49,8 +49,7 @@ TEST(KeysCollectionDocument, Roundtrip) { const auto expiresAt = LogicalTime(Timestamp(100, 200)); - KeysCollectionDocument keysCollectionDoc( - keyId, std::move(purpose), std::move(key), std::move(expiresAt)); + KeysCollectionDocument keysCollectionDoc(keyId, purpose, key, expiresAt); auto serializedObj = keysCollectionDoc.toBSON(); diff --git a/src/mongo/db/operation_context_test.cpp b/src/mongo/db/operation_context_test.cpp index 33beb6cf112..a9c3ad9436c 100644 --- a/src/mongo/db/operation_context_test.cpp +++ b/src/mongo/db/operation_context_test.cpp @@ -201,7 +201,7 @@ TEST(OperationContextTest, OpCtxGroup) { auto p3 = opCtx3.opCtx(); auto opCtx4 = group4.take(std::move(opCtx3)); ASSERT_EQ(p3, opCtx4.opCtx()); - ASSERT(opCtx3.opCtx() == nullptr); + ASSERT(opCtx3.opCtx() == nullptr); // NOLINT(bugprone-use-after-move) ASSERT_TRUE(group3.isEmpty()); ASSERT_FALSE(group4.isEmpty()); group3.interrupt(ErrorCodes::InternalError); diff --git a/src/mongo/db/s/op_observer_sharding_test.cpp b/src/mongo/db/s/op_observer_sharding_test.cpp index eaf8e55f78b..4c328b6936f 100644 --- a/src/mongo/db/s/op_observer_sharding_test.cpp +++ b/src/mongo/db/s/op_observer_sharding_test.cpp @@ -43,11 +43,11 @@ const NamespaceString kTestNss("TestDB", "TestColl"); void setCollectionFilteringMetadata(OperationContext* opCtx, CollectionMetadata metadata) { AutoGetCollection autoColl(opCtx, kTestNss, MODE_X); + const auto version = metadata.getShardVersion(); CollectionShardingRuntime::get(opCtx, kTestNss) ->setFilteringMetadata(opCtx, std::move(metadata)); auto& oss = OperationShardingState::get(opCtx); - const auto version = metadata.getShardVersion(); BSONObjBuilder builder; version.appendToCommand(&builder); oss.initializeClientRoutingVersionsFromCommand(kTestNss, builder.obj()); diff --git a/src/mongo/executor/thread_pool_task_executor_test.cpp b/src/mongo/executor/thread_pool_task_executor_test.cpp index fed4f56962d..c436417be3d 100644 --- a/src/mongo/executor/thread_pool_task_executor_test.cpp +++ b/src/mongo/executor/thread_pool_task_executor_test.cpp @@ -112,7 +112,7 @@ TEST_F(ThreadPoolExecutorTest, OnEvent) { }; ASSERT_OK(executor.onEvent(event, std::move(cb)).getStatus()); // Callback was moved from. - ASSERT(!cb); + ASSERT(!cb); // NOLINT(bugprone-use-after-move) executor.signalEvent(event); barrier.countDownAndWait(); ASSERT_OK(status1); @@ -133,7 +133,7 @@ TEST_F(ThreadPoolExecutorTest, OnEventAfterShutdown) { executor.onEvent(event, std::move(cb)).getStatus()); // Callback was not moved from, it is still valid and we can call it to set status1. - ASSERT(static_cast(cb)); + ASSERT(cb); // NOLINT(bugprone-use-after-move) TaskExecutor::CallbackArgs args(&executor, {}, Status::OK()); cb(args); ASSERT_OK(status1); diff --git a/src/mongo/util/producer_consumer_queue_test.cpp b/src/mongo/util/producer_consumer_queue_test.cpp index b0f319c8711..dd9c9836816 100644 --- a/src/mongo/util/producer_consumer_queue_test.cpp +++ b/src/mongo/util/producer_consumer_queue_test.cpp @@ -319,7 +319,7 @@ PRODUCER_CONSUMER_QUEUE_TEST(pushesWithTimeout, runTimeoutPermutations