summaryrefslogtreecommitdiff
path: root/t/todo_tests/replacing_super_methods.t
diff options
context:
space:
mode:
Diffstat (limited to 't/todo_tests/replacing_super_methods.t')
-rw-r--r--t/todo_tests/replacing_super_methods.t42
1 files changed, 42 insertions, 0 deletions
diff --git a/t/todo_tests/replacing_super_methods.t b/t/todo_tests/replacing_super_methods.t
new file mode 100644
index 0000000..eef494a
--- /dev/null
+++ b/t/todo_tests/replacing_super_methods.t
@@ -0,0 +1,42 @@
+use strict;
+use warnings;
+use Test::More;
+
+my ($super_called, $sub_called, $new_super_called) = (0, 0, 0);
+{
+ package Foo;
+ use Moose;
+
+ sub foo { $super_called++ }
+}
+
+{
+ package Foo::Sub;
+ use Moose;
+ extends 'Foo';
+
+ override foo => sub {
+ $sub_called++;
+ super();
+ };
+}
+
+Foo::Sub->new->foo;
+is($super_called, 1, "super called");
+is($new_super_called, 0, "new super not called");
+is($sub_called, 1, "sub called");
+
+($super_called, $sub_called, $new_super_called) = (0, 0, 0);
+
+Foo->meta->add_method(foo => sub {
+ $new_super_called++;
+});
+
+Foo::Sub->new->foo;
+{ local $TODO = "super doesn't get replaced";
+is($super_called, 0, "super not called");
+is($new_super_called, 1, "new super called");
+}
+is($sub_called, 1, "sub called");
+
+done_testing;