As in the implementation code, there's a lot of duplication here.  It feels like a lot of noise w/o much value.  Here's what I think I'd rather see:

* Have a test fixture which is an old-style legacy formatter class, defined in line in the spec file here (or in a support file required from this file if you prefer).  It could even be one of the formatters from rspec 2.14, but ideally it'll be one that relies upon all of the notifications.
* Use something like my suggestion above for testing a formatter by defining examples and running them.
* Set expectations about the resulting output.

This'll give us confidence as we refactor that it continues to work.  The specs you have here won't give us that kind of confidence as they'll have to change as you refactor.  They are too coupled to the implementation, IMO.