Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
edd117fd
Commit
edd117fd
authored
Apr 27, 2011
by
Ezio Melotti
Browse files
Options
Browse Files
Download
Plain Diff
#11763: merge with 3.1.
parents
40fc59d9
935a5888
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
47 additions
and
0 deletions
+47
-0
Lib/unittest/case.py
Lib/unittest/case.py
+8
-0
Lib/unittest/test/test_case.py
Lib/unittest/test/test_case.py
+36
-0
Misc/NEWS
Misc/NEWS
+3
-0
No files found.
Lib/unittest/case.py
View file @
edd117fd
...
...
@@ -263,6 +263,10 @@ class TestCase(object):
maxDiff
=
80
*
8
# If a string is longer than _diffThreshold, use normal comparison instead
# of difflib. See #11763.
_diffThreshold
=
2
**
16
# Attribute used by TestSuite for classSetUp
_classSetupFailed
=
False
...
...
@@ -1048,6 +1052,10 @@ class TestCase(object):
self
.
assertIsInstance
(
second
,
str
,
'Second argument is not a string'
)
if
first
!=
second
:
# don't use difflib if the strings are too long
if
(
len
(
first
)
>
self
.
_diffThreshold
or
len
(
second
)
>
self
.
_diffThreshold
):
self
.
_baseAssertEqual
(
first
,
second
,
msg
)
firstlines
=
first
.
splitlines
(
True
)
secondlines
=
second
.
splitlines
(
True
)
if
len
(
firstlines
)
==
1
and
first
.
strip
(
'
\
r
\
n
'
)
==
first
:
...
...
Lib/unittest/test/test_case.py
View file @
edd117fd
...
...
@@ -685,6 +685,42 @@ class Test_TestCase(unittest.TestCase, TestEquality, TestHashing):
else
:
self
.
fail
(
'assertMultiLineEqual did not fail'
)
def
testAssertEqual_diffThreshold
(
self
):
# check threshold value
self
.
assertEqual
(
self
.
_diffThreshold
,
2
**
16
)
# disable madDiff to get diff markers
self
.
maxDiff
=
None
# set a lower threshold value and add a cleanup to restore it
old_threshold
=
self
.
_diffThreshold
self
.
_diffThreshold
=
2
**
8
self
.
addCleanup
(
lambda
:
setattr
(
self
,
'_diffThreshold'
,
old_threshold
))
# under the threshold: diff marker (^) in error message
s
=
'x'
*
(
2
**
7
)
with
self
.
assertRaises
(
self
.
failureException
)
as
cm
:
self
.
assertEqual
(
s
+
'a'
,
s
+
'b'
)
self
.
assertIn
(
'^'
,
str
(
cm
.
exception
))
self
.
assertEqual
(
s
+
'a'
,
s
+
'a'
)
# over the threshold: diff not used and marker (^) not in error message
s
=
'x'
*
(
2
**
9
)
# if the path that uses difflib is taken, _truncateMessage will be
# called -- replace it with explodingTruncation to verify that this
# doesn't happen
def
explodingTruncation
(
message
,
diff
):
raise
SystemError
(
'this should not be raised'
)
old_truncate
=
self
.
_truncateMessage
self
.
_truncateMessage
=
explodingTruncation
self
.
addCleanup
(
lambda
:
setattr
(
self
,
'_truncateMessage'
,
old_truncate
))
s1
,
s2
=
s
+
'a'
,
s
+
'b'
with
self
.
assertRaises
(
self
.
failureException
)
as
cm
:
self
.
assertEqual
(
s1
,
s2
)
self
.
assertNotIn
(
'^'
,
str
(
cm
.
exception
))
self
.
assertEqual
(
str
(
cm
.
exception
),
'%r != %r'
%
(
s1
,
s2
))
self
.
assertEqual
(
s
+
'a'
,
s
+
'a'
)
def
testAssertCountEqual
(
self
):
a
=
object
()
self
.
assertCountEqual
([
1
,
2
,
3
],
[
3
,
2
,
1
])
...
...
Misc/NEWS
View file @
edd117fd
...
...
@@ -66,6 +66,9 @@ Core and Builtins
Library
-------
- Issue #11763: don'
t
use
difflib
in
TestCase
.
assertMultiLineEqual
if
the
strings
are
too
long
.
-
Issue
#
11236
:
getpass
.
getpass
responds
to
ctrl
-
c
or
ctrl
-
z
on
terminal
.
-
Issue
#
11768
:
The
signal
handler
of
the
signal
module
only
calls
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment