infinitepush: open files in binary mode
This fixes the scary looking abort in test-infinitepush-ci.t when unbundling:
--- tests/test-infinitepush-ci.t
+++ tests/test-infinitepush-ci.t.err
@@ -84,15 +84,12 @@
$ hg unbundle .hg/scratchbranches/filebundlestore/a4/c2/
a4c202c147a9c4bb91bbadb56321fc5f3950f7f2
adding changesets
- adding manifests
- adding file changes
- added 1 changesets with 1 changes to 1 files
- new changesets
6cb0989601f1
- (run 'hg update' to get a working copy)
-
- $ hg glog
- o 1:
6cb0989601f1 added a
- | public
+ transaction abort!
+ rollback completed
+ abort: stream ended unexpectedly (got 68 bytes, expected
218759168)
+ [255]
+
+ $ hg glog
@ 0:
67145f466344 initialcommit
public
This was found by grepping for '"r', "'r", '"w' and "'w" after manually creating
a bundle from the same revision, diffing against the corrupt one, and seeing CRs
sprinkled around. Sadly, the missing bookmarks are still a problem in the two
remaining test failures.
--- a/hgext/infinitepush/__init__.py Fri Mar 30 21:12:09 2018 -0400
+++ b/hgext/infinitepush/__init__.py Thu Apr 19 00:55:36 2018 -0400
@@ -1067,7 +1067,7 @@
bookmarknode = nodesctx[-1].hex() if nodesctx else None
key = None
if newheadscount:
- with open(bundlefile, 'r') as f:
+ with open(bundlefile, 'rb') as f:
bundledata = f.read()
with logservicecall(log, 'bundlestore',
bundlesize=len(bundledata)):
--- a/hgext/infinitepush/store.py Fri Mar 30 21:12:09 2018 -0400
+++ b/hgext/infinitepush/store.py Thu Apr 19 00:55:36 2018 -0400
@@ -79,14 +79,14 @@
if not os.path.exists(dirpath):
os.makedirs(dirpath)
- with open(self._filepath(filename), 'w') as f:
+ with open(self._filepath(filename), 'wb') as f:
f.write(data)
return filename
def read(self, key):
try:
- f = open(self._filepath(key), 'r')
+ f = open(self._filepath(key), 'rb')
except IOError:
return None