summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Reddick <michael.reddick@gmail.com>2013-06-20 15:20:41 -0500
committerMichael Reddick <michael.reddick@gmail.com>2013-06-20 15:20:41 -0500
commitaac3b20f3546338a8bcda64d5e4a758673734b87 (patch)
tree266bfe33b4748f0a174e820262e9dfd473d4f2ad
parent24eb6a6a9c8c72cb4c4dc9e95aff83a2fb2e356f (diff)
downloadclass-refresh-aac3b20f3546338a8bcda64d5e4a758673734b87.tar.gz
class-refresh-aac3b20f3546338a8bcda64d5e4a758673734b87.zip
Test case for compile error
-rw-r--r--t/compile-error.t43
-rw-r--r--t/data/compile-error/after/Foo.pm10
-rw-r--r--t/data/compile-error/before/Foo.pm10
-rw-r--r--t/data/compile-error/middle/Foo.pm10
-rw-r--r--t/lib/Test/Class/Refresh.pm10
5 files changed, 79 insertions, 4 deletions
diff --git a/t/compile-error.t b/t/compile-error.t
new file mode 100644
index 0000000..afc06a6
--- /dev/null
+++ b/t/compile-error.t
@@ -0,0 +1,43 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use Test::More;
+use Test::Exception;
+use Test::Requires 'Moose';
+use lib 't/lib';
+use Test::Class::Refresh;
+use Try::Tiny;
+
+use Class::Refresh;
+
+my $dir = prepare_temp_dir_for('compile-error');
+push @INC, $dir->dirname;
+
+require Foo;
+
+Class::Refresh->refresh;
+
+my $foo = Foo->new;
+lives_ok { $foo->meth } '$foo->meth works';
+
+
+sleep 2;
+update_temp_dir_for('compile-error', $dir, 'middle');
+
+try {
+Class::Refresh->refresh;
+};
+
+dies_ok { $foo->meth } '$foo->meth doesnt work now';
+
+sleep 2;
+update_temp_dir_for('compile-error', $dir, 'after');
+
+try {
+Class::Refresh->refresh;
+};
+
+lives_ok { $foo->meth } '$foo->meth works again';
+
+
+done_testing;
diff --git a/t/data/compile-error/after/Foo.pm b/t/data/compile-error/after/Foo.pm
new file mode 100644
index 0000000..18b5fa8
--- /dev/null
+++ b/t/data/compile-error/after/Foo.pm
@@ -0,0 +1,10 @@
+package Foo;
+use Moose;
+
+has bar => (is => 'ro');
+
+sub meth { my $error; }
+
+no Moose;
+
+1;
diff --git a/t/data/compile-error/before/Foo.pm b/t/data/compile-error/before/Foo.pm
new file mode 100644
index 0000000..a63046a
--- /dev/null
+++ b/t/data/compile-error/before/Foo.pm
@@ -0,0 +1,10 @@
+package Foo;
+use Moose;
+
+has foo => (is => 'ro');
+
+sub meth { }
+
+no Moose;
+
+1;
diff --git a/t/data/compile-error/middle/Foo.pm b/t/data/compile-error/middle/Foo.pm
new file mode 100644
index 0000000..3e3946c
--- /dev/null
+++ b/t/data/compile-error/middle/Foo.pm
@@ -0,0 +1,10 @@
+package Foo;
+use Moose;
+
+has bar => (is => 'ro');
+
+sub meth { $error }
+
+no Moose;
+
+1;
diff --git a/t/lib/Test/Class/Refresh.pm b/t/lib/Test/Class/Refresh.pm
index 7720d62..5e3bf40 100644
--- a/t/lib/Test/Class/Refresh.pm
+++ b/t/lib/Test/Class/Refresh.pm
@@ -37,9 +37,10 @@ sub rcopy {
}
sub prepare_temp_dir_for {
- my ($test_id) = @_;
+ my ($test_id, $subdir) = @_;
+ $subdir ||= 'before';
- my $from_dir = 't/data/' . $test_id . '/before';
+ my $from_dir = 't/data/' . $test_id . "/$subdir";
my $to_dir = File::Temp->newdir;
rcopy($from_dir, $to_dir);
@@ -48,9 +49,10 @@ sub prepare_temp_dir_for {
}
sub update_temp_dir_for {
- my ($test_id, $to_dir) = @_;
+ my ($test_id, $to_dir, $subdir) = @_;
+ $subdir ||= 'after';
- my $from_dir = 't/data/' . $test_id . '/after';
+ my $from_dir = 't/data/' . $test_id . "/$subdir";
rcopy($from_dir, $to_dir);
}