diff options
author | Michael Reddick <michael.reddick@gmail.com> | 2013-06-20 15:20:41 -0500 |
---|---|---|
committer | Michael Reddick <michael.reddick@gmail.com> | 2013-06-20 15:20:41 -0500 |
commit | aac3b20f3546338a8bcda64d5e4a758673734b87 (patch) | |
tree | 266bfe33b4748f0a174e820262e9dfd473d4f2ad | |
parent | 24eb6a6a9c8c72cb4c4dc9e95aff83a2fb2e356f (diff) | |
download | class-refresh-aac3b20f3546338a8bcda64d5e4a758673734b87.tar.gz class-refresh-aac3b20f3546338a8bcda64d5e4a758673734b87.zip |
Test case for compile error
-rw-r--r-- | t/compile-error.t | 43 | ||||
-rw-r--r-- | t/data/compile-error/after/Foo.pm | 10 | ||||
-rw-r--r-- | t/data/compile-error/before/Foo.pm | 10 | ||||
-rw-r--r-- | t/data/compile-error/middle/Foo.pm | 10 | ||||
-rw-r--r-- | t/lib/Test/Class/Refresh.pm | 10 |
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); } |