From 0fe00aafc3a40c6979980fd6b713e79b2f5b722f Mon Sep 17 00:00:00 2001 From: Edward Loper Date: Thu, 30 Sep 2004 17:18:18 +0000 Subject: [PATCH] Added 2 notes about the complexities of testing SyntaxErrors. --- Doc/lib/libdoctest.tex | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/Doc/lib/libdoctest.tex b/Doc/lib/libdoctest.tex index 26354864732..92aa039a116 100644 --- a/Doc/lib/libdoctest.tex +++ b/Doc/lib/libdoctest.tex @@ -495,6 +495,37 @@ Some details you should read once, but won't need to remember: \item When the \constant{IGNORE_EXCEPTION_DETAIL} doctest option is is specified, everything following the leftmost colon is ignored. +\item The interactive shell omits the traceback header line for some + \exception{SyntaxError}s. But doctest uses the traceback header + line to distinguish exceptions from non-exceptions. So in the rare + case where you need to test a \exception{SyntaxError} that omits the + traceback header, you will need to manually add the traceback header + line to your test example. + +\item For some \exception{SyntaxError}s, Python displays the character + position of the syntax error, using a \code{\^} marker: + +\begin{verbatim} +>>> 1 1 + File "", line 1 + 1 1 + ^ +SyntaxError: invalid syntax +\end{verbatim} + + Since the lines showing the position of the error come before the + exception type and detail, they are not checked by doctest. For + example, the following test would pass, even though it puts the + \code{\^} marker in the wrong location: + +\begin{verbatim} +>>> 1 1 + File "", line 1 + 1 1 + ^ +SyntaxError: invalid syntax +\end{verbatim} + \end{itemize} \versionchanged[The ability to handle a multi-line exception detail,