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
--- 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)