[This is a post in my latest long-ass series. You may want to begin at the beginning. I do not promise that the next post in the series will be next week. Just that I will eventually finish it, someday. Unless I get hit by a bus.
IMPORTANT NOTE! When I provide you links to code on GitHub, I’m giving you links to particular commits. This allows me to show you the code as it was at the time the blog post was written and insures that the code references will make sense in the context of this post. Just be aware that the latest version of the code may be very different.]
Last time I talked briefly about the raft of failures that CPAN Testers threw up for me to look at. I mentioned that there were roughly 3 groups of failures, and that one of them was bigger than the other two. I even gave a hint as to what it was in one of my examples:
cpan-testers --cache --failure "can still use parsedate normally" Date::Easy
That particular string I was trying to isolate is the test name (that is, the third argument to
is1) for my unit test that verifies that I’ve undone my monkey-patching of Time::ParseDate.2 Now, I noted when discussing the decision to monkey-patch3 that I could imagine some problems with re-entrant code. Which might also apply to threading, so my first thought was to see if this failure only happened on threaded Perls, but that wasn’t it. Then I discovered a configuration argument4 called “pthread” and for a while I thought that was the correlation. But it wasn’t. During this time I was engaging in a bit of a back-and-forth on the CPAN Testers mailing list, trying to nail down how I could replicate building a Perl whose
config_argswould match that of a given smoker. If you followed the link I gave you to that discussion, you already know what they told me: it’s the timezones, stupid. (Well, they were much nicer than that. But I certainly felt stupid.)