havarunner/havarunner — pull request #3 by charith-qubit (2014-03-18 15:16:22+00:00)
Title: Support covariant constructors for suite members

Havarunner test suites fail to work when:

* Suite member classes declare a constructor that accepts an interface or a base class and the `suiteObject` returned by the suite is a concrete implementation or a sub class.
* `suiteObject` is enhanced by AOP - resulting in a proxy object that has a different runtime class name from the constructor argument.

To illustrate, the following test suite fails to run:
```java
// Suite class
public class Suite implements HavaRunnerSuite {
@Override
public SuiteObject suiteObject() {
return new SuiteObjectImpl(); // Returns concrete object
}
}

// SuiteMember class
@PartOf(Suite.class)
class SuiteMember {
public SuiteMember(SuiteObject obj){ // Accepts an abstract type
}
}
```

This patch allows the suite to run if the suite member constructor argument is covariant.