sapling/eden/scm/tests/revlog-formatv0.py
Zeyi (Rice) Fan 09d7bb259c make part of the tests Python 3 compatible
Summary:
Most of these tests use `file` instead of `open` for opening files, which is removed in Python 3. And when we open files in byte mode, Python disallows writing `str` into such files, so we add `b` prefix to write actual bytes instead.

There are some other minor problems like reading from `sys.stdin` gives you `str` while expecting `bytes`. The solution is to use `sys.stdin.buffer` instead. However, Python 2 does not have `sys.stdin.buffer` so we have to do a version check to provide compatibility.

Reviewed By: quark-zju

Differential Revision: D19606357

fbshipit-source-id: e9177134294f03af8b581230a57902c3435b319a
2020-01-28 16:42:11 -08:00

82 lines
2.0 KiB
Python
Executable File

#!/usr/bin/env python
# Copyright 2010 Intevation GmbH
# Author(s):
# Thomas Arendsen Hein <thomas@intevation.de>
#
# This software may be used and distributed according to the terms of the
# GNU General Public License version 2 or any later version.
"""Create a Mercurial repository in revlog format 0
changeset: 0:a1ef0b125355
user: user
date: Thu Jan 01 00:00:00 1970 +0000
files: empty
description:
empty file
"""
from __future__ import absolute_import
import os
import sys
# PY3-compat
if sys.version_info[0] >= 3:
fromhex = bytes.fromhex
else:
fromhex = lambda x: x.decode("hex")
files = [
(
"formatv0/.hg/00changelog.i",
"000000000000004400000000000000000000000000000000000000"
"000000000000000000000000000000000000000000000000000000"
"0000a1ef0b125355d27765928be600cfe85784284ab3",
),
(
"formatv0/.hg/00changelog.d",
"756163613935613961356635353036303562366138343738336237"
"61623536363738616436356635380a757365720a3020300a656d70"
"74790a0a656d7074792066696c65",
),
(
"formatv0/.hg/00manifest.i",
"000000000000003000000000000000000000000000000000000000"
"000000000000000000000000000000000000000000000000000000"
"0000aca95a9a5f550605b6a84783b7ab56678ad65f58",
),
(
"formatv0/.hg/00manifest.d",
"75656d707479006238306465356431333837353835343163356630"
"35323635616431343461623966613836643164620a",
),
(
"formatv0/.hg/data/empty.i",
"000000000000000000000000000000000000000000000000000000"
"000000000000000000000000000000000000000000000000000000"
"0000b80de5d138758541c5f05265ad144ab9fa86d1db",
),
("formatv0/.hg/data/empty.d", ""),
]
def makedirs(name):
"""recursive directory creation"""
parent = os.path.dirname(name)
if parent:
makedirs(parent)
os.mkdir(name)
makedirs(os.path.join(*"formatv0/.hg/data".split("/")))
for name, data in files:
f = open(name, "wb")
f.write(fromhex(data))
f.close()
sys.exit(0)