Title: [217938] trunk/Tools
Revision
217938
Author
[email protected]
Date
2017-06-08 11:27:59 -0700 (Thu, 08 Jun 2017)

Log Message

WTF tests have incorrect RefLogger lifetimes making it impossible to test with Address Sanitizer
https://bugs.webkit.org/show_bug.cgi?id=173106

Reviewed by Sam Weinig.

* TestWebKitAPI/Tests/WTF/HashCountedSet.cpp: Define RefLogger objects first, so they are
destroyed last.
* TestWebKitAPI/Tests/WTF/HashMap.cpp: Ditto.
* TestWebKitAPI/Tests/WTF/HashSet.cpp: Ditto.

Modified Paths

Diff

Modified: trunk/Tools/ChangeLog (217937 => 217938)


--- trunk/Tools/ChangeLog	2017-06-08 18:08:48 UTC (rev 217937)
+++ trunk/Tools/ChangeLog	2017-06-08 18:27:59 UTC (rev 217938)
@@ -1,3 +1,15 @@
+2017-06-08  Darin Adler  <[email protected]>
+
+        WTF tests have incorrect RefLogger lifetimes making it impossible to test with Address Sanitizer
+        https://bugs.webkit.org/show_bug.cgi?id=173106
+
+        Reviewed by Sam Weinig.
+
+        * TestWebKitAPI/Tests/WTF/HashCountedSet.cpp: Define RefLogger objects first, so they are
+        destroyed last.
+        * TestWebKitAPI/Tests/WTF/HashMap.cpp: Ditto.
+        * TestWebKitAPI/Tests/WTF/HashSet.cpp: Ditto.
+
 2017-06-07  Dan Bernstein  <[email protected]>
 
         [Cocoa] additionalReadAccessAllowedURLs doesn’t preserve non-Latin1 paths

Modified: trunk/Tools/TestWebKitAPI/Tests/WTF/HashCountedSet.cpp (217937 => 217938)


