http://www.perlmonks.org?node_id=1000209


in reply to Re^2: How to do automated tests of a database centric CPAN module
in thread How to do automated tests of a database centric CPAN module

I believe Test::Database serves a similar purpose (create/drop temp databases).

  • Comment on Re^3: How to do automated tests of a database centric CPAN module

Replies are listed 'Best First'.
Re^4: How to do automated tests of a database centric CPAN module
by jds17 (Pilgrim) on Oct 21, 2012 at 14:10 UTC
    If I understood the documentation correctly, only DBMSs available in the current environment can be instantiated by using Test::Database, so it would not help in the current situation, but please correct me if I am wrong.

      That's true but in that it's not different from Test::postgresql, as far as I can see.

      From Test::postgresql docs:

      new [...] If required programs (initdb and postmaster) were not found, the function returns undef and sets appropriate message to $Test::postgresql::errstr.

      I think it's really only DBD::SQLite that will give you a complete package, from scratch.

      ( Probably one could create a package with all the bits to run a PostgreSQL instance from the binaries from the EnterpriseDB site [1], but that looks like quite an undertaking...:

      (cannot run as root) http://www.enterprisedb.com/products-services-training/pgbindownload "Binaries from installer version 9.2.1" -- to use, unzip the pgsql directory somewhere, and cd into it: cd pgsql -- run initdb: ./bin/initdb -D 9.2/data -- start postgres: ./bin/pg_ctl/ -D 9.2/data -l logfile start -- run tests... -- to stop, close all connections, then: ./bin/pg_ctl -D 9.2/data -l logfile stop -- cleanup all files Hm, I don't know - possible but error-prone, probably...
      )

      [1] http://www.enterprisedb.com/products-services-training/pgbindownload

        erix, thank you for pointing this out, I did not yet look at Test::postgresql (being busy handling SQLite support, until today I did not know just how different SQLite is from other DBMSs, in particular when trying to get meta data...). So I cannot use Test::postgresql for the stated purposes either.

        I don't think it would be feasible to run such a PostgreSQL install during my module install, I will stick to SQLite for the time being, thank you for elaborating on this.

        erix, please allow me a well-intentioned reminder: please mark updates to your messages as such, otherwise the thread may get confusing. Better still, post them as a new message (there are always exceptions, e.g. when a definite answer is found, I like to add an update to the root node containing the original question so the answer can be found with ease).