From aac3b20f3546338a8bcda64d5e4a758673734b87 Mon Sep 17 00:00:00 2001 From: Michael Reddick Date: Thu, 20 Jun 2013 15:20:41 -0500 Subject: Test case for compile error --- t/compile-error.t | 43 ++++++++++++++++++++++++++++++++++++++ t/data/compile-error/after/Foo.pm | 10 +++++++++ t/data/compile-error/before/Foo.pm | 10 +++++++++ t/data/compile-error/middle/Foo.pm | 10 +++++++++ t/lib/Test/Class/Refresh.pm | 10 +++++---- 5 files changed, 79 insertions(+), 4 deletions(-) create mode 100644 t/compile-error.t create mode 100644 t/data/compile-error/after/Foo.pm create mode 100644 t/data/compile-error/before/Foo.pm create mode 100644 t/data/compile-error/middle/Foo.pm 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); } -- cgit v1.2.3-54-g00ecf