<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html; charset=ISO-8859-1"
 http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
On 05/03/2010 00:19, Ryan Freckleton wrote:
<blockquote
 cite="mid:318072441003041619s166c3dcaqb676afc4f4425438@mail.gmail.com"
 type="cite">On Thu, Mar 4, 2010 at 3:33 PM, Michael Foord <span
 dir="ltr">&lt;<a moz-do-not-send="true"
 href="mailto:fuzzyman@voidspace.org.uk">fuzzyman@voidspace.org.uk</a>&gt;</span>
wrote:<br>
  <div class="gmail_quote">
  <blockquote class="gmail_quote"
 style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
    <div>
    <div class="im">On 04/03/2010 22:03, Ryan Freckleton wrote:
    <blockquote type="cite">On Wed, Mar 3, 2010 at 12:15 PM, Michael
Foord <span dir="ltr">&lt;<a moz-do-not-send="true"
 href="mailto:fuzzyman@voidspace.org.uk" target="_blank">fuzzyman@voidspace.org.uk</a>&gt;</span>
wrote:<br>
&lt;snip&gt;<br>
      <div class="gmail_quote">
      <div>&nbsp;</div>
      <blockquote class="gmail_quote"
 style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Once
Holger
and Benjamin have worked on their ast transformation code it
should be possible to add this to simpletest for better failure
messages with plain asserts.<br>
      </blockquote>
      <div>&lt;snip&gt;<br>
      <br>
Does that mean we're going to get pretty asserts through ast
transforms? As in:<br>
      </div>
      </div>
    </blockquote>
    <br>
    </div>
Well, not in unittest itself but in some extension of unittest...<br>
    <br>
    </div>
  </blockquote>
  <blockquote class="gmail_quote"
 style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
    <div bgcolor="#ffffff" text="#000000">There is an implementation
that could be adapted fairly easily:<br>
    <br>
&nbsp;&nbsp;&nbsp;
    <a moz-do-not-send="true"
 href="http://bitbucket.org/hpk42/py-trunk/src/tip/py/_code/_assertionnew.py"
 target="_blank">http://bitbucket.org/hpk42/py-trunk/src/tip/py/_code/_assertionnew.py</a><br>
    <br>
This uses the ast module which is new in Python 2.6, but it could be
backported to use _ast for Python 2.5. There is also an old version
called "<span>_assertionold.py" that uses the compiler
module present in Python 2.4.<br>
    </span></div>
  </blockquote>
  <div><br>
Cool, I'll look at that in detail.<br>
&nbsp;</div>
  <blockquote class="gmail_quote"
 style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
    <div bgcolor="#ffffff" text="#000000"><span><br>
There is also code in nose that does something similar (stack
introspection rather than ast transformation I *believe*) in nose. If
unittest had a good extension API this could just be implemented as a
unittest extension...<br>
    <br>
    </span></div>
  </blockquote>
  <div><br>
Thanks for the pointers, once I get some more free cycles I'll try to
implement a "pretty asserts" module. Hopefully it can end up being one
of the first unittest2 extensions :)<br>
&nbsp;
  <br>
  </div>
  </div>
</blockquote>
<br>
It will need the extensibility mechanism in place to be generally
usable with unittest2. <br>
<br>
For simpletest you could wrap it around the functions easily enough -
catching AssertionError and then doing the ast transform and rerun,
raising a 'better' exception on failure. When I say easily enough that
is for some unspecified value of 'easily' of course (the wrapping is
easy it is untangling the ast transform code from py.test that will
take a little bit of work)...<br>
<br>
Anyway - I'll be interested in what you come up with.<br>
<br>
Michael<br>
<br>
<blockquote
 cite="mid:318072441003041619s166c3dcaqb676afc4f4425438@mail.gmail.com"
 type="cite">
  <div class="gmail_quote">
  <blockquote class="gmail_quote"
 style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
    <div bgcolor="#ffffff" text="#000000"><span>All the best,<br>
    <font color="#888888"><br>
Michael </font></span><br>
    </div>
  </blockquote>
  <div><br>
=====<br>
--Ryan E. Freckleton <br>
  </div>
  </div>
</blockquote>
<br>
<br>
<pre class="moz-signature" cols="72">-- 
<a class="moz-txt-link-freetext" href="http://www.ironpythoninaction.com/">http://www.ironpythoninaction.com/</a>
<a class="moz-txt-link-freetext" href="http://www.voidspace.org.uk/blog">http://www.voidspace.org.uk/blog</a>

READ CAREFULLY. By accepting and reading this email you agree, on behalf of your employer, to release me from all obligations and waivers arising from any and all NON-NEGOTIATED agreements, licenses, terms-of-service, shrinkwrap, clickwrap, browsewrap, confidentiality, non-disclosure, non-compete and acceptable use policies (&#8221;BOGUS AGREEMENTS&#8221;) that I have entered into with your employer, its partners, licensors, agents and assigns, in perpetuity, without prejudice to my ongoing rights and privileges. You further represent that you have the authority to release me from any BOGUS AGREEMENTS on behalf of your employer.

</pre>
</body>
</html>