Core tests should be run without any extensions.
Ideally, core tests should include as many extension tests as possible to prevent core from silently breaking extensions.
That's why we write tests for extensions. You could very easily write two extensions that produce conflicting output--core should not break because of this.
I think we have three different things going on here.
* Unit tests for extensions to prevent core changes from breaking extensions * Unit tests for core (with extensions enabled) to prevent core changes from breaking extensions. * Unit tests for core (with extensions enabled) to prevent conflicting extensions from breaking the core.