[Zodb-checkins] CVS: Packages/BTrees/tests - testBTrees.py:1.51.8.2.30.1 testSetOps.py:1.13.156.1

Tres Seaver tseaver at palladion.com
Sat May 28 20:42:15 EDT 2005


Update of /cvs-repository/Packages/BTrees/tests
In directory cvs.zope.org:/tmp/cvs-serv32028/lib/python/BTrees/tests

Modified Files:
      Tag: tseaver-hasattr_geddon-branch
	testBTrees.py testSetOps.py 
Log Message:

  - Removed all uses of the 'hasattr' builtin from the core, where
    the object being tested derives (or might) from Persistent.
    XXX:  currently, this branch imports a 'safe_hasattr' from ZODB.utils,
    which adds a dependency on ZODB for some packages;  we probably
    need a better location, and perhas a C implementation?


=== Packages/BTrees/tests/testBTrees.py 1.51.8.2 => 1.51.8.2.30.1 ===
--- Packages/BTrees/tests/testBTrees.py:1.51.8.2	Mon Nov 17 17:34:04 2003
+++ Packages/BTrees/tests/testBTrees.py	Sat May 28 20:41:30 2005
@@ -28,6 +28,7 @@
 from ZODB.tests.StorageTestBase import removefs
 from ZODB import DB
 from ZODB.MappingStorage import MappingStorage
+from ZODB.utils import safe_hasattr
 
 class Base:
     """ Tests common to all types: sets, buckets, and BTrees """
@@ -58,7 +59,7 @@
             get_transaction().commit()
 
             root2 = self._getRoot()
-            if hasattr(t, 'items'):
+            if safe_hasattr(t, 'items'):
                 self.assertEqual(list(root2[i].items()) , list(t.items()))
             else:
                 self.assertEqual(list(root2[i].keys()) , list(t.keys()))
@@ -77,7 +78,7 @@
             root2 = self._getRoot()
             root2[i]._p_deactivate()
             get_transaction().commit()
-            if hasattr(t, 'items'):
+            if safe_hasattr(t, 'items'):
                 self.assertEqual(list(root2[i].items()) , list(t.items()))
             else:
                 self.assertEqual(list(root2[i].keys()) , list(t.keys()))


=== Packages/BTrees/tests/testSetOps.py 1.13 => 1.13.156.1 ===
--- Packages/BTrees/tests/testSetOps.py:1.13	Tue Jun 25 18:46:42 2002
+++ Packages/BTrees/tests/testSetOps.py	Sat May 28 20:41:30 2005
@@ -18,6 +18,7 @@
 from BTrees.IOBTree import IOBTree, IOBucket, IOSet, IOTreeSet
 from BTrees.IIBTree import IIBTree, IIBucket, IISet, IITreeSet
 from BTrees.OIBTree import OIBTree, OIBucket, OISet, OITreeSet
+from ZODB.utils import safe_hasattr
 
 # Subclasses have to set up:
 #     builders - functions to build inputs, taking an optional keys arg
@@ -53,7 +54,7 @@
             if e in result:
                 result.remove(e)
         # Difference preserves LHS values.
-        if hasattr(x, "values"):
+        if safe_hasattr(x, "values"):
             result = [(k, x[k]) for k in result]
         return result
 
@@ -77,22 +78,22 @@
         for A in self.As:
             for E in self.emptys:
                 C = self.union(A, E)
-                self.assert_(not hasattr(C, "values"))
+                self.assert_(not safe_hasattr(C, "values"))
                 self.assertEqual(list(C), self.Akeys)
 
                 C = self.union(E, A)
-                self.assert_(not hasattr(C, "values"))
+                self.assert_(not safe_hasattr(C, "values"))
                 self.assertEqual(list(C), self.Akeys)
 
     def testEmptyIntersection(self):
         for A in self.As:
             for E in self.emptys:
                 C = self.intersection(A, E)
-                self.assert_(not hasattr(C, "values"))
+                self.assert_(not safe_hasattr(C, "values"))
                 self.assertEqual(list(C), [])
 
                 C = self.intersection(E, A)
-                self.assert_(not hasattr(C, "values"))
+                self.assert_(not safe_hasattr(C, "values"))
                 self.assertEqual(list(C), [])
 
     def testEmptyDifference(self):
@@ -100,14 +101,16 @@
             for E in self.emptys:
                 C = self.difference(A, E)
                 # Difference preserves LHS values.
-                self.assertEqual(hasattr(C, "values"), hasattr(A, "values"))
-                if hasattr(A, "values"):
+                self.assertEqual(safe_hasattr(C, "values"),
+                                 safe_hasattr(A, "values"))
+                if safe_hasattr(A, "values"):
                     self.assertEqual(list(C.items()), list(A.items()))
                 else:
                     self.assertEqual(list(C), self.Akeys)
 
                 C = self.difference(E, A)
-                self.assertEqual(hasattr(C, "values"), hasattr(E, "values"))
+                self.assertEqual(safe_hasattr(C, "values"),
+                                 safe_hasattr(E, "values"))
                 self.assertEqual(list(C.keys()), [])
 
     def testUnion(self):
@@ -115,7 +118,7 @@
         for A in inputs:
             for B in inputs:
                 C = self.union(A, B)
-                self.assert_(not hasattr(C, "values"))
+                self.assert_(not safe_hasattr(C, "values"))
                 self.assertEqual(list(C), self._union(A, B))
 
     def testIntersection(self):
@@ -123,7 +126,7 @@
         for A in inputs:
             for B in inputs:
                 C = self.intersection(A, B)
-                self.assert_(not hasattr(C, "values"))
+                self.assert_(not safe_hasattr(C, "values"))
                 self.assertEqual(list(C), self._intersection(A, B))
 
     def testDifference(self):
@@ -132,9 +135,10 @@
             for B in inputs:
                 C = self.difference(A, B)
                 # Difference preserves LHS values.
-                self.assertEqual(hasattr(C, "values"), hasattr(A, "values"))
+                self.assertEqual(safe_hasattr(C, "values"),
+                                 safe_hasattr(A, "values"))
                 want = self._difference(A, B)
-                if hasattr(A, "values"):
+                if safe_hasattr(A, "values"):
                     self.assertEqual(list(C.items()), want)
                 else:
                     self.assertEqual(list(C), want)
@@ -458,7 +462,7 @@
 # 'thing' is a bucket, btree, set or treeset.  Return true iff it's one of the
 # latter two.
 def isaset(thing):
-    return not hasattr(thing, 'values')
+    return not safe_hasattr(thing, 'values')
 
 class TestWeightedII(Weighted):
     from BTrees.IIBTree import weightedUnion, weightedIntersection



More information about the Zodb-checkins mailing list