tests: perform a shallow copy instead of a deep copy
authorGregory Szorc <gregory.szorc@gmail.com>
Wed, 30 Jan 2019 16:53:12 -0800
changeset 41481 5880b4e762cd
parent 41480 eb6700e6c5ea
child 41482 b58d608ec6a0
tests: perform a shallow copy instead of a deep copy Python 3 can't perform a deep copy because it looks like symbols in the locals() namespace are not deep-copyable. For the curious, somehow the deepcopy() is attempting to copy objects attached to the unittest.* functions for the running test! We don't use deepcopy() anywhere in the code base and a shallow object copy should be sufficient to test lock copying. Actually, I'm not sure why we even test this, as I couldn't find copy.copy() being used for lock copying either. Who knows. Differential Revision: https://phab.mercurial-scm.org/D5770
tests/test-lock.py
--- a/tests/test-lock.py	Wed Jan 30 18:49:17 2019 -0500
+++ b/tests/test-lock.py	Wed Jan 30 16:53:12 2019 -0800
@@ -141,7 +141,7 @@
         state.assertacquirecalled(True)
 
         # fake a fork
-        forklock = copy.deepcopy(lock)
+        forklock = copy.copy(lock)
         forklock._pidoffset = 1
         forklock.release()
         state.assertreleasecalled(False)
@@ -238,7 +238,7 @@
             childstate.assertacquirecalled(True)
 
             # fork the child lock
-            forkchildlock = copy.deepcopy(childlock)
+            forkchildlock = copy.copy(childlock)
             forkchildlock._pidoffset += 1
             forkchildlock.release()
             childstate.assertreleasecalled(False)