mirror of
https://github.com/facebook/sapling.git
synced 2024-10-11 01:07:15 +03:00
584656dff3
Summary: Turned on the auto formatter. Ran `arc lint --apply-patches --take BLACK **/*.py`. Then run `arc lint` again so some other autofixers like spellchecker etc. looked at the code base. Manually accept the changes whenever they make sense, or use a workaround (ex. changing "dict()" to "dict constructor") where autofix is false positive. Disabled linters on files that are hard (i18n/polib.py) to fix, or less interesting to fix (hgsubversion tests), or cannot be fixed without breaking OSS build (FBPYTHON4). Conflicted linters (test-check-module-imports.t, part of test-check-code.t, test-check-pyflakes.t) are removed or disabled. Duplicated linters (test-check-pyflakes.t, test-check-pylint.t) are removed. An issue of the auto-formatter is lines are no longer guarnateed to be <= 80 chars. But that seems less important comparing with the benefit auto-formatter provides. As we're here, also remove test-check-py3-compat.t, as it is currently broken if `PYTHON3=/bin/python3` is set. Reviewed By: wez, phillco, simpkins, pkaush, singhsrb Differential Revision: D8173629 fbshipit-source-id: 90e248ae0c5e6eaadbe25520a6ee42d32005621b
136 lines
4.5 KiB
Python
136 lines
4.5 KiB
Python
# no-check-code -- see T24862348
|
|
# @nolint
|
|
|
|
import sys
|
|
|
|
import test_hgsubversion_util
|
|
|
|
|
|
class TestPushRenames(test_hgsubversion_util.TestBase):
|
|
obsolete_mode_tests = True
|
|
stupid_mode_tests = True
|
|
|
|
def setUp(self):
|
|
test_hgsubversion_util.TestBase.setUp(self)
|
|
self.repo_path = self.load_and_fetch("pushrenames.svndump")[1]
|
|
|
|
def _debug_print_copies(self, ctx):
|
|
w = sys.stderr.write
|
|
for f in ctx.files():
|
|
if f not in ctx:
|
|
w("R %s\n" % f)
|
|
else:
|
|
w("U %s %r\n" % (f, ctx[f].data()))
|
|
if ctx[f].renamed():
|
|
w("%s copied from %s\n" % (f, ctx[f].renamed()[0]))
|
|
|
|
def test_push_renames(self):
|
|
changes = [
|
|
# Regular copy of a single file
|
|
("a", "a2", None),
|
|
# Copy and update of target
|
|
("a", "a3", "aa\n"),
|
|
# Regular move of a single file
|
|
("b", "b2", None),
|
|
("b", None, None),
|
|
# Regular move and update of target
|
|
("c", "c2", "c\nc\n"),
|
|
("c", None, None),
|
|
# Copy and update of source and targets
|
|
("d", "d2", "d\nd2\n"),
|
|
("d", "d", "d\nd\n"),
|
|
# Double copy and removal (aka copy and move)
|
|
("e", "e2", "e\ne2\n"),
|
|
("e", "e3", "e\ne3\n"),
|
|
("e", None, None),
|
|
]
|
|
self.commitchanges(changes)
|
|
self.pushrevisions()
|
|
tip = self.repo["tip"]
|
|
# self._debug_print_copies(tip)
|
|
self.assertchanges(changes, tip)
|
|
|
|
def test_push_rename_with_space(self):
|
|
changes = [
|
|
(
|
|
"random/dir with space/file with space",
|
|
"random/dir with space/file with space",
|
|
"file contents",
|
|
)
|
|
]
|
|
self.commitchanges(changes)
|
|
|
|
changes = [
|
|
(
|
|
"random/dir with space/file with space",
|
|
"random2/dir with space/file with space",
|
|
None,
|
|
),
|
|
("random/dir with space/file with space", None, None),
|
|
]
|
|
self.commitchanges(changes)
|
|
self.pushrevisions()
|
|
self.assertEqual(
|
|
sorted(self.repo["tip"].manifest().keys()),
|
|
["a", "b", "c", "d", "e", "random2/dir with space/file with space"],
|
|
)
|
|
|
|
def test_push_rename_tree(self):
|
|
changes = [
|
|
("geek/alpha", "geek/alpha", "content"),
|
|
("geek/beta", "geek/beta", "content"),
|
|
("geek/delta", "geek/delta", "content"),
|
|
("geek/gamma", "geek/gamma", "content"),
|
|
("geek/later/pi", "geek/later/pi", "content geek/later/pi"),
|
|
("geek/later/rho", "geek/later/rho", "content geek/later/rho"),
|
|
("geek/other/blah", "geek/other/blah", "content geek/other/blah"),
|
|
(
|
|
"geek/other/another/layer",
|
|
"geek/other/another/layer",
|
|
"content deep file",
|
|
),
|
|
]
|
|
|
|
self.commitchanges(changes)
|
|
self.pushrevisions()
|
|
self.assertchanges(changes, self.repo["tip"])
|
|
|
|
changes = [
|
|
# rename (copy + remove) all of geek to greek
|
|
("geek/alpha", "greek/alpha", None),
|
|
("geek/beta", "greek/beta", None),
|
|
("geek/delta", "greek/delta", None),
|
|
("geek/gamma", "greek/gamma", None),
|
|
("geek/later/pi", "greek/later/pi", None),
|
|
("geek/later/rho", "greek/later/rho", None),
|
|
("geek/other/blah", "greek/other/blah", None),
|
|
("geek/other/another/layer", "greek/other/another/layer", None),
|
|
("geek/alpha", None, None),
|
|
("geek/beta", None, None),
|
|
("geek/delta", None, None),
|
|
("geek/gamma", None, None),
|
|
("geek/later/pi", None, None),
|
|
("geek/later/rho", None, None),
|
|
("geek/other/blah", None, None),
|
|
("geek/other/another/layer", None, None),
|
|
]
|
|
self.commitchanges(changes)
|
|
self.pushrevisions()
|
|
assert reduce(
|
|
lambda x, y: x and y,
|
|
(
|
|
"geek" not in f
|
|
for f in test_hgsubversion_util.svnls(self.repo_path, "trunk")
|
|
),
|
|
), (
|
|
"This failure means rename of an entire tree is broken."
|
|
" There is a print on the preceding line commented out "
|
|
"that should help you."
|
|
)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
import silenttestrunner
|
|
|
|
silenttestrunner.main(__name__)
|