sapling/tests/test-hgsubversion-unaffected-core.py
Jared Bosco ee1fcc3d2d bindings: create cliparser native binding to replace fancyopts early parsing
Summary:
The current Python parsing library fancyopts does an early parse for global flags, as well as slightly different logic for parsing out flags.

Switching this fancyopts call should allow fancyopts to be completely replaced by the native code path, and start using Rust parsing for hg.

This enforces command line arguments to be utf8. At Facebook, our `hg` wrapper already crashes if that is not the case. So it shouldn't cause new issues.

Reviewed By: quark-zju

Differential Revision: D15837079

fbshipit-source-id: 95634ebc814f8865960181f23282e5283068057c
2019-07-20 01:06:32 -07:00

77 lines
1.9 KiB
Python

# @nolint
from __future__ import absolute_import
import os
import test_hgsubversion_util
from edenscm.mercurial import commands, dispatch, hg
def _dispatch(ui, cmd):
assert "--quiet" in cmd
try:
req = dispatch.request(cmd, ui=ui)
req.earlyoptions = {
"config": [],
"configfile": [],
"cwd": "",
"debugger": False,
"profile": False,
"repository": "",
}
dispatch._dispatch(req)
except AttributeError:
dispatch._dispatch(ui, cmd)
class TestMercurialCore(test_hgsubversion_util.TestBase):
"""
Test that the core Mercurial operations aren't broken by hgsubversion.
"""
@test_hgsubversion_util.requiresoption("updaterev")
def test_update(self):
""" Test 'clone --updaterev' """
ui = self.ui()
_dispatch(ui, ["init", "--quiet", self.wc_path])
repo = self.repo
repo.ui.setconfig("ui", "username", "anonymous")
fpath = os.path.join(self.wc_path, "it")
f = file(fpath, "w")
f.write("C1")
f.flush()
commands.add(ui, repo)
commands.commit(ui, repo, message="C1")
f.write("C2")
f.flush()
commands.commit(ui, repo, message="C2")
f.write("C3")
f.flush()
commands.commit(ui, repo, message="C3")
self.assertEqual(test_hgsubversion_util.repolen(repo), 3)
updaterev = 1
_dispatch(
ui,
[
"clone",
"--quiet",
self.wc_path,
self.wc_path + "2",
"--updaterev=%s" % updaterev,
],
)
repo2 = hg.repository(ui, self.wc_path + "2")
self.assertEqual(str(repo[updaterev]), str(repo2["."]))
if __name__ == "__main__":
import silenttestrunner
silenttestrunner.main(__name__)