<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
Yeah, sys.settrace() could be more sophisticated. However you are
setting the trace function, I would think you could manage to set it
back somehow. But even if you could, you wouldn't be getting
coverage measurement for the time your trace function was in effect,
unless you also call my trace function from yours. A mess all
around.<br>
<br>
--Ned.<br>
<br>
On 12/29/2011 4:22 AM, Leahy, Oliver wrote:
<blockquote
cite="mid:06B307D2846C7C4FB931AE0C3CA3950746999DEB@G9W0707.americas.hpqcorp.net"
type="cite">
<meta http-equiv="Content-Type" content="text/html;
charset=ISO-8859-1">
<meta name="Generator" content="Microsoft Word 12 (filtered
medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";
        color:black;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML Preformatted Char";
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";
        color:black;}
span.EmailStyle17
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
span.HTMLPreformattedChar
        {mso-style-name:"HTML Preformatted Char";
        mso-style-priority:99;
        mso-style-link:"HTML Preformatted";
        font-family:Consolas;
        color:black;}
span.EmailStyle20
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
<div class="WordSection1">
<p class="MsoNormal"><span style="color:#1F497D">Thanks for the
suggestions, I’ve tried the –timid flag, hasn’t helped. And
unfortunately<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">(for me) it
looks like I can’t successfully reset the trace function
with settrace() because of<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">the way my
trace functions work; I raise exceptions when I reached
specified points in the<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">code, so once
the exception is raised I don’t get an opportunity to call
sys.settrace().
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">So I’m going to
have to use mocks, as you suggest. What I really want is for
sys.settrace() to<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">be able to
manage a stack of functions that would be called in sequence
</span><span style="font-family:Wingdings;color:#1F497D">J</span><span
style="color:#1F497D"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Thanks again,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Ollie<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<div>
<div style="border:none;border-top:solid #B5C4DF
1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span
style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:windowtext">From:</span></b><span
style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:windowtext">
Ned Batchelder [<a class="moz-txt-link-freetext" href="mailto:ned@nedbatchelder.com">mailto:ned@nedbatchelder.com</a>]
<br>
<b>Sent:</b> 28 December 2011 21:44<br>
<b>To:</b> Leahy, Oliver<br>
<b>Cc:</b> <a class="moz-txt-link-abbreviated" href="mailto:testing-in-python@lists.idyll.org">testing-in-python@lists.idyll.org</a><br>
<b>Subject:</b> Re: [TIP] Using coverage.py with code
that uses sys.settrace()<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">On 12/28/2011 10:58 AM, Leahy, Oliver
wrote: <o:p></o:p></p>
<p class="MsoNormal">What’s the recommended way to use
coverage.py with code that uses sys.settrace()<o:p></o:p></p>
<p class="MsoNormal"> <o:p></o:p></p>
<p class="MsoNormal">I’m using settrace() to simulate error
conditions at certain lines during testing, but<o:p></o:p></p>
<p class="MsoNormal">this interferes with the use coverage.py
makes of settrace() and I’m getting incorrect<o:p></o:p></p>
<p class="MsoNormal">coverage metrics.<o:p></o:p></p>
<p class="MsoNormal"> <o:p></o:p></p>
<p class="MsoNormal"> <o:p></o:p></p>
<p class="MsoNormal">I’m hacking at my code to try to store an
existing value for sys.gettrace() whenever<o:p></o:p></p>
<p class="MsoNormal">I call settrace(), and then restoring the
pre-existing trace function whenever I stop<o:p></o:p></p>
<p class="MsoNormal">tracing using my function, but it’s not
working for me at the moment.<o:p></o:p></p>
<p class="MsoNormal"> <o:p></o:p></p>
<p class="MsoNormal">Is this a sensible approach to this
problem? Would anyone have any other suggestions?<o:p></o:p></p>
<p class="MsoNormal"><span
style="font-size:12.0pt;font-family:"Times New
Roman","serif"">I don't know if anyone has
tried measuring code that uses settrace. You should be able
to use gettrace and settrace to save and restore the
coverage trace function, but I won't be that surprised if it
isn't working. You should try using the --timid flag on
"coverage run" to see if it helps. It's specifically for
environments that do unusual things with settrace(). Are
you sure settrace() is the best way to accomplish your
goals? Mocking can also inject errors into running code, and
may be easier to work with in the long run.<br>
<br>
In any case, if you need more help, post more details.<br>
<br>
--Ned.<br>
<br>
<o:p></o:p></span></p>
<p class="MsoNormal"> <o:p></o:p></p>
<p class="MsoNormal">Thanks,<o:p></o:p></p>
<p class="MsoNormal">Ollie<o:p></o:p></p>
<p class="MsoNormal"><span
style="font-size:12.0pt;font-family:"Times New
Roman","serif""><br>
<br>
<br>
<o:p></o:p></span></p>
<pre>_______________________________________________<o:p></o:p></pre>
<pre>testing-in-python mailing list<o:p></o:p></pre>
<pre><a moz-do-not-send="true" href="mailto:testing-in-python@lists.idyll.org">testing-in-python@lists.idyll.org</a><o:p></o:p></pre>
<pre><a moz-do-not-send="true" href="http://lists.idyll.org/listinfo/testing-in-python">http://lists.idyll.org/listinfo/testing-in-python</a><o:p></o:p></pre>
</div>
</blockquote>
</body>
</html>