D5770: tests: perform a shallow copy instead of a deep copy

indygreg (Gregory Szorc) phabricator at mercurial-scm.org
Thu Jan 31 00:54:53 UTC 2019


indygreg created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.

REVISION SUMMARY
  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.

REPOSITORY
  rHG Mercurial

REVISION DETAIL
  https://phab.mercurial-scm.org/D5770

AFFECTED FILES
  tests/test-lock.py

CHANGE DETAILS

diff --git a/tests/test-lock.py b/tests/test-lock.py
--- a/tests/test-lock.py
+++ b/tests/test-lock.py
@@ -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)



To: indygreg, #hg-reviewers
Cc: mercurial-devel


More information about the Mercurial-devel mailing list