Saving Test Runs

Ovid on 2008-12-05T09:46:59

I don't have the new version up on Github yet, but App::Prove::History is coming along nicely. I've committed a few changes to Test::Harness to make this work (primarily to pass a TAP::Parser instance along), so even if I post to Github, you wouldn't be able to test it without checking the latest Test::Harness out of Subversion.

I hope to have it on Github this weekend, but it won't go to the CPAN until there is an official Test::Harness release supporting the features I need (something I've not been pressing for because stability of Test::Harness is far more important than my work, but maybe a developer release is in order).

One problem I've already been hit with repeatedly is the evolving underlying schema. I have several changes in mind, but I won't allow this to hold up an alpha release. I think what I need to do is use DBIx::Migration to handle the changes, make it easier to specify an alternate database (PostgresQL or MySQL instead of SQLIte, for example), and maybe write some "cookbook" examples of how to upgrade a database without losing data. Still, making this code properly database independent might mean switching to an ORM and I'm reluctant to add that overhead to test runs.

I also need to write some cookbook examples of SQL to read the database from as I haven't provided a clear API for it. I've now documented the schema, but I may need to provide views and deprecation schedules to handle the schema evolution. It's one thing to provide code for the massses. It's another thing to provide data.


Thanks!

markjugg on 2008-12-07T23:06:12

I'm quite excited about this. I got turned on to this idea through Smolder, but Smolder has been a heavier weight solution that I was prepared to deploy, but this seems simple enough that it might actually get used.

My ~/bin/perlall-maketest

rurban on 2008-12-21T10:02:02

I use the following perlall-maketest and symlinked perlall-makeinstall simple script, and store its results in t/$version/ as simple test files for most of my modules.
This is much better than relying on the cpantesters results.
I do this in most of my vmware machines.
d is for debug, -nt for non-threaded builds.


$ cat ~/bin/perlall-maketest
#!/bin/sh
arch="cygwin"
bad="5.00558 5.8.7 "
export perlall="5.6.0 5.6.1 5.6.2 5.8.0 5.8.1 5.8.2 5.8.3 5.8.4 5.8.5 5.8.6 5.8.8 5.8.9 5.8.9d 5.9.5 5.10.0 5.10.0d 5.10.0-nt 5.10.0d-nt 5.11.0 5.11.0d 5.11.0-nt 5.11.0d-nt"
base=$(basename $0)

test -e Makefile.PL || exit 1
for p in $perlall
do
    log="log.test-$arch-$p"
    rm $log 2>/dev/null
    echo perl$p Makefile.PL
    perl$p Makefile.PL 2>&1 >$log && \
    ( make 2>&1 >>$log && \
        rm $log 2>/dev/null
        (make test 2>&1 | tee $log) && \
        if [ "$base" = "perlall-makeinstall" ]
        then
                make install
        fi
        ( echo >> $log
            echo "----" >> $log
            echo >> $log
            perl$p -V >> log.test-$arch-$p) )
    make clean
done