2016-04-03 06:16:17 +03:00
|
|
|
from __future__ import absolute_import, print_function
|
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-26 07:34:37 +03:00
|
|
|
|
2016-12-15 18:50:06 +03:00
|
|
|
import collections
|
2009-05-31 01:20:30 +04:00
|
|
|
import struct
|
2016-12-15 18:10:15 +03:00
|
|
|
import unittest
|
|
|
|
|
2019-01-30 03:25:33 +03:00
|
|
|
from edenscm.mercurial import mdiff
|
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-26 07:34:37 +03:00
|
|
|
|
|
|
|
|
|
|
|
class diffreplace(collections.namedtuple("diffreplace", "start end from_ to")):
|
2016-12-15 18:50:06 +03:00
|
|
|
def __repr__(self):
|
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-26 07:34:37 +03:00
|
|
|
return "diffreplace(%r, %r, %r, %r)" % self
|
|
|
|
|
2016-12-15 18:50:06 +03:00
|
|
|
|
2016-12-15 18:10:15 +03:00
|
|
|
class BdiffTests(unittest.TestCase):
|
|
|
|
def assert_bdiff_applies(self, a, b):
|
2017-04-26 16:03:37 +03:00
|
|
|
d = mdiff.textdiff(a, b)
|
2016-12-15 18:10:15 +03:00
|
|
|
c = a
|
|
|
|
if d:
|
2017-04-26 16:05:59 +03:00
|
|
|
c = mdiff.patches(a, [d])
|
2016-12-15 18:10:15 +03:00
|
|
|
self.assertEqual(
|
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-26 07:34:37 +03:00
|
|
|
c,
|
|
|
|
b,
|
|
|
|
(
|
|
|
|
"bad diff+patch result from\n %r to\n "
|
|
|
|
"%r: \nbdiff: %r\npatched: %r" % (a, b, d, c[:200])
|
|
|
|
),
|
|
|
|
)
|
2005-06-22 05:27:58 +04:00
|
|
|
|
2016-12-15 18:10:15 +03:00
|
|
|
def assert_bdiff(self, a, b):
|
|
|
|
self.assert_bdiff_applies(a, b)
|
|
|
|
self.assert_bdiff_applies(b, a)
|
|
|
|
|
|
|
|
def test_bdiff_basic(self):
|
|
|
|
cases = [
|
|
|
|
("a\nc\n\n\n\n", "a\nb\n\n\n"),
|
|
|
|
("a\nb\nc\n", "a\nc\n"),
|
|
|
|
("", ""),
|
|
|
|
("a\nb\nc", "a\nb\nc"),
|
|
|
|
("a\nb\nc\nd\n", "a\nd\n"),
|
|
|
|
("a\nb\nc\nd\n", "a\nc\ne\n"),
|
|
|
|
("a\nb\nc\n", "a\nc\n"),
|
|
|
|
("a\n", "c\na\nb\n"),
|
|
|
|
("a\n", ""),
|
|
|
|
("a\n", "b\nc\n"),
|
|
|
|
("a\n", "c\na\n"),
|
|
|
|
("", "adjfkjdjksdhfksj"),
|
|
|
|
("", "ab"),
|
|
|
|
("", "abc"),
|
|
|
|
("a", "a"),
|
|
|
|
("ab", "ab"),
|
|
|
|
("abc", "abc"),
|
|
|
|
("a\n", "a\n"),
|
|
|
|
("a\nb", "a\nb"),
|
|
|
|
]
|
|
|
|
for a, b in cases:
|
|
|
|
self.assert_bdiff(a, b)
|
2005-06-22 05:27:58 +04:00
|
|
|
|
2016-12-15 18:50:06 +03:00
|
|
|
def showdiff(self, a, b):
|
2017-04-26 16:03:37 +03:00
|
|
|
bin = mdiff.textdiff(a, b)
|
2016-12-15 18:50:06 +03:00
|
|
|
pos = 0
|
|
|
|
q = 0
|
|
|
|
actions = []
|
|
|
|
while pos < len(bin):
|
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-26 07:34:37 +03:00
|
|
|
p1, p2, l = struct.unpack(">lll", bin[pos : pos + 12])
|
2016-12-15 18:50:06 +03:00
|
|
|
pos += 12
|
|
|
|
if p1:
|
|
|
|
actions.append(a[q:p1])
|
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-26 07:34:37 +03:00
|
|
|
actions.append(diffreplace(p1, p2, a[p1:p2], bin[pos : pos + l]))
|
2016-12-15 18:50:06 +03:00
|
|
|
pos += l
|
|
|
|
q = p2
|
|
|
|
if q < len(a):
|
|
|
|
actions.append(a[q:])
|
|
|
|
return actions
|
|
|
|
|
|
|
|
def test_issue1295(self):
|
|
|
|
cases = [
|
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-26 07:34:37 +03:00
|
|
|
(
|
|
|
|
"x\n\nx\n\nx\n\nx\n\nz\n",
|
|
|
|
"x\n\nx\n\ny\n\nx\n\nx\n\nz\n",
|
|
|
|
["x\n\nx\n\n", diffreplace(6, 6, "", "y\n\n"), "x\n\nx\n\nz\n"],
|
|
|
|
),
|
|
|
|
(
|
|
|
|
"x\n\nx\n\nx\n\nx\n\nz\n",
|
|
|
|
"x\n\nx\n\ny\n\nx\n\ny\n\nx\n\nz\n",
|
|
|
|
[
|
|
|
|
"x\n\nx\n\n",
|
|
|
|
diffreplace(6, 6, "", "y\n\n"),
|
|
|
|
"x\n\n",
|
|
|
|
diffreplace(9, 9, "", "y\n\n"),
|
|
|
|
"x\n\nz\n",
|
|
|
|
],
|
|
|
|
),
|
2016-12-15 18:50:06 +03:00
|
|
|
]
|
|
|
|
for old, new, want in cases:
|
|
|
|
self.assertEqual(self.showdiff(old, new), want)
|
|
|
|
|
2016-12-15 19:14:00 +03:00
|
|
|
def test_issue1295_varies_on_pure(self):
|
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-26 07:34:37 +03:00
|
|
|
# we should pick up abbbc. rather than bc.de as the longest match
|
|
|
|
got = self.showdiff(
|
|
|
|
"a\nb\nb\nb\nc\n.\nd\ne\n.\nf\n",
|
|
|
|
"a\nb\nb\na\nb\nb\nb\nc\n.\nb\nc\n.\nd\ne\nf\n",
|
|
|
|
)
|
|
|
|
want_c = [
|
|
|
|
"a\nb\nb\n",
|
|
|
|
diffreplace(6, 6, "", "a\nb\nb\nb\nc\n.\n"),
|
|
|
|
"b\nc\n.\nd\ne\n",
|
|
|
|
diffreplace(16, 18, ".\n", ""),
|
|
|
|
"f\n",
|
|
|
|
]
|
|
|
|
want_pure = [
|
|
|
|
diffreplace(0, 0, "", "a\nb\nb\n"),
|
|
|
|
"a\nb\nb\nb\nc\n.\n",
|
|
|
|
diffreplace(12, 12, "", "b\nc\n.\n"),
|
|
|
|
"d\ne\n",
|
|
|
|
diffreplace(16, 18, ".\n", ""),
|
|
|
|
"f\n",
|
|
|
|
]
|
|
|
|
self.assert_(
|
|
|
|
got in (want_c, want_pure),
|
|
|
|
"got: %r, wanted either %r or %r" % (got, want_c, want_pure),
|
|
|
|
)
|
2016-12-15 19:14:00 +03:00
|
|
|
|
2016-12-15 18:56:26 +03:00
|
|
|
def test_fixws(self):
|
|
|
|
cases = [
|
|
|
|
(" \ta\r b\t\n", "ab\n", 1),
|
|
|
|
(" \ta\r b\t\n", " a b\n", 0),
|
|
|
|
("", "", 1),
|
|
|
|
("", "", 0),
|
|
|
|
]
|
|
|
|
for a, b, allws in cases:
|
2017-04-26 16:03:37 +03:00
|
|
|
c = mdiff.fixws(a, allws)
|
2016-12-15 18:56:26 +03:00
|
|
|
self.assertEqual(
|
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-26 07:34:37 +03:00
|
|
|
c, b, "fixws(%r) want %r got %r (allws=%r)" % (a, b, c, allws)
|
|
|
|
)
|
2016-12-15 18:56:26 +03:00
|
|
|
|
2016-12-15 19:04:09 +03:00
|
|
|
def test_nice_diff_for_trivial_change(self):
|
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-26 07:34:37 +03:00
|
|
|
self.assertEqual(
|
|
|
|
self.showdiff(
|
|
|
|
"".join("<%s\n-\n" % i for i in range(5)),
|
|
|
|
"".join(">%s\n-\n" % i for i in range(5)),
|
|
|
|
),
|
|
|
|
[
|
|
|
|
diffreplace(0, 3, "<0\n", ">0\n"),
|
|
|
|
"-\n",
|
|
|
|
diffreplace(5, 8, "<1\n", ">1\n"),
|
|
|
|
"-\n",
|
|
|
|
diffreplace(10, 13, "<2\n", ">2\n"),
|
|
|
|
"-\n",
|
|
|
|
diffreplace(15, 18, "<3\n", ">3\n"),
|
|
|
|
"-\n",
|
|
|
|
diffreplace(20, 23, "<4\n", ">4\n"),
|
|
|
|
"-\n",
|
|
|
|
],
|
|
|
|
)
|
2016-11-15 23:56:49 +03:00
|
|
|
|
2016-12-15 19:04:09 +03:00
|
|
|
def test_prefer_appending(self):
|
|
|
|
# 1 line to 3 lines
|
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-26 07:34:37 +03:00
|
|
|
self.assertEqual(
|
|
|
|
self.showdiff("a\n", "a\n" * 3), ["a\n", diffreplace(2, 2, "", "a\na\n")]
|
|
|
|
)
|
2016-12-15 19:04:09 +03:00
|
|
|
# 1 line to 5 lines
|
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-26 07:34:37 +03:00
|
|
|
self.assertEqual(
|
|
|
|
self.showdiff("a\n", "a\n" * 5),
|
|
|
|
["a\n", diffreplace(2, 2, "", "a\na\na\na\n")],
|
|
|
|
)
|
2016-11-08 20:37:33 +03:00
|
|
|
|
2016-12-15 19:04:09 +03:00
|
|
|
def test_prefer_removing_trailing(self):
|
|
|
|
# 3 lines to 1 line
|
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-26 07:34:37 +03:00
|
|
|
self.assertEqual(
|
|
|
|
self.showdiff("a\n" * 3, "a\n"), ["a\n", diffreplace(2, 6, "a\na\n", "")]
|
|
|
|
)
|
2016-12-15 19:04:09 +03:00
|
|
|
# 5 lines to 1 line
|
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-26 07:34:37 +03:00
|
|
|
self.assertEqual(
|
|
|
|
self.showdiff("a\n" * 5, "a\n"),
|
|
|
|
["a\n", diffreplace(2, 10, "a\na\na\na\n", "")],
|
|
|
|
)
|
|
|
|
|
2016-12-15 18:10:15 +03:00
|
|
|
|
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-26 07:34:37 +03:00
|
|
|
if __name__ == "__main__":
|
2017-02-13 23:22:16 +03:00
|
|
|
import silenttestrunner
|
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-26 07:34:37 +03:00
|
|
|
|
2016-12-15 18:10:15 +03:00
|
|
|
silenttestrunner.main(__name__)
|