Checking if your kit is complete... Looks good Writing Makefile for Class::Trait Microsoft (R) Program Maintenance Utility Version 7.10.3077 Copyright (C) Microsoft Corporation. All rights reserved. cp lib/Class/Trait/Base.pm blib\lib\Class\Trait\Base.pm cp lib/Class/Trait/Lib/TEquality.pm blib\lib\Class\Trait\Lib\TEquality.pm cp lib/Class/Trait/Lib/TPrintable.pm blib\lib\Class\Trait\Lib\TPrintable.pm cp lib/Class/Trait.pm blib\lib\Class\Trait.pm cp lib/Class/Trait/Reflection.pm blib\lib\Class\Trait\Reflection.pm cp lib/Class/Trait/Lib/TComparable.pm blib\lib\Class\Trait\Lib\TComparable.pm cp lib/Class/Trait/Config.pm blib\lib\Class\Trait\Config.pm Microsoft (R) Program Maintenance Utility Version 7.10.3077 Copyright (C) Microsoft Corporation. All rights reserved. C:\cpanrun\build\5-10-0\bin\perl.exe "-MExtUtils::Command::MM" "-e" "test_harness(1, 'blib\lib', 'blib\arch')" t/*.t t/010_class_trait...............1..22 ok 1 - BasicTrait->can('getName') ok 2 - ... and it should have the method from the trait ok 3 - .. BasicTrait is TSimple ok 4 - ... the $TRAITS are properly stored ok 5 - The object isa Class::Trait::Config ok 6 - Class::Trait::Config->can('name') ok 7 - ... get the traits name ok 8 - Class::Trait::Config->can('sub_traits') ok 9 - ... our sub_trait is an array ref ok 10 - ... both should be empty ok 11 - Class::Trait::Config->can('requirements') ok 12 - ... our requirements is an hash ref ok 13 - ... both should be empty ok 14 - Class::Trait::Config->can('overloads') ok 15 - ... our overloads is an hash ref ok 16 - ... both should be empty ok 17 - Class::Trait::Config->can('conflicts') ok 18 - ... our conflicts is an hash ref ok 19 - ... both should be empty ok 20 - Class::Trait::Config->can('methods') ok 21 - ... our methods is an hash ref ok 22 - ... both should NOT be empty ok t/020_test_imports..............1..25 ok 1 - BasicTraitImport->can('getName') ok 2 - ... and it should have the method from the trait ok 3 - .. BasicTraitImport is TImport ok 4 - ... the $TRAITS are properly stored ok 5 - The object isa Class::Trait::Config ok 6 - Class::Trait::Config->can('name') ok 7 - ... get the traits name ok 8 - Class::Trait::Config->can('sub_traits') ok 9 - ... our sub_trait is an array ref ok 10 - ... both should be empty ok 11 - Class::Trait::Config->can('requirements') ok 12 - ... our requirements is an hash ref ok 13 - ... both should be empty ok 14 - Class::Trait::Config->can('overloads') ok 15 - ... our overloads is an hash ref ok 16 - ... both should be empty ok 17 - Class::Trait::Config->can('conflicts') ok 18 - ... our conflicts is an hash ref ok 19 - ... both should be empty ok 20 - Class::Trait::Config->can('methods') ok 21 - ... our methods is an hash ref ok 22 - ... both should NOT be empty ok 23 - TImport->can('getName') ok 24 - TImport->can('this') ok 25 - TImport->can('that') ok t/030_trait_overload............1..49 ok 1 - TraitTest->can('new') ok 2 - The object isa TraitTest ok 3 - The object isa TraitTestBase ok 4 - The object isa TraitTest ok 5 - The object isa TraitTestBase ok 6 - ... trait 1 is TPrintable ok 7 - ... trait 1 is TCompositeTest ok 8 - ... trait 1 is TComparable (because of TCompositeTest ok 9 - ... trait 2 is TPrintable ok 10 - ... trait 2 is TCompositeTest ok 11 - ... trait 2 is TComparable (because of TCompositeTest ok 12 - TraitTest->can('compositeTestRequirement') ok 13 - TraitTest->can('compositeTestRequirement') ok 14 - TraitTest->can('compositeTest') ok 15 - TraitTest->can('compositeTest') ok 16 - TraitTest->can('toString') ok 17 - TraitTest->can('toString') ok 18 - TraitTest->can('stringValue') ok 19 - TraitTest->can('stringValue') ok 20 - TraitTest->can('compare') ok 21 - TraitTest->can('compare') ok 22 - TraitTest->can('equalTo') ok 23 - TraitTest->can('equalTo') ok 24 - TraitTest->can('notEqualTo') ok 25 - TraitTest->can('notEqualTo') ok 26 - TraitTest->can('strVal') ok 27 - TraitTest->can('strVal') ok 28 - ... trait 1 overload == ok 29 - ... trait 1 overload != ok 30 - ... trait 1 overload <=> ok 31 - ... trait 1 overload "" ok 32 - ... trait 2 overload == ok 33 - ... trait 2 overload != ok 34 - ... trait 2 overload <=> ok 35 - ... trait 2 overload "" ok 36 - ... and it should be stringified correctly ok 37 - ... and it should be stringified correctly ok 38 - ... and they should be equal ok 39 - ... and they shouldnt be not equal ok 40 - ... and they shouldnt be equal and therefore <=> return 0 ok 41 - ... and should return a reasonable strVal ok 42 - ... and should return a reasonable strVal ok 43 - The object isa Class::Trait::Config ok 44 - ... get the traits name ok 45 - ... this should not be empty ok 46 - ... this should be empty ok 47 - ... this should not be empty ok 48 - ... this should not be empty ok 49 - ... this should not be empty ok t/040_trait_composition.........1..41 ok 1 - Circle->can('new') ok 2 - The object isa Circle ok 3 - ... circle does TCircle ok 4 - ... circle does TColor ok 5 - ... circle does TEquality ok 6 - ... circle does TGeometry ok 7 - ... circle does TMagnitude ok 8 - Calling does() without an argument should return all traits ok 9 - We should be able to fetch a traits configuration from the cache ok 10 - Circle->can('notEqualTo') ok 11 - Circle->can('isSameTypeAs') ok 12 - Circle->can('lessThanOrEqualTo') ok 13 - Circle->can('greaterThan') ok 14 - Circle->can('greaterThanOrEqualTo') ok 15 - Circle->can('isBetween') ok 16 - Circle->can('area') ok 17 - Circle->can('bounds') ok 18 - Circle->can('diameter') ok 19 - Circle->can('scaleBy') ok 20 - Circle->can('getRed') ok 21 - Circle->can('setRed') ok 22 - Circle->can('getBlue') ok 23 - Circle->can('setBlue') ok 24 - Circle->can('getGreen') ok 25 - Circle->can('setGreen') ok 26 - Circle->can('equalTo') ok 27 - Circle->can('lessThan') ok 28 - Circle->can('equalTo') ok 29 - ... circle overload == ok 30 - ... circle overload < ok 31 - ... circle overload != ok 32 - ... circle overload <= ok 33 - ... circle overload > ok 34 - ... circle overload >= ok 35 - The object isa Class::Trait::Config ok 36 - ... get the traits name ok 37 - ... this should not be empty ok 38 - ... we should have no conflicts ok 39 - ... and trait requirements should be correct ok 40 - ... and the overloaded operators should be correct ok 41 - ... and the trait methods should also be correct ok t/050_Trait_Config_test.........1..34 ok 1 - use Class::Trait::Config; ok 2 - Class::Trait::Config->can('new') ok 3 - The object isa Class::Trait::Config ok 4 - Class::Trait::Config->can('name') ok 5 ok 6 - Class::Trait::Config->can('sub_traits') ok 7 - ... its an array reference ok 8 - ... both should be empty ok 9 - Class::Trait::Config->can('requirements') ok 10 - ... its an hash reference ok 11 - ... both should be empty ok 12 - Class::Trait::Config->can('methods') ok 13 - ... its an hash reference ok 14 - ... both should be empty ok 15 - Class::Trait::Config->can('overloads') ok 16 - ... its an hash reference ok 17 - ... both should be empty ok 18 - Class::Trait::Config->can('conflicts') ok 19 - ... its an hash reference ok 20 - ... both should be empty ok 21 - ... it should assigned now ok 22 - ... its an array reference ok 23 - ... both should not be empty ok 24 - ... its an hash reference ok 25 - ... both should not be empty ok 26 - ... its an hash reference ok 27 - ... both should not be empty ok 28 - ... its an hash reference ok 29 - ... both should not be empty ok 30 - ... its an hash reference ok 31 - ... both should not be empty ok 32 - Class::Trait::Config->can('clone') ok 33 - The object isa Class::Trait::Config ok 34 - ... these should be different ok t/060_Trait_SUPER_test..........1..14 ok 1 - Read->can('new') ok 2 - The object isa Read ok 3 - SyncRead->can('new') ok 4 - The object isa SyncRead ok 5 - The object isa Read ok 6 - ... sync reader is a TSyncRead ok 7 - ... these should be the same results ok 8 - The object isa Class::Trait::Config ok 9 - ... get the traits name ok 10 - ... this should be empty ok 11 - ... this should be empty ok 12 - ... this should be empty ok 13 - ... this should not be empty ok 14 - ... this should not be empty ok t/070_Trait_mod_perl_test.......1..2 ok 1 - mod_perl should no longer warn on startup ok 2 - .. BasicTrait is TSimple ok t/080_Trait_SUPER2_test.........1..3 ok 1 ok 2 ok 3 ok t/090_Class_Trait_Lib_tests.....1..20 ok 1 - Test::Class::LoadingTraitsWithColonsInThem->can('new') ok 2 - Test::Class::LoadingTraitsWithColonsInThem->can('does') ok 3 - ... our trait was compiled successfully ok 4 - Test::Class::LoadingTraitsWithColonsInThem->can('isLoaded') ok 5 - ... and our trait method is as we expected ok 6 - Test::Class::Another::ColonInTheName->can('new') ok 7 - Test::Class::Another::ColonInTheName->can('does') ok 8 - ... our trait was compiled successfully ok 9 - Test::Class::Another::ColonInTheName->can('isLoaded') ok 10 - ... and our trait method is as we expected ok 11 - ... our values compare correctly ok 12 - ... our values compare correctly ok 13 - ... our values compare correctly ok 14 - ... our objects are the same type ok 15 - ... our objects are not the same type ok 16 - ... our objects are the same type ok 17 - ... our objects not are the same type ok 18 - ... got the right first item ok 19 - ... got the right second item ok 20 - ... got the right third item ok t/100_trait_rename_does.........1..52 ok 1 - Class::Trait->can('rename_does') ok 2 - ... calling rename_does() with an illegal method name should die ok 3 - ... but calling it with a legal method name should succeed ok 4 - TraitTest->can('new') ok 5 - The object isa TraitTest ok 6 - The object isa TraitTestBase ok 7 - The object isa TraitTest ok 8 - The object isa TraitTestBase ok 9 - ... trait 1 is TPrintable ok 10 - ... trait 1 is TCompositeTest ok 11 - ... trait 1 is TComparable (because of TCompositeTest ok 12 - ... trait 2 is TPrintable ok 13 - ... trait 2 is TCompositeTest ok 14 - ... trait 2 is TComparable (because of TCompositeTest ok 15 - TraitTest->can('compositeTestRequirement') ok 16 - TraitTest->can('compositeTestRequirement') ok 17 - TraitTest->can('compositeTest') ok 18 - TraitTest->can('compositeTest') ok 19 - TraitTest->can('toString') ok 20 - TraitTest->can('toString') ok 21 - TraitTest->can('stringValue') ok 22 - TraitTest->can('stringValue') ok 23 - TraitTest->can('compare') ok 24 - TraitTest->can('compare') ok 25 - TraitTest->can('equalTo') ok 26 - TraitTest->can('equalTo') ok 27 - TraitTest->can('notEqualTo') ok 28 - TraitTest->can('notEqualTo') ok 29 - TraitTest->can('strVal') ok 30 - TraitTest->can('strVal') ok 31 - ... trait 1 overload == ok 32 - ... trait 1 overload != ok 33 - ... trait 1 overload <=> ok 34 - ... trait 1 overload "" ok 35 - ... trait 2 overload == ok 36 - ... trait 2 overload != ok 37 - ... trait 2 overload <=> ok 38 - ... trait 2 overload "" ok 39 - ... and it should be stringified correctly ok 40 - ... and it should be stringified correctly ok 41 - ... and they should be equal ok 42 - ... and they shouldnt be not equal ok 43 - ... and they shouldnt be equal and therefore <=> return 0 ok 44 - ... and should return a reasonable strVal ok 45 - ... and should return a reasonable strVal ok 46 - The object isa Class::Trait::Config ok 47 - ... get the traits name ok 48 - ... this should not be empty ok 49 - ... this should be empty ok 50 - ... this should not be empty ok 51 - ... this should not be empty ok 52 - ... this should not be empty ok t/110_trait_performs............1..21 ok 1 - TestIt->can('new') ok 2 - ... and calling it should succeed ok 3 - ... and the object it returns isa TestIt ok 4 - TestIt->can('reverse') ok 5 - ... and methods should work correctly ok 6 - TestIt->can('performs') ok 7 - ... and it should return true for traits it can do ok 8 - ... and it should return false for traits it cannot do ok 9 - ... and it should not have a "does()" method ok 10 - ... or an "is()" method ok 11 - TestItChild->can('new') ok 12 - ... and calling it should succeed ok 13 - ... and the object it returns isa TestItChild ok 14 - ... and the object it returns isa TestIt ok 15 - TestItChild->can('reverse') ok 16 - ... and methods should work correctly ok 17 - TestItChild->can('performs') ok 18 - ... and it should return true for traits it can do ok 19 - ... and it should return false for traits it cannot do ok 20 - ... and it should not have a "does()" method ok 21 - ... or an "is()" method ok t/120_trait_errors..............1..33 ok 1 - Trying to load conflicting traits should fail ok 2 - ... with an appropriate error message ok 3 - Trying to load conflicting traits should fail ok 4 - ... with an appropriate error message ok 5 - Trying to load properly configured traits should not fail ok 6 - TestTraits->can('fuse') ok 7 - ... and it should pull in the correct fuse() method ok 8 - TestTraits->can('explode') ok 9 - ... and it should pull in the correct explode() method ok 10 - Trying to load properly configured traits should not fail ok 11 - TestTraits->can('fuse') ok 12 - ... and it should pull in the correct fuse() method ok 13 - TestTraits->can('explode') ok 14 - ... and it should not pull in explicitly defined methods ok 15 - Trying to load a trait which does not meet requirements should fail ok 16 - ... with an appropriate error message ok 17 - Trying to load a trait which does not meet requirements should fail ok 18 - ... and @REQUIREMENTS should bubble up correctly ok 19 - Trying to load a trait which overrides an included traits methods should succeed ok 20 - Polygamy->can('explode') ok 21 - ... and we should have the correct method ok 22 - Polygamy->can('fuse') ok 23 - ... and we should get the composed trait method ok 24 - Trying to rename does() to an illegal method name should fail ok 25 - ... telling us that it's an illegal method name ok 26 - Trying to use a non-trait as a trait should fail ok 27 - ... telling us that it's not a trait ok 28 - Trying to use a trait with a disallowed method should fail ok 29 - ... telling us what the disallowed method is ok 30 - Attempting to exclude a non-existent method should fail ok 31 - ... telling us which non-existent method we tried to exclude ok 32 - Attempting to alias a non-existent method should fail ok 33 - ... telling us which non-existent method we tried to alias ok t/130_trait_runtime_instance....1..43 ok 1 - TSpouse->can('apply') ok 2 - ... and applying the trait to an instance should succeed ok 3 - ... and the instance should still respect "isa" ok 4 - ... but it should be blessed into a new class ok 5 - ... and it should be able to do the new trait ok 6 - Foo::__ANON__::TSpouse_1->can('name') ok 7 - ... original methods should still be available ok 8 - Foo::__ANON__::TSpouse_1->can('explode') ok 9 - ... but corresponding trait methods should override them ok 10 - Foo::__ANON__::TSpouse_1->can('fuse') ok 11 - ... and the new trait methods should be available ok 12 - Different instances of classes should not share runtime traits ok 13 - Class::Trait->can('apply') ok 14 - Trying to apply conflicting traits at runtime should fail ok 15 - ... with an appropriate error message ok 16 - ... and it should be able to do the first trait ok 17 - ... and it should be able to do the second trait ok 18 - Foo::__ANON__::TSpouseTBomb_3->can('name') ok 19 - ... original methods should still be available ok 20 - Foo::__ANON__::TSpouseTBomb_3->can('explode') ok 21 - ... but corresponding trait methods should override them ok 22 - Foo::__ANON__::TSpouseTBomb_3->can('fuse') ok 23 - ... and the new trait methods should be available ok 24 - We should be able to apply the conflicting traits to separate instances ok 25 - Trait information should not persist innappropriately ok 26 - ... but we should have that info when it is available ok 27 - ... and it should still report the other traits it can do ok 28 - Foo::__ANON__::TBomb_6->can('name') ok 29 - ... original methods should still be available ok 30 - Foo::__ANON__::TBomb_6->can('explode') ok 31 - ... but later trait methods should override earlier ones ok 32 - Foo::__ANON__::TBomb_6->can('fuse') ok 33 - ... and the new trait methods should be available ok 34 - ... and it should be able to report all traits it can do ok 35 - Trying to apply a runtime trait with unmet requirements should fail ok 36 - ... with an appropriate error message ok 37 - ... and the package of the object should not change ok 38 - Trying to apply a runtime trait with unmet requirements should fail ok 39 - ... with an appropriate error message ok 40 - ... and the package of the object should not change ok 41 - Satisfying all requirements of runtime traits should succeed ok 42 - ... and the instance should have a new anonymous package ok 43 - ... and the correct method should be overridden ok t/140_trait_runtime_class.......ok 1 - ... and the object it returns isa Foo ok 2 - Foo->can('does') ok 3 - ... and it should be able to do the new trait ok 4 - Foo->can('name') ok 5 - ... original methods should still be available ok 6 - Foo->can('explode') ok 7 - ... but corresponding trait methods should override them ok 8 - Foo->can('fuse') ok 9 - ... and the new trait methods should be available ok 10 - Different instances of classes should share runtime traits applied to classes ok 11 - Class::Trait->can('apply') ok 12 - Trying to apply conflicting traits at runtime should fail ok 13 - ... with an appropriate error message ok 14 - ... and it should be able to do the first trait ok 15 - ... and it should be able to do the second trait ok 16 - Foo->can('name') ok 17 - ... original methods should still be available ok 18 - Foo->can('explode') ok 19 - ... but corresponding trait methods should override them ok 20 - Foo->can('fuse') ok 21 - ... and the new trait methods should be available ok 22 - Trait information should not persist innappropriately ok 23 - ... but we should have that info when it is available ok 24 - ... and it should still report the other traits it can do ok 25 - Foo->can('name') ok 26 - ... original methods should still be available ok 27 - Foo->can('explode') ok 28 - ... but later trait methods should override earlier ones ok 29 - Foo->can('fuse') ok 30 - ... and the new trait methods should be available ok 31 - ... and it should be able to report all traits it can do ok 32 - Trying to apply a runtime trait with unmet requirements should fail ok 33 - ... with an appropriate error message ok 34 - Trying to apply a runtime trait with unmet requirements should fail ok 35 - ... with an appropriate error message ok 36 - Satisfying all requirements of runtime traits should succeed ok 37 - ... and the correct method should be overridden 1..37 ok t/150_inherited_does............1..2 ok 1 - Traits should do what traits should do ok 2 - ... and so should their subclasses ok t/pod...........................1..7 ok 1 - blib\lib\Class\Trait.pm ok 2 - blib\lib\Class\Trait\Base.pm ok 3 - blib\lib\Class\Trait\Config.pm ok 4 - blib\lib\Class\Trait\Reflection.pm ok 5 - blib\lib\Class\Trait\Lib\TComparable.pm ok 6 - blib\lib\Class\Trait\Lib\TEquality.pm ok 7 - blib\lib\Class\Trait\Lib\TPrintable.pm ok t/pod_coverage..................1..0 # Skip Test::Pod::Coverage required for testing POD coverage skipped all skipped: Test::Pod::Coverage required for testing POD coverage All tests successful, 1 test skipped. Files=17, Tests=405, 3 wallclock secs ( 0.00 cusr + 0.00 csys = 0.00 CPU) Microsoft (R) Program Maintenance Utility Version 7.10.3077 Copyright (C) Microsoft Corporation. All rights reserved. Installing C:\cpanrun\build\5-10-0\html\site\lib\Class\Trait.html Installing C:\cpanrun\build\5-10-0\html\site\lib\Class\Trait\Base.html Installing C:\cpanrun\build\5-10-0\html\site\lib\Class\Trait\Config.html Installing C:\cpanrun\build\5-10-0\html\site\lib\Class\Trait\Reflection.html Installing C:\cpanrun\build\5-10-0\html\site\lib\Class\Trait\Lib\TComparable.html Installing C:\cpanrun\build\5-10-0\html\site\lib\Class\Trait\Lib\TEquality.html Installing C:\cpanrun\build\5-10-0\html\site\lib\Class\Trait\Lib\TPrintable.html Installing C:\cpanrun\build\5-10-0\site\lib\Class\Trait.pm Installing C:\cpanrun\build\5-10-0\site\lib\Class\Trait\Base.pm Installing C:\cpanrun\build\5-10-0\site\lib\Class\Trait\Config.pm Installing C:\cpanrun\build\5-10-0\site\lib\Class\Trait\Reflection.pm Installing C:\cpanrun\build\5-10-0\site\lib\Class\Trait\Lib\TComparable.pm Installing C:\cpanrun\build\5-10-0\site\lib\Class\Trait\Lib\TEquality.pm Installing C:\cpanrun\build\5-10-0\site\lib\Class\Trait\Lib\TPrintable.pm Appending installation info to C:\cpanrun\build\5-10-0\lib/perllocal.pod