mirror of
https://github.com/facebook/sapling.git
synced 2024-10-11 09:17:30 +03:00
9dc21f8d0b
Summary: D13853115 adds `edenscm/` to `sys.path` and code still uses `import mercurial`. That has nasty problems if both `import mercurial` and `import edenscm.mercurial` are used, because Python would think `mercurial.foo` and `edenscm.mercurial.foo` are different modules so code like `try: ... except mercurial.error.Foo: ...`, or `isinstance(x, mercurial.foo.Bar)` would fail to handle the `edenscm.mercurial` version. There are also some module-level states (ex. `extensions._extensions`) that would cause trouble if they have multiple versions in a single process. Change imports to use the `edenscm` so ideally the `mercurial` is no longer imported at all. Add checks in extensions.py to catch unexpected extensions importing modules from the old (wrong) locations when running tests. Reviewed By: phillco Differential Revision: D13868981 fbshipit-source-id: f4e2513766957fd81d85407994f7521a08e4de48
64 lines
1.6 KiB
Python
Executable File
64 lines
1.6 KiB
Python
Executable File
#!/usr/bin/env python
|
|
"""
|
|
Tests the behavior of filelog w.r.t. data starting with '\1\n'
|
|
"""
|
|
from __future__ import absolute_import, print_function
|
|
|
|
from edenscm.mercurial import hg, ui as uimod
|
|
from edenscm.mercurial.node import hex, nullid
|
|
|
|
|
|
myui = uimod.ui.load()
|
|
repo = hg.repository(myui, path=".", create=True)
|
|
|
|
fl = repo.file("foobar")
|
|
|
|
|
|
def addrev(text, renamed=False):
|
|
if renamed:
|
|
# data doesn't matter. Just make sure filelog.renamed() returns True
|
|
meta = {"copyrev": hex(nullid), "copy": "bar"}
|
|
else:
|
|
meta = {}
|
|
|
|
lock = t = None
|
|
try:
|
|
lock = repo.lock()
|
|
t = repo.transaction("commit")
|
|
node = fl.add(text, meta, t, 0, nullid, nullid)
|
|
return node
|
|
finally:
|
|
if t:
|
|
t.close()
|
|
if lock:
|
|
lock.release()
|
|
|
|
|
|
def error(text):
|
|
print("ERROR: " + text)
|
|
|
|
|
|
textwith = "\1\nfoo"
|
|
without = "foo"
|
|
|
|
node = addrev(textwith)
|
|
if not textwith == fl.read(node):
|
|
error("filelog.read for data starting with \\1\\n")
|
|
if fl.cmp(node, textwith) or not fl.cmp(node, without):
|
|
error("filelog.cmp for data starting with \\1\\n")
|
|
if fl.size(0) != len(textwith):
|
|
error(
|
|
"FIXME: This is a known failure of filelog.size for data starting "
|
|
"with \\1\\n"
|
|
)
|
|
|
|
node = addrev(textwith, renamed=True)
|
|
if not textwith == fl.read(node):
|
|
error("filelog.read for a renaming + data starting with \\1\\n")
|
|
if fl.cmp(node, textwith) or not fl.cmp(node, without):
|
|
error("filelog.cmp for a renaming + data starting with \\1\\n")
|
|
if fl.size(1) != len(textwith):
|
|
error("filelog.size for a renaming + data starting with \\1\\n")
|
|
|
|
print("OK.")
|