ScalaTest 2.1.7 is a maintenance release for the 2.1.x series that includes the two changes listed below.
No source code using ScalaTest 2.0+ should break, but you may need to do a clean build to upgrade.
Although, 2.1.7 will likely binary compatible for the vast majority of projects using earlier 2.1.x versions, because of a compiler bug in the interaction of
no-specialization flag and
DelayedInit under Scala 2.10, it is safest to do a clean build to upgrade to 2.1.7.
AsyncAssertions, if a
Waiterreceives more than the expected number of dismissals, it will no longer report this as an error: i.e., receiving greater than the number of expected dismissals without any failed assertion will simply cause the the test to complete, not to fail. As of 2.1.7, the only way a
Waiterwill cause a test to fail is if one of the asynchronous assertions to which it is applied fails.
Compiled ScalaTest 2.1.7 without the
no-specialization flag. This flag was set in the ScalaTest build several years ago to work around a bug in the Scala
compiler. Although that compiler bug was fixed, the
no-specialization flag persisted under the radar in the ScalaTest build until now. In theory the removal
of this flag in the ScalaTest build shouldn't affect any users, but because of a bug in the interaction of Scala's
DelayedInit flag and
no-specialization flag in Scala 2.10, there's a chance some users may need to recompile their tests without the
flag under 2.10.
The only place
DelayedInit appears in ScalaTest is in its
NoArg trait. The documentation for this trait recommends using
it only as a last resort, when none of the other, simpler alternatives for sharing fixtures will suffice. So
NoArg should be only rarely used, but
if you have used it and lightening strikes, it will take the form of a
NoSuchMethodError when your tests run even though everything has compiled fine.
To solve this problem, do a clean build of your project without the
no-specialization flag. If you have any problems with this, please
post to ScalaTest users and we'll help you out.