The XCTestObserver implementation of beforeAllSpecs/afterAllSpecs wasn't
stable. At various times the hooks would run from within the Kiwi
project, or from an external test suite, but usually not from both, and
it was never clear what caused it to work or not. Setting values in
NSUserDefaults at load time doesn't seem to be a stable strategy.
This implementation swizzles +[XCTestSuite testSuiteWithName:] and looks
for a suite named "All tests". It then dynamically sets the class of the
"All tests" suite to be a custom subclass that overrides setUp and
tearDown to call KWSuiteConfigurationBase.
Also adds an integration test step in the Makefile that looks through
the xcodebuild.log output for the strings "beforeAllSpecs" and
"afterAllSpecs" as an indication that the config hooks were executed
(logged from Tests/Config.m).
Finally, the beforeEachSpec and afterEachSpec have been removed from the
public interface of KWSuiteConfigurationBase as they are still
unimplemented.
On the OS X 10.10 SDK, `-[NSObject description]` is now defined as a
property. Updated any of our own `description` properties to be declared
with the same attributes, and manually synthesize ivars where necessary.
Adds unit tests to ensure that the synthesized ivars are actually used.
This crash has manifested itself variously as a SIGABRT in an unexpected
location, and an EXC_BAD_ACCESS when leaving an @autoreleasepool { }
scope. It seems to have been introduced when converting KWMessagePattern
to ARC, causing message patterns with argument filters to be over-eager
in releasing their arguments.
The crash is resolved by replacing strong references to message pattern
argument filters with autoreleasing strong references.
(You can reproduce the crash consistently and clearly by reverting the
offending line in KWMessagePattern, then wrapping the new functional
test in an @autoreleasepool { } scope.)
It *appears* as if it's no longer necessary to call `[super dealloc]` in
`KWInterceptedDealloc()`. After removing this call, the tests seem to
run just fine with no crashes.