Stubbed subs no longer have CvOUTSIDE set.
Nicholas Clark [Fri, 10 May 2013 07:25:13 +0000 (09:25 +0200)]
t/code.t was testing whether Devel::Size was following CvOUTSIDE by relying
on the implementation detail that CvOUTSIDE is set for a subroutine that is
explicitly stubbed, and not set for one that is implicitly stubbed at runtime.

v5.17.0 changed the compile-time behaviour so that no stubbed subroutine has
CvOUTSIDE set, which breaks the assumption of this test. Hence change the test
to verify the new behaviour. However, this leaves us currently with no test
for CvOUTSIDE.

(Based on a patch by Zefram. see RT #83903 and perl's commit 8be227ab5eaa23f2)

CHANGES
t/code.t

diff --git a/CHANGES b/CHANGES
index 8c6c799..1f7cd06 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,5 +1,6 @@
 Revision history for Perl extension Devel::Size.
 
+ * stubbed subs no longer have CvOUTSIDE set [CPAN #77913]
  * Fix for v5.17.2's OP slab allocator [CPAN #83903]
  * Spelling fix to docs from gregor herrmann [CPAN #78766]
 
index f2e1e26..eed0779 100644 (file)
--- a/t/code.t
+++ b/t/code.t
@@ -15,8 +15,13 @@ my $swoosh_size = total_size(\&swoosh);
 my $crunch_size = total_size(\&crunch);
 
 cmp_ok($whack_size, '>', 0, 'CV generated at runtime has a size');
-cmp_ok($zwapp_size, '>', $whack_size,
-       'CV stubbed at compiletime is larger (CvOUTSIDE is set and followed)');
+if("$]" >= 5.017) {
+    cmp_ok($zwapp_size, '==', $whack_size,
+          'CV stubbed at compiletime is the same size');
+} else {
+    cmp_ok($zwapp_size, '>', $whack_size,
+          'CV stubbed at compiletime is larger (CvOUTSIDE is set and followed)');
+}
 cmp_ok(length prototype \&swoosh, '>', 0, 'prototype has a length');
 cmp_ok($swoosh_size, '>', $zwapp_size + length prototype \&swoosh,
        'prototypes add to the size');