I'm working on some new mega-widgets in Perl/Tk as part of a decent-sized application, and I'm looking for some way to automate testing these widgets.

The tools available for testing, like the Test modules, would appear to not be of much use since the Tk MainLoop effectively blocks the execution of the test script.

Programatically triggering the UI elements is not especially difficult, but you need to see if there were any die()s in the callback and check the expected result before doing the ok().

Does anyone have any strategies for dealing with this kind of testing? It really needs to be automatic, because there are a lot of cases to cover when you consider the need to validate input, check edge conditions, etc.

Thanks in advance for any suggestions.
---
"I hate it when I think myself into a corner."
Matt Mitchell


In reply to Perl/Tk and Test? by antifun

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.