Thoughts / Misc: January 2008 Archives

Something I should have emphasized more in my release notes:

  • Added ability to set test execution order, defaults to :random. EVIL!

What does this mean?

It means that if you ignored my post titled "rake passes but autotest fails?", then autotest is gonna get its revenge when you update. No. Really. It is gonna f' your tests up real good. Why? Because it is Good Testing Practice™ for all your tests to be completely standalone. If I could run your individual tests randomly I'd do that as well(*).

I've had a number of filed bugs and hallway conversations where someone states "blah blah ... but when I run it under autotest, it fails" and somehow they've convinced themselves that it is autotest's fault. "HAH!", I say! Not bloody likely. If your tests aren't written in such a way that each and every individual test can be run in isolation or in any combination and order, then you didn't write tests, you wrote bugs. I really can't emphasize that enough so autotest plans to help you exorcize yourself of these bugs.

Really, you should just take the hit right now and deal with it. But what if your PHB is breathing down your neck? You can tell autotest to run your tests in "Ye Olde Fashioned Sorted Mode" with the following (be sure to copy and paste and fill it out:

Autotest.add_hook :initialize do |at|
  at.order = :alpha  #  I am a bad person. [your name], [today's date]
end

and then make yourself a promise that in 1 month's time autotest will be able to run your tests in any order. Now write it down, and sign it, in blood.

*) I did mention that I wrote miniunit, right? *smile*
**) They probably aren't. PHB's usually won't let you use autotest in the first place. Or write tests for that matter. So if you've gotten this far, you're probably in good shape.

Worst Regexp I've Ever Written

| | Comments (2)

This was part of a Parse::RecDescent grammar (or it might have been antlr by then) for a QA scripting tool that matched most perl 5 regexps. Note that nearly everything is double backslashed for the parser generator, not as part of the regexp.

  regex           : m/(
                       \\/(\\\\\\/|[^\\/])+?\\/
                  |   m\\((\\\\\\)|[^\\)])+?\\)
                  |   m\\[(\\\\\\]|[^\\]])+?\\]
                  | m\\\{(\\\\\\\}|[^\\\}])+?\\\}
                  |   m(.)(\\\\\\6|[^\\6])+?\\6)/x
                  | <error>

I'm mainly blogging this because I keep losing it. I think this is the correct unbackslashification:

m/  (\/(\\\/|[^\/])+?\/
 |  m\((\\\)|[^\)])+?\)
 |  m\[(\\\]|[^\]])+?\]
 |  m\{(\\\}|[^\}])+?\}
 | m(.)(\\\6|[^\6])+?\6)/x

Still gross as hell.

About this Archive

This page is a archive of entries in the Thoughts / Misc category from January 2008.

Thoughts / Misc: December 2007 is the previous archive.

Thoughts / Misc: February 2008 is the next archive.

Find recent content on the main index or look in the archives to find all content.

Pages

Powered by Movable Type 4.1