From: Robert Buels Date: Fri, 1 Jan 2010 02:32:12 +0000 (+0000) Subject: added tests for overwrite_modifications option X-Git-Tag: 0.04999_13~11 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=9cb983b3dfba5daff30b970a0c5f83dfd01c2b6c;p=dbsrgits%2FDBIx-Class-Schema-Loader.git added tests for overwrite_modifications option --- diff --git a/Makefile.PL b/Makefile.PL index 1bb4cbf..9537779 100644 --- a/Makefile.PL +++ b/Makefile.PL @@ -3,12 +3,14 @@ use inc::Module::Install 0.91; name 'DBIx-Class-Schema-Loader'; all_from 'lib/DBIx/Class/Schema/Loader.pm'; +test_requires 'Test::Exception'; test_requires 'Test::More' => '0.94'; test_requires 'DBI' => '1.56'; test_requires 'DBD::SQLite' => '1.12'; +test_requires 'File::Copy'; +test_requires 'File::Temp' => '0.16'; test_requires 'File::Path' => '2.07'; test_requires 'IPC::Open3' => 0; -test_requires 'Test::Exception'; requires 'File::Spec' => 0; requires 'Scalar::Util' => 0; diff --git a/t/40overwrite_modifications.t b/t/40overwrite_modifications.t new file mode 100644 index 0000000..5863974 --- /dev/null +++ b/t/40overwrite_modifications.t @@ -0,0 +1,55 @@ +use strict; +use Test::More tests => 3; +use Test::Exception; +use lib qw(t/lib); +use make_dbictest_db; + +use File::Copy; +use File::Spec; +use File::Temp qw/ tempdir tempfile /; + +use DBIx::Class::Schema::Loader; + +my $tempdir = tempdir( CLEANUP => 1 ); +my $foopm = File::Spec->catfile( $tempdir, qw| DBICTest Schema Overwrite_modifications Foo.pm |); +dump_schema(); + +# check that we dumped +ok( -f $foopm, 'looks like it dumped' ); + +# now modify one of the files +{ + open my $in, '<', $foopm or die "$! reading $foopm"; + my ($tfh,$temp) = tempfile( UNLINK => 1); + while(<$in>) { + s/"bars"/"somethingelse"/; + print $tfh $_; + } + close $tfh; + copy( $temp, $foopm ); +} + +# and dump again without overwrites +throws_ok { + dump_schema(); +} qr/mismatch/, 'throws error dumping without overwrite_modifications'; + +# and then dump with overwrite +lives_ok { + dump_schema( overwrite_modifications => 1 ); +} 'does not throw when dumping with overwrite_modifications'; + +sub dump_schema { + + # need to poke _loader_invoked in order to be able to rerun the + # loader multiple times. + DBICTest::Schema::Overwrite_modifications->_loader_invoked(0) + if @DBICTest::Schema::Overwrite_modifications::ISA; + + DBIx::Class::Schema::Loader::make_schema_at( 'DBICTest::Schema::Overwrite_modifications', + { dump_directory => $tempdir, + @_, + }, + [ $make_dbictest_db::dsn ], + ); +}