Saturday, March 31, 2007

csUnit 2.1.2 Released

Finally we have a new version of csUnit. It is version 2.1.2 and it's available at SourceForge. A lot of effort went into this release, and it is probably not an exaggeration to state that this is the best csUnit version ever. Here is what we did:
  • Performance: Reduced overhead by approximately 50%
  • Usability: Simplified setup, and also the user interface
  • Features: Support for multiple categories, and we also added a Timeout parameter to the TestAttribute

It was very exciting to introduce new concepts to the design of the application, e.g. selectors. The code has improved in various ways, and it is amazing to see how more functionality can be provided with a seemingly similar sized codebase.

In particular I would like to thank Jake Anderson, Piers Lawson, and Markus Rentschler for their contributions and support. Also I'd like to thank our sponsors from Agile Utilities and JetBrains. And last but not least I'd like to thank all the users of csUnit who provided us with extremely valuable feedback, and also helped out with experiments to solve bugs. Thank you to all of you! It is a pleaseure to work with you!

Our next release is planned for June 2007. We have quite a few very good suggestions for additional exciting features, and we are looking forward to make them happen!

Wednesday, March 28, 2007

Codebase vs. Path Name - Different Casing on MS Platforms

While working on some code that loads assemblies I ran into an issue with Assembly.LoadFrom(pathName) in connection with the Assembly.CodeBase property. The method is supposed to load an assembly from the location given in the pathName parameter. When I pass as an example 'foo.dll' as a parameter, it loads the assembly and everything is fine. The interesting part starts, however, when I inspect the CodeBase property after the assembly has successfully loaded: Its value ends in "foo.DLL" (note the upper case file extension). This is certainly not a problem on a Microsoft platform, where file and folder names are case insensitive. If, however, you also intend to run your code on platforms where file names are case sensitive (e.g. Mono on Linux), then this behavior might be of interest to you as on those platforms "foo.DLL" and "foo.dll" are just two different files.