summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_difflib.py
Commit message (Collapse)AuthorAgeFilesLines
* [2.7] bpo-32981: Fix catastrophic backtracking vulns (GH-5955)Benjamin Peterson2018-03-041-1/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Prevent low-grade poplib REDOS (CVE-2018-1060) The regex to test a mail server's timestamp is susceptible to catastrophic backtracking on long evil responses from the server. Happily, the maximum length of malicious inputs is 2K thanks to a limit introduced in the fix for CVE-2013-1752. A 2KB evil response from the mail server would result in small slowdowns (milliseconds vs. microseconds) accumulated over many apop calls. This is a potential DOS vector via accumulated slowdowns. Replace it with a similar non-vulnerable regex. The new regex is RFC compliant. The old regex was non-compliant in edge cases. * Prevent difflib REDOS (CVE-2018-1061) The default regex for IS_LINE_JUNK is susceptible to catastrophic backtracking. This is a potential DOS vector. Replace it with an equivalent non-vulnerable regex. Also introduce unit and REDOS tests for difflib. Co-authored-by: Tim Peters <tim.peters@gmail.com> Co-authored-by: Christian Heimes <christian@python.org>. (cherry picked from commit 0e6c8ee2358a2e23117501826c008842acb835ac)
* Issue 21635: Fix caching in difflib.SequenceMatcher.get_matching_blocks().Raymond Hettinger2014-06-211-0/+9
|
* Issue 11747: Fix output format for context diffs.Raymond Hettinger2011-04-121-0/+41
|
* #2986 Add autojunk parameter to SequenceMatcher to optionally disable ↵Terry Reedy2010-11-111-2/+43
| | | | 'popular == junk' heuristic.
* Issue #7585: use tab between components in unified and context diff headers.R. David Murray2010-04-121-1/+23
| | | | | | | | | | | | Instead of spaces between the filename and date (or whatever the string is that follows the filename, if any) use tabs. This is what the unix 'diff' command does, for example, and difflib was intended to follow the 'standard' way of doing diffs. This improves compatibility with patch tools. The docs and examples are also changed to recommended that the date format used be the ISO 8601 format, which is what modern diff tools emit by default. Patch by Anatoly Techtonik.
* Fix for issue1488943 - difflib.Differ() doesn't always add hints for tabSenthil Kumaran2009-11-231-0/+8
| | | | characters.
* explicitly close filesPhilip Jenvey2009-05-281-6/+5
|
* Fix tests so they pass in -R modeNeal Norwitz2006-04-091-2/+6
|
* Patch #1413711: Certain patterns of differences were making difflibGustavo Niemeyer2006-01-311-0/+9
| | | | | touch the recursion limit. The applied patch inlines the recursive __helper method in a non-recursive way.
* Whitespace normalization. test_difflib passes again.Tim Peters2004-08-291-16/+16
|
* Reverting whitespace normalization. test_difflib fails with it -- theTim Peters2004-08-291-16/+16
| | | | | test depends on invisible trailing whitespace in .py files. The author will have to repair that.
* Whitespace normalization.Tim Peters2004-08-291-16/+16
|
* Patch #914575: difflib side by side diff support, diff.py s/b/s HTML option.Martin v. Löwis2004-08-291-2/+126
|
* SequenceMatcher(None, [], []).get_grouped_opcodes() now returns a generatorBrett Cannon2004-07-101-0/+7
| | | | | | that behaves as if both lists has an empty string in each of them. Closes bug #979794 (and duplicate bug #980117).
* Whitespace normalization.Tim Peters2004-01-181-1/+0
|
* Exercise Jim Fulton's new doctest extension for running doctests in aRaymond Hettinger2003-07-161-2/+5
| | | | | unittest environment. Since his extension finds docstrings in private functions, it exposed a bug in the difflib doctests.
* Fix SF bug #763023, difflib.py: ratio() zero division not caughtNeal Norwitz2003-07-011-0/+12
| | | | Backport candidate
* Get rid of relative imports in all unittests. Now anything thatBarry Warsaw2002-07-231-1/+2
| | | | | | | | | | | imports e.g. test_support must do so using an absolute package name such as "import test.test_support" or "from test import test_support". This also updates the README in Lib/test, and gets rid of the duplicate data dirctory in Lib/test/data (replaced by Lib/email/test/data). Now Tim and Jack can have at it. :)
* Teach regrtest how to pass on doctest failure msgs. This is done via aTim Peters2001-09-091-3/+2
| | | | | | | | | | | horridly inefficient hack in regrtest's Compare class, but it's about as clean as can be: regrtest has to set up the Compare instance before importing a test module, and by the time the module *is* imported it's too late to change that decision. The good news is that the more tests we convert to unittest and doctest, the less the inefficiency here matters. Even now there are few tests with large expected-output files (the new cost here is a Python-level call per .write() when there's an expected- output file).
* Remove test_doctest's expected-output file.Tim Peters2001-05-231-1/+2
| | | | | | Change test_doctest and test_difflib to pass regrtest's notion of verbosity on to doctest. Add explanation for a dozen "new" things to test/README.
* Remove test_difflib's output file and change test_difflib to stopTim Peters2001-05-231-1/+1
| | | | | generating it. Since this is purely a doctest, the output file never served a good purpose.
* Moved SequenceMatcher from ndiff into new std library module difflib.py.Tim Peters2001-02-101-0/+2
Guido told me to do this <wink>. Greatly expanded docstrings, and fleshed out with examples. New std test. Added new get_close_matches() function for ESR. Needs docs, but LaTeXification of the module docstring is all it needs. \CVS: ----------------------------------------------------------------------