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