X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F030_roles%2F019_build.t;h=684443a6626f4bb93cf4f4e5f30f198305f22e5b;hb=23320fd81332702644455e5b4210de2a83bee1ba;hp=8d3a4a4bd3b57b401e62d89d5b84a9a166c7eccf;hpb=49a56bbafc81e4d50e4a95a65f987a448dfe5ecc;p=gitmo%2FMouse.git diff --git a/t/030_roles/019_build.t b/t/030_roles/019_build.t index 8d3a4a4..684443a 100644 --- a/t/030_roles/019_build.t +++ b/t/030_roles/019_build.t @@ -3,17 +3,11 @@ use strict; use warnings; use Test::More; BEGIN { - plan skip_all => - "This test requires Class::Method::Modifiers or Class::Method::Modifiers::Fast" - unless eval { - require Class::Method::Modifiers::Fast; - } or eval { - require Class::Method::Modifiers; - }; -} - -plan tests => 6; + eval "use Test::Output;"; + plan skip_all => "Test::Output is required for this test" if $@; + plan tests => 8; +} # this test script ensures that my idiom of: # role: sub BUILD, after BUILD @@ -34,53 +28,54 @@ do { do { package ClassWithBUILD; use Mouse; - with 'TestRole'; + + ::stderr_is { + with 'TestRole'; + } ''; sub BUILD { push @CALLS, 'ClassWithBUILD::BUILD' } }; do { - package ClassWithoutBUILD; + package ExplicitClassWithBUILD; use Mouse; - with 'TestRole'; -}; - -is_deeply([splice @CALLS], [], "no calls to BUILD yet"); -ClassWithBUILD->new; + ::stderr_is { + with 'TestRole' => { -excludes => 'BUILD' }; + } ''; -is_deeply([splice @CALLS], [ - 'TestRole::BUILD:before', - 'ClassWithBUILD::BUILD', - 'TestRole::BUILD:after', -]); - -ClassWithoutBUILD->new; + sub BUILD { push @CALLS, 'ExplicitClassWithBUILD::BUILD' } +}; -is_deeply([splice @CALLS], [ - 'TestRole::BUILD:before', - 'TestRole::BUILD', - 'TestRole::BUILD:after', -]); +do { + package ClassWithoutBUILD; + use Mouse; + with 'TestRole'; +}; -ClassWithBUILD->meta->make_immutable; -ClassWithoutBUILD->meta->make_immutable; +{ + is_deeply([splice @CALLS], [], "no calls to BUILD yet"); -is_deeply([splice @CALLS], [], "no calls to BUILD yet"); + ClassWithBUILD->new; -ClassWithBUILD->new; + is_deeply([splice @CALLS], [ + 'TestRole::BUILD:before', + 'ClassWithBUILD::BUILD', + 'TestRole::BUILD:after', + ]); -is_deeply([splice @CALLS], [ - 'TestRole::BUILD:before', - 'ClassWithBUILD::BUILD', - 'TestRole::BUILD:after', -]); + ClassWithoutBUILD->new; -ClassWithoutBUILD->new; + is_deeply([splice @CALLS], [ + 'TestRole::BUILD:before', + 'TestRole::BUILD', + 'TestRole::BUILD:after', + ]); -is_deeply([splice @CALLS], [ - 'TestRole::BUILD:before', - 'TestRole::BUILD', - 'TestRole::BUILD:after', -]); + if (ClassWithBUILD->meta->is_mutable) { + ClassWithBUILD->meta->make_immutable; + ClassWithoutBUILD->meta->make_immutable; + redo; + } +}