[Checkins] SVN: transaction/trunk/ - Fixed ``hexlify`` NameError in ``transaction._transaction.oid_repr``

Chris McDonough chrism at plope.com
Wed Sep 15 10:50:49 EDT 2010


Log message for revision 116436:
  - Fixed ``hexlify`` NameError in ``transaction._transaction.oid_repr``
    and add test.
  
  

Changed:
  U   transaction/trunk/CHANGES.txt
  U   transaction/trunk/transaction/_transaction.py
  U   transaction/trunk/transaction/tests/test_transaction.py

-=-
Modified: transaction/trunk/CHANGES.txt
===================================================================
--- transaction/trunk/CHANGES.txt	2010-09-15 14:11:06 UTC (rev 116435)
+++ transaction/trunk/CHANGES.txt	2010-09-15 14:50:48 UTC (rev 116436)
@@ -10,6 +10,9 @@
   objects after calling ``sys.exc_info()`` to get one, causing
   potential reference leakages.
 
+- Fixed ``hexlify`` NameError in ``transaction._transaction.oid_repr``
+  and add test.
+
 1.1.0 (1010-05-12)
 ------------------
 

Modified: transaction/trunk/transaction/_transaction.py
===================================================================
--- transaction/trunk/transaction/_transaction.py	2010-09-15 14:11:06 UTC (rev 116435)
+++ transaction/trunk/transaction/_transaction.py	2010-09-15 14:50:48 UTC (rev 116436)
@@ -97,10 +97,10 @@
 as their only argument.
 """
 
+import binascii
 import logging
 import sys
 import thread
-import warnings
 import weakref
 import traceback
 from cStringIO import StringIO
@@ -612,7 +612,7 @@
 def oid_repr(oid):
     if isinstance(oid, str) and len(oid) == 8:
         # Convert to hex and strip leading zeroes.
-        as_hex = hexlify(oid).lstrip('0')
+        as_hex = binascii.hexlify(oid).lstrip('0')
         # Ensure two characters per input byte.
         if len(as_hex) & 1:
             as_hex = '0' + as_hex

Modified: transaction/trunk/transaction/tests/test_transaction.py
===================================================================
--- transaction/trunk/transaction/tests/test_transaction.py	2010-09-15 14:11:06 UTC (rev 116435)
+++ transaction/trunk/transaction/tests/test_transaction.py	2010-09-15 14:50:48 UTC (rev 116436)
@@ -41,10 +41,7 @@
 import struct
 import sys
 import unittest
-import warnings
-
 import transaction
-from transaction.tests.warnhook import WarningsHook
 
 _ADDRESS_MASK = 256 ** struct.calcsize('P')
 def positive_id(obj):
@@ -245,6 +242,25 @@
 ##            self.fail("Hosed Application didn't stop commits")
 
 
+class Test_oid_repr(unittest.TestCase):
+    def _callFUT(self, oid):
+        from transaction._transaction import oid_repr
+        return oid_repr(oid)
+
+    def test_as_nonstring(self):
+        self.assertEqual(self._callFUT(123), '123')
+
+    def test_as_string_not_8_chars(self):
+        self.assertEqual(self._callFUT('a'), "'a'")
+
+    def test_as_string_z64(self):
+        s = '\0'*8
+        self.assertEqual(self._callFUT(s), '0x00')
+
+    def test_as_string_all_Fs(self):
+        s = '\1'*8
+        self.assertEqual(self._callFUT(s), '0x0101010101010101')
+
 class DataObject:
 
     def __init__(self, transaction_manager, nost=0):
@@ -748,6 +764,7 @@
         DocFileSuite('doom.txt'),
         DocTestSuite(),
         unittest.makeSuite(TransactionTests),
+        unittest.makeSuite(Test_oid_repr),
         ))
     if sys.version_info >= (2, 6):
         suite.addTest(DocFileSuite('convenience.txt'))



More information about the checkins mailing list