sapling/tests/test-hgsubversion-push-renames.py
Jun Wu 584656dff3 codemod: join the auto-formatter party
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
2018-05-25 22:17:29 -07:00

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__)