so

XML Calabash 2.99.11

Volume 5, Issue 29; 12 Dec 2021

XML Calabash passes a hair over 96% of the test suite and, for the first time ever, has fewer than 100 failing tests.

A while back I reported some progress and even went on to make a few test releases. I told myself I’d make some sort of official announcement of progress when my score card against the test suite had fewer than 100 failing tests. Which it finally does.

I thought I was close when I made that decision back in October. Then I decided to do not one, but two large refactors. In the early days of XML Calabash 3.0, I made design choices, largely motivated by my experience implementing 1.0, that simply didn’t hold up well. I had a couple of hacks in place when I started to ponder the hacks that would be necessary to properly support static options and explicit step visibility and I just decided it wasn’t worth it.

It’s better now, though I expect there are a few more, smaller refactors waiting in the wings.

The obvious question for someone interested in running pipelines is, what does “100 failing tests” mean in terms of usability? That, unfortunately, is not a question with an obvious answer.

On the one hand, many of those failing tests are the sorts of horrible edge cases that you only get in test suites. You’re probably not going to import a library that imports a library that imports itself that declares two steps with the same type to see if the processor raises the correct error code. For example.

On the other hand, the processor is clearly not finished. (To be fair, a 100% passing score is probably insufficient evidence by itself to declare the processor “finished,” but let’s leave that aside for the moment.)

If you have an interest in playing with pipelines, and you’re prepared for a bit of roughness around the edges, I encourage you to give it a go. And tell me how you get on!

  • You’ll want the latest release from the main repository.
  • You can get the paged media steps seperately.
  • If you’re really keen, there are templates in Java and Scala for writing your own extension steps.
  • There’s also a separate “metadata extractor” step which started out as an example before I wrote the explicit template steps.
  • And there’s the very beginning of a plugin for running XML Calabash 3 in Gradle.

After a couple of months of intense effort, I’d like to work on something else for a bit, so I’m probably not going to whittle away on those 96 remaining issues for at least a few days. I do have an aspirational goal to get to zero before the end of the year, but it’s only aspirational. I will try to be responsive to bug reports from actual pipelines that real people are trying to use.

High on my todo list are sorting out the programming API for running pipelines, that’s a bit of a mess right now, and making sure that the error messages are useful and informative. I put some effort into doing better on that score, given that XML Calabash 1.x is sort of a poster child for hostile error reporting. It’s even possible to define your own error messages, if you’d prefer to have them, for example, in a different language.

Plenty left to do, but I think my mental health will benefit from doing something else for a little while. I want to write that article on using containers that I promised on the XML.com Slack a while ago, and I have another (much smaller, I hope!) project that I think the sorts of folks who read my scribblings here are likely to find interesting!

Merry Holidays and congratulations on another swing around that big yellow ball in the sky, in case I don’t scratch out another post before the end of the year!