On Sat, Mar 6, 2010 at 11:42 PM, Chad Granum <span dir="ltr">&lt;<a href="mailto:exodist7@gmail.com">exodist7@gmail.com</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></div><div class="h5">Ingy,<br>
<br>
I like parts of what your suggesting. My goal is to make Fennec very<br>
flexible. I am thinking it may be possible to write a plugin for<br>
TestML and Fennec to work together. After I have Fennec to a point<br>
where I consider it usable would you be interested in working with me<br>
to work in support for TestML test files?</div></div></blockquote><div><br>Absolutely. I&#39;ll keep my eyes on Fennec as well.<br>
<br>
Cheers, Ingy<br><br> </div><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="h5">I will continue on from here<br>
keeping in mind that I might want to support test files from TestML in<br>
the future.<br>
<br>
Thank you.<br>
<br>
-Chad<br>
<br>
On Sat, Mar 6, 2010 at 11:25 PM, Ingy dot Net &lt;<a href="mailto:ingy@ingy.net">ingy@ingy.net</a>&gt; wrote:<br>
&gt; Chad,<br>
&gt;<br>
&gt; I just wanted to add that I started TestML (see <a href="http://www.testml.org" target="_blank">http://www.testml.org</a>) about<br>
&gt; a year ago. It is a unit testing language for all programming languages. You<br>
&gt; write tests in TestML and then write your software in any language. It is<br>
&gt; inspired by FIT, but not tied to a weird tabular harness like FIT. (In fact<br>
&gt; it&#39;s not even tied to any harness in a given language. It just needs a<br>
&gt; Runner subclass to tie it to a given harness/testing framework. So far I<br>
&gt; have implementations in Perl and Python. It&#39;s still in its infancy.)<br>
&gt;<br>
&gt; My main reason for starting TestML is that I believe programmers need to<br>
&gt; start writing modules that can be used in many programming languages. If<br>
&gt; they can pass the same test suite, that is something of an insurance that<br>
&gt; they truly are the same. I think think is critical for modules that get<br>
&gt; ported from Perl5 to Perl6. Wouldn&#39;t you want both versions to pass the same<br>
&gt; tests?<br>
&gt;<br>
&gt; I believe that great programmers should share their ideas (in code) with all<br>
&gt; people, not just the people in their language. I call this belief Acmeism<br>
&gt; (because I think that good ideas need a name). I am also working on a new<br>
&gt; programming language called C&#39;Dent that lets modules be compiled to from<br>
&gt; your language to a dozen or more others.<br>
&gt;<br>
&gt; Acmeism is fueled by the weird feeling I get at conferences like OSCON and<br>
&gt; OSDC where great programmers of many languages come together to one place at<br>
&gt; one time, only to go off to their own corners and talk about their own<br>
&gt; things. None of these languages is so good that it&#39;s going to make the<br>
&gt; others obsolete. So why not work on things above the language level?<br>
&gt;<br>
&gt; I would encourage anyone as brave as you, for starting a new technology<br>
&gt; movement, to think bigger than Perl. Think as big as you can.<br>
&gt;<br>
&gt; Respectfully, Ingy döt Net<br>
&gt;<br>
&gt; On Thu, Mar 4, 2010 at 7:10 PM, Chad Granum &lt;<a href="mailto:exodist7@gmail.com">exodist7@gmail.com</a>&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; Recently there have been a couple movements to &#39;modernize&#39; parts of<br>
&gt;&gt; perl. Two immediate examples are Moose which is a more modern OO<br>
&gt;&gt; system (like perl6), the other is perl5i which Schwern is heading.<br>
&gt;&gt; perl5i is intended to fix all kinds of gripes. Thus far I have not<br>
&gt;&gt; seen any similar movement in the area of perl testing. After a<br>
&gt;&gt; discussion which compared and contrasted perl&#39;s testing tools with<br>
&gt;&gt; another set of test tools it occurred to me that there is probably<br>
&gt;&gt; room for significant improvement. I have decided to try to fill this<br>
&gt;&gt; void in modernization of perl testing.<br>
&gt;&gt;<br>
&gt;&gt; I have started the fennec project (<a href="http://github.com/exodist/Fennec" target="_blank">http://github.com/exodist/Fennec</a>)<br>
&gt;&gt; before the name scares you let it be known that the original name was<br>
&gt;&gt; to be Test::Suite, and I have just obtained that namespace (it was<br>
&gt;&gt; previously owned by someone else) so the name may change back.<br>
&gt;&gt;<br>
&gt;&gt; I am requesting that anyone and everyone put there 2 cents in on what<br>
&gt;&gt; is amazing, good, bad, ugly, or impossible with the current perl<br>
&gt;&gt; testing tools. How they can be improved, etc. I also encourage anyone<br>
&gt;&gt; interested to add issues, look for bugs, add feature requests, submit<br>
&gt;&gt; patches, fork the repo, etc.<br>
&gt;&gt;<br>
&gt;&gt; Here is a simple bulleted list of desired features, most of these have<br>
&gt;&gt; a current (bu maybe in need of improvement) implementation.<br>
&gt;&gt;<br>
&gt;&gt;  * Group tests into sets which can be run multiple times under<br>
&gt;&gt; different scenarios<br>
&gt;&gt;  * Every test file should create an object that is run<br>
&gt;&gt;  * Test sets should be run in random order by default, as should cases<br>
&gt;&gt; (scenarios) and even test files.<br>
&gt;&gt;  * Writing tester function libraries (think Test::More,<br>
&gt;&gt; Test::Exception, etc) should be very simplified<br>
&gt;&gt;  * Test results should be reported to the tester in object form,<br>
&gt;&gt; unlike Test::Builder which just outputs any results directly to TAP.<br>
&gt;&gt;  * Ability to create result handlers for cases where you want to get<br>
&gt;&gt; results directly instead of going straight to TAP.<br>
&gt;&gt;  * TAP output plugin used by default<br>
&gt;&gt;  * Database output plugin (record results to a simple database)<br>
&gt;&gt;  * Test::Builder output plugin (If you really want to go through<br>
&gt;&gt; Test::Builder, this is also the first output plugin for quickstart of<br>
&gt;&gt; the project)<br>
&gt;&gt;  * Ability to use multiple output plugins at once.<br>
&gt;&gt;  * Ability to wrap existing Test::Builder plugins (like Test::More)<br>
&gt;&gt; into Fennec tester libraries (this is already done for Test::More,<br>
&gt;&gt; Test::Warn)<br>
&gt;&gt;  * Ability to run just a specified case/set<br>
&gt;&gt;  * More helpful output in some current testers (is_deeply for example)<br>
&gt;&gt;  * Ability to define tests both in separate files, and inline with the<br>
&gt;&gt; objects being tested<br>
&gt;&gt;  * When not in testing mode these definitions should be ignored and<br>
&gt;&gt; minimal overhead should occur as a result of their being present.<br>
&gt;&gt;  * Inline tests are purely optional<br>
&gt;&gt;  * Perhaps tests be defined after __END__?<br>
&gt;&gt;<br>
&gt;&gt; Test result objects need to contain the following information:<br>
&gt;&gt;  * Name,<br>
&gt;&gt;  * Result (ok, not ok),<br>
&gt;&gt;  * Case run under,<br>
&gt;&gt;  * Set run under,<br>
&gt;&gt;  * Line tester was called from,<br>
&gt;&gt;  * File tester was called from,<br>
&gt;&gt;  * todo (false or reason),<br>
&gt;&gt;  * skip (false or reason),<br>
&gt;&gt;  * diagnostics messages,<br>
&gt;&gt;<br>
&gt;&gt; Defining tests and cases should be moose like:<br>
&gt;&gt;<br>
&gt;&gt; case name =&gt; sub {};<br>
&gt;&gt; case name =&gt; (<br>
&gt;&gt;   code =&gt; sub {},<br>
&gt;&gt;   partition =&gt; &#39;name&#39;,<br>
&gt;&gt;   ..options..,<br>
&gt;&gt; );<br>
&gt;&gt; set name =&gt; sub {};<br>
&gt;&gt;<br>
&gt;&gt; Tests should also be definable by creating subs prefixed with &#39;test&#39; or<br>
&gt;&gt; &#39;case&#39;<br>
&gt;&gt; sub test_something {}<br>
&gt;&gt; sub case_prepare_things {}<br>
&gt;&gt;<br>
&gt;&gt; There will also be an init method that will be called just once prior<br>
&gt;&gt; to running the cases.<br>
&gt;&gt;<br>
&gt;&gt; The base principal for Fennec is that test will be grouped into sets,<br>
&gt;&gt; each of these sets can be run against multiple cases. Essentially a<br>
&gt;&gt; case is a method on a test object you define that creates a scenario,<br>
&gt;&gt; once the scenario is ready all your test sets will be run under that<br>
&gt;&gt; scenario, once the sets are all completed the next scenario will be<br>
&gt;&gt; run and the sets will be run again. You can mark an entire case or set<br>
&gt;&gt; as todo or skip. You also can also specify that sets should only run<br>
&gt;&gt; under certain cases, or not under others. You can also group sets and<br>
&gt;&gt; cases into a &#39;partition&#39; so that only sets in that partition will be<br>
&gt;&gt; run under the cases in the same partition.<br>
&gt;&gt;<br>
&gt;&gt; Currently there are 2 types of plugins, output plugins which take<br>
&gt;&gt; results and do stuff with them, and tester plugins with provide<br>
&gt;&gt; functionality such as ok, like, is, diag, etc.<br>
&gt;&gt;<br>
&gt;&gt; I appreciate any feedback anyone wants to provide!<br>
&gt;&gt;<br>
&gt;&gt; -Chad Granum<br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; Pdx-pm-list mailing list<br>
&gt;&gt; <a href="mailto:Pdx-pm-list@pm.org">Pdx-pm-list@pm.org</a><br>
&gt;&gt; <a href="http://mail.pm.org/mailman/listinfo/pdx-pm-list" target="_blank">http://mail.pm.org/mailman/listinfo/pdx-pm-list</a><br>
&gt;<br>
&gt;<br>
_______________________________________________<br>
Pdx-pm-list mailing list<br>
<a href="mailto:Pdx-pm-list@pm.org">Pdx-pm-list@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/pdx-pm-list" target="_blank">http://mail.pm.org/mailman/listinfo/pdx-pm-list</a><br>
</div></div></blockquote></div><br>