mirror of
https://github.com/python/cpython.git
synced 2024-11-24 00:38:00 +01:00
This commit is contained in:
parent
b90bd3e5bb
commit
c3b6dbff2c
@ -1264,6 +1264,12 @@ def _check_types(a, b, *args):
|
|||||||
if b and not isinstance(b[0], str):
|
if b and not isinstance(b[0], str):
|
||||||
raise TypeError('lines to compare must be str, not %s (%r)' %
|
raise TypeError('lines to compare must be str, not %s (%r)' %
|
||||||
(type(b[0]).__name__, b[0]))
|
(type(b[0]).__name__, b[0]))
|
||||||
|
if isinstance(a, str):
|
||||||
|
raise TypeError('input must be a sequence of strings, not %s' %
|
||||||
|
type(a).__name__)
|
||||||
|
if isinstance(b, str):
|
||||||
|
raise TypeError('input must be a sequence of strings, not %s' %
|
||||||
|
type(b).__name__)
|
||||||
for arg in args:
|
for arg in args:
|
||||||
if not isinstance(arg, str):
|
if not isinstance(arg, str):
|
||||||
raise TypeError('all arguments must be str, not: %r' % (arg,))
|
raise TypeError('all arguments must be str, not: %r' % (arg,))
|
||||||
|
@ -295,7 +295,7 @@ class TestDiffer(unittest.TestCase):
|
|||||||
|
|
||||||
class TestOutputFormat(unittest.TestCase):
|
class TestOutputFormat(unittest.TestCase):
|
||||||
def test_tab_delimiter(self):
|
def test_tab_delimiter(self):
|
||||||
args = ['one', 'two', 'Original', 'Current',
|
args = [['one'], ['two'], 'Original', 'Current',
|
||||||
'2005-01-26 23:30:50', '2010-04-02 10:20:52']
|
'2005-01-26 23:30:50', '2010-04-02 10:20:52']
|
||||||
ud = difflib.unified_diff(*args, lineterm='')
|
ud = difflib.unified_diff(*args, lineterm='')
|
||||||
self.assertEqual(list(ud)[0:2], [
|
self.assertEqual(list(ud)[0:2], [
|
||||||
@ -307,7 +307,7 @@ class TestOutputFormat(unittest.TestCase):
|
|||||||
"--- Current\t2010-04-02 10:20:52"])
|
"--- Current\t2010-04-02 10:20:52"])
|
||||||
|
|
||||||
def test_no_trailing_tab_on_empty_filedate(self):
|
def test_no_trailing_tab_on_empty_filedate(self):
|
||||||
args = ['one', 'two', 'Original', 'Current']
|
args = [['one'], ['two'], 'Original', 'Current']
|
||||||
ud = difflib.unified_diff(*args, lineterm='')
|
ud = difflib.unified_diff(*args, lineterm='')
|
||||||
self.assertEqual(list(ud)[0:2], ["--- Original", "+++ Current"])
|
self.assertEqual(list(ud)[0:2], ["--- Original", "+++ Current"])
|
||||||
|
|
||||||
@ -447,6 +447,28 @@ class TestBytes(unittest.TestCase):
|
|||||||
lineterm=b'')
|
lineterm=b'')
|
||||||
assertDiff(expect, actual)
|
assertDiff(expect, actual)
|
||||||
|
|
||||||
|
|
||||||
|
class TestInputTypes(unittest.TestCase):
|
||||||
|
def _assert_type_error(self, msg, generator, *args):
|
||||||
|
with self.assertRaises(TypeError) as ctx:
|
||||||
|
list(generator(*args))
|
||||||
|
self.assertEqual(msg, str(ctx.exception))
|
||||||
|
|
||||||
|
def test_input_type_checks(self):
|
||||||
|
unified = difflib.unified_diff
|
||||||
|
context = difflib.context_diff
|
||||||
|
|
||||||
|
expect = "input must be a sequence of strings, not str"
|
||||||
|
self._assert_type_error(expect, unified, 'a', ['b'])
|
||||||
|
self._assert_type_error(expect, context, 'a', ['b'])
|
||||||
|
|
||||||
|
self._assert_type_error(expect, unified, ['a'], 'b')
|
||||||
|
self._assert_type_error(expect, context, ['a'], 'b')
|
||||||
|
|
||||||
|
expect = "lines to compare must be str, not NoneType (None)"
|
||||||
|
self._assert_type_error(expect, unified, ['a'], [None])
|
||||||
|
self._assert_type_error(expect, context, ['a'], [None])
|
||||||
|
|
||||||
def test_mixed_types_content(self):
|
def test_mixed_types_content(self):
|
||||||
# type of input content must be consistent: all str or all bytes
|
# type of input content must be consistent: all str or all bytes
|
||||||
a = [b'hello']
|
a = [b'hello']
|
||||||
@ -495,10 +517,6 @@ class TestBytes(unittest.TestCase):
|
|||||||
b = ['bar\n']
|
b = ['bar\n']
|
||||||
list(difflib.unified_diff(a, b, 'a', 'b', datea, dateb))
|
list(difflib.unified_diff(a, b, 'a', 'b', datea, dateb))
|
||||||
|
|
||||||
def _assert_type_error(self, msg, generator, *args):
|
|
||||||
with self.assertRaises(TypeError) as ctx:
|
|
||||||
list(generator(*args))
|
|
||||||
self.assertEqual(msg, str(ctx.exception))
|
|
||||||
|
|
||||||
class TestJunkAPIs(unittest.TestCase):
|
class TestJunkAPIs(unittest.TestCase):
|
||||||
def test_is_line_junk_true(self):
|
def test_is_line_junk_true(self):
|
||||||
|
@ -0,0 +1 @@
|
|||||||
|
Raise ``TypeError`` when passing a string to :func:`difflib.unified_diff` and :func:`difflib.context_diff`.
|
Loading…
Reference in New Issue
Block a user