| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
first failing example in each test.
|
|
|
|
|
|
|
| |
NDIFF_DIFF->REPORT_NDIFF. This establishes the naming convention that
all reporting options should begin with "REPORT_" (since reporting
options are a different class from output comparison options; but they
are both set in optionflags).
|
| |
|
|
|
|
|
|
|
| |
to be more consistent with report_failure()
- If `want` or `got` is empty, then print "Expected nothing\n" or
"Got nothing\n" rather than "Expected:\n" or "Got:\n"
- Got rid of _tag_msg
|
|
|
|
|
|
|
|
|
| |
exception message, or None if no exception is expected); and moved
exception parsing from DocTestRunner to DocTestParser. This is
architecturally cleaner, since it moves all parsing work to
DocTestParser; and it should make it easier for code outside
DocTestRunner (notably debugging code) to properly handle expected
exceptions.
|
|
|
|
|
|
|
|
| |
a traceback message. I.e., examples that raise exceptions may no
longer generate pre-exception output. This restores the behavior of
doctest in python 2.3. The ability to check pre-exception output is
being removed because it makes the documentation simpler; and because
there are very few use cases for it.
|
|
|
|
|
| |
is_private in its tests failed if doctest.py was run directly. Now
it works.
|
| |
|
| |
|
|
|
|
|
|
|
| |
NamedTemporaryFile (which can't work for this function's purposes on
Windows). Leaving temp files behind wasn't a great idea either, though,
so try to clean up. At least the test suite no longer leaves any of
these guys behind now.
|
|
|
|
|
|
|
|
|
| |
docstrings toward being a lot shorter, and telling the whole truth in
the manual instead. This change is an example: the manual has detailed
explanations of the option names now, so it's Bad to repeat them in
the docstring (two detailed descriptions are certain to get out of synch).
Just listing the names has memory-jogging benefits, though, so that's
still helpful in the docstring.
|
| |
|
| |
|
|
|
|
| |
final newline. Anything to get rid of "l" as a variable name <0.5 wink>.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Test filenames sometimes had trailing .pyc or .pyo sufixes
(when module __file__ did).
- Trailing spaces spaces in expected output were dropped.
New default failure format:
- Separation of examples from file info makes examples easier to see
- More vertical separation, improving readability
- Emacs-recognized file info (also closer to Python exception format)
|
|
|
|
|
|
| |
are non-obvious either way because the newline character "is invisible",
but it's still there all the same, and it's easier to explain/predict
if that reality is left alone.
|
| |
|
|
|
|
|
|
| |
It's redundant, since no output is written anyway: DebugRunner doesn't
generate any output for failures and unexpected exceptions, and since
verbose=False, it won't generate any output for non-failures either.
|
|
|
|
|
| |
constant defined by the module (except the test*() functions, which
should be integrated into test/test_doctest.py, anyway).
|
|
|
|
| |
matches to be symmetric. This makes the algorithm easier to understand.
|
| |
|
|
|
|
|
|
|
| |
appeared at the end of a line. Repaired that. Also noted that it's
too easy to provoke this implementation into requiring exponential
time, and especially when a test fails. I'll replace the implementation
with an always-efficient one later.
|
|
|
|
|
| |
updating line numbers correctly for bare prompts & examples containing
only comments).
|
|
|
|
|
|
| |
them (which they are now), I had to rewrite the code to understand
it. This has got to be the most DWIM part of doctest -- but in context
is really necessary.
|
|
|
|
| |
implemented, just what it does.
|
|
|
|
|
| |
(rather than replacing <BLANKLINE> with blank lines in `got`). This
makes it easier to see what's intended.
|
|
|
|
|
|
|
|
| |
visually distinguish the expected output from the comments (use
"##" to mark expected outputs, and "#" to mark comments).
- If the string given to DocTestParser.get_program() is indented, then
strip its indentation. (In particular, find the min indentation of
non-blank lines, and strip that indentation from all lines.)
|
|
|
|
|
|
|
| |
- Added comments for some regexps
- If the traceback type/message don't match, then still print full
traceback in report_failure (not just the first & last lines)
- Renamed DocTestRunner.__failure_header -> _failure_header
|
|
|
|
|
|
|
|
|
| |
modify option flags for a single example; they do not turn options
on or off.)
- Added "indent" and "options" attributes for Example
- Got rid of add_newlines param to DocTestParser._parse_example (it's
no longer needed; Example's constructor now takes care of it).
- Added some docstrings
|
|
|
|
|
| |
option flags); and use it to define the existing optionflag
constants.
|
| |
|
|
|
|
| |
checkins. Reapplying the latter changes.
|
|
|
|
|
|
|
|
|
|
|
| |
responsible for parsing the string.
- Renamed Parser to DocTestParser
- DocTestParser.get_*() now accept the string & name as command-line
arguments; the parser's constructor is now empty.
- Added DocTestParser.get_doctest() method
- Replaced "doctest_factory" argument to DocTestFinder with a "parser"
argument (takes a DocTestParser).
- Changed _tag_msg to take an indentation string argument.
|
|
|
|
|
|
|
|
|
| |
the set_trace fiddling didn't make sense to me, and I ended up reworking
that part of the code. We really do want to save and restore
pdb.set_trace, so that each dynamically nested level of doctest gets
sys.stdout fiddled to what's appropriate for *it*. The only "trick"
really needed is that these layers of set_trace wrappers each call the
original pdb.set_trace (instead of the current pdb.set_trace).
|
| |
|
|
|
|
|
| |
to put details in the LaTeX docs instead, and lots of stuff in the
module docstring wasn't useful anyway.
|
| |
|
|
|
|
|
|
| |
Example.__init__. The constructor now adds trailing newlines when
needed, and no longer distinguishes between multi- and single-line
cases for source.
|
| |
|
|
|
|
| |
more sense as a callable.
|
|
|
|
| |
rather than a list of triples.
|
|
|
|
|
|
| |
into their own class, OutputChecker.
- Added optional OutputChecker arguments to DocTestRunner,
DocTestCase, DocTestSuite.
|
|
|
|
|
|
|
|
|
| |
the string one line at a time. The resulting code is (in my opinion,
anyway), much easier to read. In the process, I found and fixed a
bug in the orginal parser's line numbering in error messages (it was
inconsistant between 0-based and 1-based). Also, check for missing
blank lines after the prompt on all prompt lines, not just PS1 lines
(test added).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This got slammed in when find() was fixed to stop grabbing doctests
from modules imported *by* the module being tested. Such tests cannot
be expected to succeed, since they'll be run with the current module's
globals. Dozens of Zope3 doctests were failing because of that.
It wasn't clear why ignore_imports got added then. Maybe it's because
some existing tests failed when the change was made. Whatever, it's
a Bad Idea so it's gone now.
The only use of it was exceedingly obscure, in test_doctest's "Duplicate
Removal" test. It was "needed" there because, as an artifact of running
a doctest inside a doctest, the func_globals of functions compiled in
the second-level doctest don't match the module globals, and so the
test-finder believed these functions were from a foreign module and
skipped them. But that took a long time to figure out, and I actually
understand some of this stuff <0.9 wink>.
That problem was resolved by moving the source code for the second-level
doctest into an actual module (test/doctest_aliases.py).
The only remaining difficulty was that the test for the deprecated
Tester.rundict() then failed, because the test finder doesn't take
module=None at face value, trying to guess which module the user really
intended then. Its guess wasn't appropriate for what Tester.rundict
needs when module=None is given to *it*, which is "no, there is no
module here, and I mean it". So now passing module=False means exactly
that. This is hokey, but ignore_imports=False was really a hack to worm
around that there was no way to tell the test-finder that module=None
*sometimes* means what it says. There was no use case for the combination
of passing a real module with ignore_imports=False.
|
| |
|
|
|
|
| |
except internal tests.
|
| |
|
|
|
|
|
|
|
| |
Ripped out the docs for the new DocTestFinder's namefilter argument,
and renamed it to _namefilter; this only existed to support isprivate.
Removed the new DocTestFinder's objfilter argument. No point adding
more cruft to a broken filtering design.
|
| |
|
|
|
|
|
|
| |
This primarily adds more powerful ways to work with unittest, including
spiffy support for building suites out of doctests in non-Python
"text files".
|