I spent the last weekend (may 09/10) on the PHP Testfest Berlin, organized by Till for the Berlin PHP Usergroup. Coming from Leipzig, I don't really know who of the other 8 people were from the user group and who not.
We started at saturday 12:00 at Boxhagener 119, the location of the previous DevHouse hackaton. At first people had to setup their machines with gcov, PHP from cvs (which didn't compile the day, so we had to use PHP 5.3.0RC2 at first). Two OSX machines had problems getting PHP with gettext compiled - the first extension we wanted to concentrate on. This was an issue we didn't solve until sunday, so Tim used his Ubuntu laptop, while Florian connected to his Linux home server via ssh and hacked that way.
After everyone had their machine setup properly, I gave a small introduction to writing phpt tests. We had chosen four extensions to write unit tests for, and began with gettext, since it is a small extension one could grasp quickly. Within a few hours, we reached 98.8% coverage with only one line that, despite all tricks, we could not reach (some obscure error handling in case getcwd() fails).
Next we targeted the sockets extension. I personally started with xsl since I am more interested in it. While writing tests, we found two memory leaks (one in xsl and one in sockets) that are fixed in CVS now.
Florian was interested in idn, so he began to write tests for the intl extension. He discovered some serious issues: Before PHP 5.3, idn was a pecl extension that is not maintained anymore. Pierre, as we know him, made the intl extension that is in core since 5.3 and uses the same method names. The thing that does not match is return values and method signatures - which means that your code that already used the idn extension will stop working with 5.3 - which you probably will not note at first, since most methods still take the parameters but react a bit different. The issues was brought up on php-qa, and will be resolved in the next two weeks before RC3.
While we originally planned to leave at 21 or 22 o'clock, we hacked until the next day :-) In a bar we had a currywurst that was too large for everyone except Till, before falling into bed.
On sunday we started at 12 again and got the sockets ext shaped up quite a bit. I struggled with xsl and didn't really make progress until an hour before I had to leave to catch my train back to Leipzig. Then, and on the way back home things speeded up, and at 22:00 I could push 10 more tests into our git repository - all about XSLTProcessor::registerPHPFunctions() in all parameter variations.