--- trunk/Tools/TestWebKitAPI/Tests/WTF/HashCountedSet.cpp	2017-06-08 18:08:48 UTC (rev 217937)
+++ trunk/Tools/TestWebKitAPI/Tests/WTF/HashCountedSet.cpp	2017-06-08 18:27:59 UTC (rev 217938)
@@ -1,6 +1,6 @@
 /*
- * Copyright (C) 2016 Apple Inc. All rights reserved.
  * Copyright (C) 2011 Google Inc. All rights reserved.
+ * Copyright (C) 2016-2017 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -34,7 +34,7 @@
 #include <wtf/text/StringHash.h>
 
 namespace TestWebKitAPI {
-    
+
 typedef WTF::HashCountedSet<int> IntHashCountedSet;
 
 TEST(WTF_HashCountedSet, HashTableIteratorComparison)
@@ -43,7 +43,7 @@
     hashCountedSet.add(1);
     ASSERT_TRUE(hashCountedSet.begin() != hashCountedSet.end());
     ASSERT_FALSE(hashCountedSet.begin() == hashCountedSet.end());
-    
+
     IntHashCountedSet::const_iterator begin = hashCountedSet.begin();
     ASSERT_TRUE(begin == hashCountedSet.begin());
     ASSERT_TRUE(hashCountedSet.begin() == begin);
@@ -74,9 +74,9 @@
     const double clobberKey = 6;
     const double zeroKey = 0;
     const double negativeZeroKey = -zeroKey;
-    
+
     DoubleHashCountedSet hashCountedSet;
-    
+
     hashCountedSet.add(clobberKey);
 
     ASSERT_EQ(hashCountedSet.count(clobberKey), 1u);
@@ -85,7 +85,7 @@
 
     hashCountedSet.add(zeroKey);
     hashCountedSet.add(negativeZeroKey);
-    
+
     ASSERT_EQ(bucketForKey(clobberKey), bucketForKey(negativeZeroKey));
     ASSERT_EQ(hashCountedSet.count(clobberKey), 1u);
     ASSERT_EQ(hashCountedSet.count(zeroKey), 1u);
@@ -94,7 +94,7 @@
     hashCountedSet.add(clobberKey);
     hashCountedSet.add(zeroKey);
     hashCountedSet.add(negativeZeroKey);
-    
+
     ASSERT_EQ(hashCountedSet.count(clobberKey), 2u);
     ASSERT_EQ(hashCountedSet.count(zeroKey), 2u);
     ASSERT_EQ(hashCountedSet.count(negativeZeroKey), 2u);
@@ -102,7 +102,7 @@
     hashCountedSet.add(clobberKey, 12);
     hashCountedSet.add(zeroKey, 15);
     hashCountedSet.add(negativeZeroKey, 17);
-    
+
     ASSERT_EQ(hashCountedSet.count(clobberKey), 14u);
     ASSERT_EQ(hashCountedSet.count(zeroKey), 17u);
     ASSERT_EQ(hashCountedSet.count(negativeZeroKey), 19u);
@@ -116,27 +116,27 @@
     const double clobberKey = 6;
     const double zeroKey = 0;
     const double negativeZeroKey = -zeroKey;
-    
+
     DoubleHashCountedSet hashCountedSet;
-    
+
     hashCountedSet.add(clobberKey, 5);
-    
+
     ASSERT_EQ(hashCountedSet.count(clobberKey), 5u);
     ASSERT_EQ(hashCountedSet.count(zeroKey), 0u);
     ASSERT_EQ(hashCountedSet.count(negativeZeroKey), 0u);
-    
+
     hashCountedSet.add(zeroKey, 22);
     hashCountedSet.add(negativeZeroKey, 0);
-    
+
     ASSERT_EQ(bucketForKey(clobberKey), bucketForKey(negativeZeroKey));
     ASSERT_EQ(hashCountedSet.count(clobberKey), 5u);
     ASSERT_EQ(hashCountedSet.count(zeroKey), 22u);
     ASSERT_EQ(hashCountedSet.count(negativeZeroKey), 0u);
-    
+
     hashCountedSet.add(clobberKey);
     hashCountedSet.add(zeroKey);
     hashCountedSet.add(negativeZeroKey);
-    
+
     ASSERT_EQ(hashCountedSet.count(clobberKey), 6u);
     ASSERT_EQ(hashCountedSet.count(zeroKey), 23u);
     ASSERT_EQ(hashCountedSet.count(negativeZeroKey), 1u);
@@ -146,21 +146,21 @@
 TEST(WTF_HashCountedSet, MoveOnlyKeys)
 {
     HashCountedSet<MoveOnly> moveOnlyKeys;
-    
+
     for (size_t i = 0; i < 100; ++i) {
         MoveOnly moveOnly(i + 1);
         moveOnlyKeys.add(WTFMove(moveOnly));
     }
-    
+
     for (size_t i = 0; i < 100; ++i) {
         auto it = moveOnlyKeys.find(MoveOnly(i + 1));
         ASSERT_FALSE(it == moveOnlyKeys.end());
         ASSERT_EQ(it->value, 1u);
     }
-    
+
     for (size_t i = 0; i < 100; ++i)
         ASSERT_FALSE(moveOnlyKeys.add(MoveOnly(i + 1)).isNewEntry);
-    
+
     for (size_t i = 0; i < 100; ++i)
         ASSERT_FALSE(moveOnlyKeys.remove(MoveOnly(i + 1)));
 
@@ -173,24 +173,24 @@
 TEST(WTF_HashCountedSet, MoveOnlyKeysInitialCount)
 {
     HashCountedSet<MoveOnly> moveOnlyKeys;
-    
+
     for (size_t i = 0; i < 100; ++i) {
         MoveOnly moveOnly(i + 1);
         moveOnlyKeys.add(WTFMove(moveOnly), i + 1);
     }
-    
+
     for (size_t i = 0; i < 100; ++i) {
         auto it = moveOnlyKeys.find(MoveOnly(i + 1));
         ASSERT_FALSE(it == moveOnlyKeys.end());
         ASSERT_EQ(it->value, i + 1);
     }
-    
+
     for (size_t i = 0; i < 100; ++i)
         ASSERT_FALSE(moveOnlyKeys.add(MoveOnly(i + 1)).isNewEntry);
-    
+
     for (size_t i = 0; i < 100; ++i)
         ASSERT_EQ(moveOnlyKeys.count(MoveOnly(i + 1)), i + 2);
-    
+
     for (size_t i = 0; i < 100; ++i)
         ASSERT_FALSE(moveOnlyKeys.remove(MoveOnly(i + 1)));
 
@@ -209,9 +209,9 @@
         "four",
         "four",
     };
-    
+
     EXPECT_EQ(4u, hashCountedSet.size());
-    
+
     EXPECT_EQ(hashCountedSet.count("one"), 1u);
     EXPECT_EQ(hashCountedSet.count("two"), 1u);
     EXPECT_EQ(hashCountedSet.count("three"), 1u);
@@ -226,9 +226,9 @@
         { String("three"), 3u },
         { String("four"), 4u },
     };
-    
+
     EXPECT_EQ(4u, hashCountedSet.size());
-    
+
     EXPECT_EQ(hashCountedSet.count("one"), 1u);
     EXPECT_EQ(hashCountedSet.count("two"), 2u);
     EXPECT_EQ(hashCountedSet.count("three"), 3u);
@@ -238,17 +238,17 @@
 TEST(WTF_HashCountedSet, UniquePtrKey)
 {
     ConstructorDestructorCounter::TestingScope scope;
-    
+
     HashCountedSet<std::unique_ptr<ConstructorDestructorCounter>> hashCountedSet;
-    
+
     auto uniquePtr = std::make_unique<ConstructorDestructorCounter>();
     hashCountedSet.add(WTFMove(uniquePtr));
-    
+
     EXPECT_EQ(1u, ConstructorDestructorCounter::constructionCount);
     EXPECT_EQ(0u, ConstructorDestructorCounter::destructionCount);
-    
+
     hashCountedSet.clear();
-    
+
     EXPECT_EQ(1u, ConstructorDestructorCounter::constructionCount);
     EXPECT_EQ(1u, ConstructorDestructorCounter::destructionCount);
 }
@@ -256,17 +256,17 @@
 TEST(WTF_HashCountedSet, UniquePtrKeyInitialCount)
 {
     ConstructorDestructorCounter::TestingScope scope;
-    
+
     HashCountedSet<std::unique_ptr<ConstructorDestructorCounter>> hashCountedSet;
-    
+
     auto uniquePtr = std::make_unique<ConstructorDestructorCounter>();
     hashCountedSet.add(WTFMove(uniquePtr), 12);
-    
+
     EXPECT_EQ(1u, ConstructorDestructorCounter::constructionCount);
     EXPECT_EQ(0u, ConstructorDestructorCounter::destructionCount);
-    
+
     hashCountedSet.clear();
-    
+
     EXPECT_EQ(1u, ConstructorDestructorCounter::constructionCount);
     EXPECT_EQ(1u, ConstructorDestructorCounter::destructionCount);
 }
@@ -275,22 +275,22 @@
 {
     ConstructorDestructorCounter::TestingScope constructorDestructorCounterScope;
     DeleterCounter<ConstructorDestructorCounter>::TestingScope deleterCounterScope;
-    
+
     HashCountedSet<std::unique_ptr<ConstructorDestructorCounter, DeleterCounter<ConstructorDestructorCounter>>> hashCountedSet;
-    
+
     std::unique_ptr<ConstructorDestructorCounter, DeleterCounter<ConstructorDestructorCounter>> uniquePtr(new ConstructorDestructorCounter(), DeleterCounter<ConstructorDestructorCounter>());
     hashCountedSet.add(WTFMove(uniquePtr));
-    
+
     EXPECT_EQ(1u, ConstructorDestructorCounter::constructionCount);
     EXPECT_EQ(0u, ConstructorDestructorCounter::destructionCount);
-    
+
     EXPECT_EQ(0u, DeleterCounter<ConstructorDestructorCounter>::deleterCount());
-    
+
     hashCountedSet.clear();
-    
+
     EXPECT_EQ(1u, ConstructorDestructorCounter::constructionCount);
     EXPECT_EQ(1u, ConstructorDestructorCounter::destructionCount);
-    
+
     EXPECT_EQ(1u, DeleterCounter<ConstructorDestructorCounter>::deleterCount());
 }
 
@@ -297,11 +297,11 @@
 TEST(WTF_HashCountedSet, UniquePtrKey_FindUsingRawPointer)
 {
     HashCountedSet<std::unique_ptr<int>> hashCountedSet;
-    
+
     auto uniquePtr = std::make_unique<int>(5);
     int* ptr = uniquePtr.get();
     hashCountedSet.add(WTFMove(uniquePtr));
-    
+
     auto it = hashCountedSet.find(ptr);
     ASSERT_TRUE(it != hashCountedSet.end());
     EXPECT_EQ(ptr, it->key.get());
@@ -311,11 +311,11 @@
 TEST(WTF_HashCountedSet, UniquePtrKey_ContainsUsingRawPointer)
 {
     HashCountedSet<std::unique_ptr<int>> hashCountedSet;
-    
+
     auto uniquePtr = std::make_unique<int>(5);
     int* ptr = uniquePtr.get();
     hashCountedSet.add(WTFMove(uniquePtr));
-    
+
     EXPECT_EQ(true, hashCountedSet.contains(ptr));
 }
 
@@ -322,11 +322,11 @@
 TEST(WTF_HashCountedSet, UniquePtrKey_GetUsingRawPointer)
 {
     HashCountedSet<std::unique_ptr<int>> hashCountedSet;
-    
+
     auto uniquePtr = std::make_unique<int>(5);
     int* ptr = uniquePtr.get();
     hashCountedSet.add(WTFMove(uniquePtr));
-    
+
     int value = hashCountedSet.count(ptr);
     EXPECT_EQ(1, value);
 }
@@ -334,19 +334,19 @@
 TEST(WTF_HashCountedSet, UniquePtrKey_RemoveUsingRawPointer)
 {
     ConstructorDestructorCounter::TestingScope scope;
-    
+
     HashCountedSet<std::unique_ptr<ConstructorDestructorCounter>> hashCountedSet;
-    
+
     auto uniquePtr = std::make_unique<ConstructorDestructorCounter>();
     ConstructorDestructorCounter* ptr = uniquePtr.get();
     hashCountedSet.add(WTFMove(uniquePtr));
-    
+
     EXPECT_EQ(1u, ConstructorDestructorCounter::constructionCount);
     EXPECT_EQ(0u, ConstructorDestructorCounter::destructionCount);
-    
+
     bool result = hashCountedSet.remove(ptr);
     EXPECT_EQ(true, result);
-    
+
     EXPECT_EQ(1u, ConstructorDestructorCounter::constructionCount);
     EXPECT_EQ(1u, ConstructorDestructorCounter::destructionCount);
 }
@@ -353,12 +353,13 @@
 
 TEST(WTF_HashCountedSet, RefPtrKey_Add)
 {
+    DerivedRefLogger a("a");
+
     HashCountedSet<RefPtr<RefLogger>> hashCountedSet;
-    
-    DerivedRefLogger a("a");
+
     RefPtr<RefLogger> ptr(&a);
     hashCountedSet.add(ptr);
-    
+
     ASSERT_STREQ("ref(a) ref(a) ", takeLogStr().c_str());
     EXPECT_EQ(1U, hashCountedSet.count(ptr));
     EXPECT_EQ(1U, hashCountedSet.count(ptr.get()));
@@ -366,34 +367,37 @@
 
 TEST(WTF_HashCountedSet, RefPtrKey_AddUsingRelease)
 {
+    DerivedRefLogger a("a");
+
     HashCountedSet<RefPtr<RefLogger>> hashCountedSet;
-    
-    DerivedRefLogger a("a");
+
     RefPtr<RefLogger> ptr(&a);
     hashCountedSet.add(WTFMove(ptr));
-    
+
     EXPECT_STREQ("ref(a) ", takeLogStr().c_str());
 }
 
 TEST(WTF_HashCountedSet, RefPtrKey_AddUsingMove)
 {
+    DerivedRefLogger a("a");
+
     HashCountedSet<RefPtr<RefLogger>> hashCountedSet;
-    
-    DerivedRefLogger a("a");
+
     RefPtr<RefLogger> ptr(&a);
     hashCountedSet.add(WTFMove(ptr));
-    
+
     EXPECT_STREQ("ref(a) ", takeLogStr().c_str());
 }
 
 TEST(WTF_HashCountedSet, RefPtrKey_AddUsingRaw)
 {
+    DerivedRefLogger a("a");
+
     HashCountedSet<RefPtr<RefLogger>> hashCountedSet;
-    
-    DerivedRefLogger a("a");
+
     RefPtr<RefLogger> ptr(&a);
     hashCountedSet.add(ptr.get());
-    
+
     EXPECT_STREQ("ref(a) ref(a) ", takeLogStr().c_str());
     EXPECT_EQ(1U, hashCountedSet.count(ptr));
     EXPECT_EQ(1U, hashCountedSet.count(ptr.get()));
@@ -401,68 +405,68 @@
 
 TEST(WTF_HashCountedSet, RefPtrKey_AddKeyAlreadyPresent)
 {
+    DerivedRefLogger a("a");
+
     HashCountedSet<RefPtr<RefLogger>> hashCountedSet;
-    
-    DerivedRefLogger a("a");
-    
+
     {
         RefPtr<RefLogger> ptr(&a);
         hashCountedSet.add(ptr);
     }
-    
+
     EXPECT_STREQ("ref(a) ref(a) deref(a) ", takeLogStr().c_str());
-    
+
     {
         RefPtr<RefLogger> ptr2(&a);
         auto addResult = hashCountedSet.add(ptr2);
         EXPECT_FALSE(addResult.isNewEntry);
     }
-    
+
     EXPECT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
 }
 
 TEST(WTF_HashCountedSet, RefPtrKey_AddUsingReleaseKeyAlreadyPresent)
 {
+    DerivedRefLogger a("a");
+
     HashCountedSet<RefPtr<RefLogger>> hashCountedSet;
-    
-    DerivedRefLogger a("a");
-    
+
     {
         RefPtr<RefLogger> ptr(&a);
         hashCountedSet.add(ptr);
     }
-    
+
     EXPECT_STREQ("ref(a) ref(a) deref(a) ", takeLogStr().c_str());
-    
+
     {
         RefPtr<RefLogger> ptr2(&a);
         auto addResult = hashCountedSet.add(WTFMove(ptr2));
         EXPECT_FALSE(addResult.isNewEntry);
     }
-    
+
     EXPECT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
 }
 
 TEST(WTF_HashCountedSet, RefPtrKey_AddUsingMoveKeyAlreadyPresent)
 {
+    DerivedRefLogger a("a");
+
     HashCountedSet<RefPtr<RefLogger>> hashCountedSet;
-    
-    DerivedRefLogger a("a");
-    
+
     {
         RefPtr<RefLogger> ptr(&a);
         hashCountedSet.add(ptr);
     }
-    
+
     EXPECT_STREQ("ref(a) ref(a) deref(a) ", takeLogStr().c_str());
-    
+
     {
         RefPtr<RefLogger> ptr2(&a);
         auto addResult = hashCountedSet.add(WTFMove(ptr2));
         EXPECT_FALSE(addResult.isNewEntry);
     }
-    
+
     EXPECT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
 }
-    
+
 } // namespace TestWebKitAPI

Modified: trunk/Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp (217937 => 217938)


--- trunk/Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp	2017-06-08 18:08:48 UTC (rev 217937)
+++ trunk/Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp	2017-06-08 18:27:59 UTC (rev 217938)
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2011 Google Inc. All rights reserved.
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -295,9 +296,10 @@
 
 TEST(WTF_HashMap, RefPtrKey_Add)
 {
+    DerivedRefLogger a("a");
+
     HashMap<RefPtr<RefLogger>, int> map;
 
-    DerivedRefLogger a("a");
     RefPtr<RefLogger> ptr(&a);
     map.add(ptr, 0);
 
@@ -306,9 +308,10 @@
 
 TEST(WTF_HashMap, RefPtrKey_AddUsingRelease)
 {
+    DerivedRefLogger a("a");
+
     HashMap<RefPtr<RefLogger>, int> map;
 
-    DerivedRefLogger a("a");
     RefPtr<RefLogger> ptr(&a);
     map.add(WTFMove(ptr), 0);
 
@@ -317,9 +320,10 @@
 
 TEST(WTF_HashMap, RefPtrKey_AddUsingMove)
 {
+    DerivedRefLogger a("a");
+
     HashMap<RefPtr<RefLogger>, int> map;
 
-    DerivedRefLogger a("a");
     RefPtr<RefLogger> ptr(&a);
     map.add(WTFMove(ptr), 0);
 
@@ -328,9 +332,10 @@
 
 TEST(WTF_HashMap, RefPtrKey_AddUsingRaw)
 {
+    DerivedRefLogger a("a");
+
     HashMap<RefPtr<RefLogger>, int> map;
 
-    DerivedRefLogger a("a");
     RefPtr<RefLogger> ptr(&a);
     map.add(ptr.get(), 0);
 
@@ -339,10 +344,10 @@
 
 TEST(WTF_HashMap, RefPtrKey_AddKeyAlreadyPresent)
 {
+    DerivedRefLogger a("a");
+
     HashMap<RefPtr<RefLogger>, int> map;
 
-    DerivedRefLogger a("a");
-
     {
         RefPtr<RefLogger> ptr(&a);
         map.add(ptr, 0);
@@ -361,10 +366,10 @@
 
 TEST(WTF_HashMap, RefPtrKey_AddUsingReleaseKeyAlreadyPresent)
 {
+    DerivedRefLogger a("a");
+
     HashMap<RefPtr<RefLogger>, int> map;
 
-    DerivedRefLogger a("a");
-
     {
         RefPtr<RefLogger> ptr(&a);
         map.add(ptr, 0);
@@ -383,10 +388,10 @@
 
 TEST(WTF_HashMap, RefPtrKey_AddUsingMoveKeyAlreadyPresent)
 {
+    DerivedRefLogger a("a");
+
     HashMap<RefPtr<RefLogger>, int> map;
 
-    DerivedRefLogger a("a");
-
     {
         RefPtr<RefLogger> ptr(&a);
         map.add(ptr, 0);
@@ -405,9 +410,10 @@
 
 TEST(WTF_HashMap, RefPtrKey_Set)
 {
+    DerivedRefLogger a("a");
+
     HashMap<RefPtr<RefLogger>, int> map;
 
-    DerivedRefLogger a("a");
     RefPtr<RefLogger> ptr(&a);
     map.set(ptr, 0);
 
@@ -416,9 +422,10 @@
 
 TEST(WTF_HashMap, RefPtrKey_SetUsingRelease)
 {
+    DerivedRefLogger a("a");
+
     HashMap<RefPtr<RefLogger>, int> map;
 
-    DerivedRefLogger a("a");
     RefPtr<RefLogger> ptr(&a);
     map.set(WTFMove(ptr), 0);
 
@@ -428,9 +435,10 @@
 
 TEST(WTF_HashMap, RefPtrKey_SetUsingMove)
 {
+    DerivedRefLogger a("a");
+
     HashMap<RefPtr<RefLogger>, int> map;
 
-    DerivedRefLogger a("a");
     RefPtr<RefLogger> ptr(&a);
     map.set(WTFMove(ptr), 0);
 
@@ -439,9 +447,10 @@
 
 TEST(WTF_HashMap, RefPtrKey_SetUsingRaw)
 {
+    DerivedRefLogger a("a");
+
     HashMap<RefPtr<RefLogger>, int> map;
 
-    DerivedRefLogger a("a");
     RefPtr<RefLogger> ptr(&a);
     map.set(ptr.get(), 0);
 
@@ -450,10 +459,10 @@
 
 TEST(WTF_HashMap, RefPtrKey_SetKeyAlreadyPresent)
 {
+    DerivedRefLogger a("a");
+
     HashMap<RefPtr<RefLogger>, int> map;
 
-    DerivedRefLogger a("a");
-
     RefPtr<RefLogger> ptr(&a);
     map.set(ptr, 0);
 
@@ -471,10 +480,10 @@
 
 TEST(WTF_HashMap, RefPtrKey_SetUsingReleaseKeyAlreadyPresent)
 {
+    DerivedRefLogger a("a");
+
     HashMap<RefPtr<RefLogger>, int> map;
 
-    DerivedRefLogger a("a");
-
     RefPtr<RefLogger> ptr(&a);
     map.set(ptr, 0);
 
@@ -492,10 +501,10 @@
 
 TEST(WTF_HashMap, RefPtrKey_SetUsingMoveKeyAlreadyPresent)
 {
+    DerivedRefLogger a("a");
+
     HashMap<RefPtr<RefLogger>, int> map;
 
-    DerivedRefLogger a("a");
-
     RefPtr<RefLogger> ptr(&a);
     map.set(ptr, 0);
 
@@ -560,17 +569,15 @@
 
 TEST(WTF_HashMap, Ensure_RefPtr)
 {
+    DerivedRefLogger a("a");
+
     HashMap<unsigned, RefPtr<RefLogger>> map;
 
-    {
-        DerivedRefLogger a("a");
+    map.ensure(1, [&] { return RefPtr<RefLogger>(&a); });
+    EXPECT_STREQ("ref(a) ", takeLogStr().c_str());
 
-        map.ensure(1, [&] { return RefPtr<RefLogger>(&a); });
-        EXPECT_STREQ("ref(a) ", takeLogStr().c_str());
-
-        map.ensure(1, [&] { return RefPtr<RefLogger>(&a); });
-        EXPECT_STREQ("", takeLogStr().c_str());
-    }
+    map.ensure(1, [&] { return RefPtr<RefLogger>(&a); });
+    EXPECT_STREQ("", takeLogStr().c_str());
 }
 
 class ObjectWithRefLogger {
@@ -705,9 +712,10 @@
 TEST(WTF_HashMap, Ref_Key)
 {
     {
+        RefLogger a("a");
+
         HashMap<Ref<RefLogger>, int> map;
 
-        RefLogger a("a");
         Ref<RefLogger> ref(a);
         map.add(WTFMove(ref), 1);
     }
@@ -715,9 +723,10 @@
     ASSERT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
 
     {
+        RefLogger a("a");
+
         HashMap<Ref<RefLogger>, int> map;
 
-        RefLogger a("a");
         Ref<RefLogger> ref(a);
         map.set(WTFMove(ref), 1);
     }
@@ -725,9 +734,10 @@
     ASSERT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
 
     {
+        RefLogger a("a");
+
         HashMap<Ref<RefLogger>, int> map;
 
-        RefLogger a("a");
         Ref<RefLogger> refA(a);
         map.add(WTFMove(refA), 1);
 
@@ -738,9 +748,10 @@
     ASSERT_STREQ("ref(a) ref(a) deref(a) deref(a) ", takeLogStr().c_str());
 
     {
+        RefLogger a("a");
+
         HashMap<Ref<RefLogger>, int> map;
 
-        RefLogger a("a");
         Ref<RefLogger> ref(a);
         map.ensure(WTFMove(ref), []() { 
             return 1; 
@@ -750,9 +761,10 @@
     ASSERT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
 
     {
+        RefLogger a("a");
+
         HashMap<Ref<RefLogger>, int> map;
 
-        RefLogger a("a");
         Ref<RefLogger> ref(a);
         map.add(WTFMove(ref), 1);
         
@@ -766,9 +778,10 @@
     ASSERT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
 
     {
+        RefLogger a("a");
+
         HashMap<Ref<RefLogger>, int> map;
 
-        RefLogger a("a");
         Ref<RefLogger> ref(a);
         map.add(WTFMove(ref), 1);
 
@@ -778,9 +791,10 @@
     ASSERT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
 
     {
+        RefLogger a("a");
+
         HashMap<Ref<RefLogger>, int> map;
 
-        RefLogger a("a");
         Ref<RefLogger> ref(a);
         map.add(WTFMove(ref), 1);
 
@@ -793,6 +807,7 @@
     {
         HashMap<Ref<RefLogger>, int> map;
         for (int i = 0; i < 64; ++i) {
+            // FIXME: All of these RefLogger objects leak. No big deal for a test I guess.
             Ref<RefLogger> ref = adoptRef(*new RefLogger("a"));
             auto* pointer = ref.ptr();
             map.add(WTFMove(ref), i + 1);
@@ -806,9 +821,10 @@
 TEST(WTF_HashMap, Ref_Value)
 {
     {
+        RefLogger a("a");
+
         HashMap<int, Ref<RefLogger>> map;
 
-        RefLogger a("a");
         Ref<RefLogger> ref(a);
         map.add(1, WTFMove(ref));
     }
@@ -816,9 +832,10 @@
     ASSERT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
 
     {
+        RefLogger a("a");
+
         HashMap<int, Ref<RefLogger>> map;
 
-        RefLogger a("a");
         Ref<RefLogger> ref(a);
         map.set(1, WTFMove(ref));
     }
@@ -826,13 +843,14 @@
     ASSERT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
 
     {
+        RefLogger a("a");
+        RefLogger b("b");
+
         HashMap<int, Ref<RefLogger>> map;
 
-        RefLogger a("a");
         Ref<RefLogger> refA(a);
         map.add(1, WTFMove(refA));
 
-        RefLogger b("b");
         Ref<RefLogger> refB(b);
         map.set(1, WTFMove(refB));
     }
@@ -840,9 +858,10 @@
     ASSERT_STREQ("ref(a) ref(b) deref(a) deref(b) ", takeLogStr().c_str());
 
     {
+        RefLogger a("a");
+
         HashMap<int, Ref<RefLogger>> map;
 
-        RefLogger a("a");
         Ref<RefLogger> ref(a);
         map.add(1, WTFMove(ref));
         
@@ -860,9 +879,10 @@
     }
 
     {
+        RefLogger a("a");
+
         HashMap<int, Ref<RefLogger>> map;
 
-        RefLogger a("a");
         Ref<RefLogger> ref(a);
         map.add(1, WTFMove(ref));
         
@@ -881,9 +901,10 @@
     }
 
     {
+        RefLogger a("a");
+
         HashMap<int, Ref<RefLogger>> map;
 
-        RefLogger a("a");
         Ref<RefLogger> ref(a);
         map.add(1, WTFMove(ref));
         map.remove(1);
@@ -892,9 +913,10 @@
     ASSERT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
 
     {
+        RefLogger a("a");
+
         HashMap<int, Ref<RefLogger>> map;
 
-        RefLogger a("a");
         map.ensure(1, [&]() mutable {
             Ref<RefLogger> ref(a);
             return ref; 
@@ -906,6 +928,7 @@
     {
         HashMap<int, Ref<RefLogger>> map;
         for (int i = 0; i < 64; ++i) {
+            // FIXME: All of these RefLogger objects leak. No big deal for a test I guess.
             Ref<RefLogger> ref = adoptRef(*new RefLogger("a"));
             map.add(i + 1, WTFMove(ref));
             ASSERT_TRUE(map.contains(i + 1));

Modified: trunk/Tools/TestWebKitAPI/Tests/WTF/HashSet.cpp (217937 => 217938)


--- trunk/Tools/TestWebKitAPI/Tests/WTF/HashSet.cpp	2017-06-08 18:08:48 UTC (rev 217937)
+++ trunk/Tools/TestWebKitAPI/Tests/WTF/HashSet.cpp	2017-06-08 18:27:59 UTC (rev 217938)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2012 Apple Inc. All rights reserved.
+ * Copyright (C) 2012-2017 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -353,9 +353,10 @@
 TEST(WTF_HashSet, Ref)
 {
     {
+        RefLogger a("a");
+
         HashSet<Ref<RefLogger>> set;
 
-        RefLogger a("a");
         Ref<RefLogger> ref(a);
         set.add(WTFMove(ref));
     }
@@ -363,9 +364,10 @@
     ASSERT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
 
     {
+        RefLogger a("a");
+
         HashSet<Ref<RefLogger>> set;
 
-        RefLogger a("a");
         Ref<RefLogger> ref(a);
         set.add(ref.copyRef());
     }
@@ -373,9 +375,10 @@
     ASSERT_STREQ("ref(a) ref(a) deref(a) deref(a) ", takeLogStr().c_str());
 
     {
+        RefLogger a("a");
+
         HashSet<Ref<RefLogger>> set;
 
-        RefLogger a("a");
         Ref<RefLogger> ref(a);
         set.add(WTFMove(ref));
         set.remove(&a);
@@ -384,9 +387,10 @@
     ASSERT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
 
     {
+        RefLogger a("a");
+
         HashSet<Ref<RefLogger>> set;
 
-        RefLogger a("a");
         Ref<RefLogger> ref(a);
         set.add(WTFMove(ref));
 
@@ -398,9 +402,10 @@
     ASSERT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
 
     {
+        RefLogger a("a");
+
         HashSet<Ref<RefLogger>> set;
 
-        RefLogger a("a");
         Ref<RefLogger> ref(a);
         set.add(WTFMove(ref));
 
@@ -418,9 +423,10 @@
     }
 
     {
+        RefLogger a("a");
+
         HashSet<Ref<RefLogger>> set;
 
-        RefLogger a("a");
         Ref<RefLogger> ref(a);
         set.add(WTFMove(ref));
         
@@ -432,6 +438,7 @@
     {
         HashSet<Ref<RefLogger>> set;
         for (int i = 0; i < 64; ++i) {
+            // FIXME: All of these RefLogger objects leak. No big deal for a test I guess.
             Ref<RefLogger> ref = adoptRef(*new RefLogger("a"));
             auto* pointer = ref.ptr();
             set.add(WTFMove(ref));
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to