Test::More: Clearing up some confusion

I want to clear up some confusion about the Test::Stream/Test::Builder work.

I will try to be as clear and concise as possible:

  • Test::More is not changing in any significant way.
  • Nothing is being removed from Test::More.
  • Nothing is being added to Test::More.
  • There are no changes to Test::More::is()
  • Test::More::cmp_ok() is not being removed
  • Test::More is not breaking.

There has been a lot of FUD about this lately, I don't think any of it was malicious, but rather due to a misunderstanding. Test::Stream is a new namespace, and includes a new toolset modeled after Test::More. This new toolset has a new implementation of is(), and for a while did not have a cmp_ok(). These differences are opt-in, you have to use Test::Stream instead of Test::More to be effected. There are no plans to ever port these differences to Test::More, that would break things, and I am not willing to do that.

So what is changing?

My goal is to change Test::Builder so that it defers to the Test::Stream internals. The idea is to do this in ways that break as little as possible. The current Test::Builder dev release on cpan does not break anything that properly uses the public api. It also does not break most things that deviate from proper use of the public API. Last I checked there are only 8 distributions on all of cpan that are broken by these changes, and none of them have significant usage. Most, if not all of these breakages have perl-qa's agreement that they broke for being too crazy to support.

So to be clear: Backwards compatibility is one of the highest priorities. If you use Test::More, or other tools built on Test::Builder, they should continue to work.

If you are interested in seeing what is broken I have a list that I frequently use in downstream testing. This list currently has 9 items, but one of them was recently fixed, I have not removed the fixed item yet because I want to look at it and see how it was fixed. The list can be found here: https://github.com/Test-More/test-more/blob/stream/master/xt/downstream_dists.list.known_broken

1 Comment

Test::More is not changing in any significant way.

I am aware that you say this in response to people freaking out about you supposedly changing the stuff in Test::More. And if you do have no changes planned in Test::More (and you keep to that plan), these statements would be trivially true.

But you proceeded to put this together with another issue, and in that combination, I’d call the supposed clarification disingenuous if I didn’t know you lacked the intent for that. Namely:

My goal is to change Test::Builder so that it defers to the Test::Stream internals.

Together this clarification amounts to saying “The building is not changing at all. I’m not touching any of the walls or even the furniture. I’m just going to put it on a new foundation.”

I understand that you believe you can do that without a hitch. But it is rather factually not “no change”.

Leave a comment

About Chad 'Exodist' Granum

user-pic I write solutions to make things easier.