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;
--- /dev/null
+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 ],
+ );
+}