-
Notifications
You must be signed in to change notification settings - Fork 65
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
The --archive option to prove seems to be broken #42
Comments
I can't reproduce this. |
I just tested it again, on a fresh Debian 7.6 Virtualbox. First I tested with TAP::Harness and TAP::Harness::Archive installed from Debian packages, and it worked. This was: Then I installed TAP::Harness::Archive from CPAN, and it still worked. Now I had: Then I installed TAP::Harness from CPAN too, and it did not work. Now I have: The error is: Perl version: |
Could you provide a shell snippet that will create |
I could not reproduce this failure with TAP::Harness::Archive v0.15 and either perl-5.20.1 or perl-5.14.4 (both installed via 'perlbrew'). I tested this by turning to my local git checkout of my most recent CPAN distribution, Git-Reduce-Tests. With each version of Perl, I called: $ perl Makefile.PL
$ make
$ prove -vb --archive /home/jkeenan/tmp/grt/git-reduce-tests.tgz xt/git/*.t In each case, I changed to the output directory and called: $ tar xzvf git-reduce-tests.tgz ... which yielded: $ find . -type f -a ! -name '*tgz'
./meta.yml
./xt/git/002-prepare-reduced-branch.t
./xt/git/001-new.t I inspected the files and saw that their content was plausible. Thank you very much. |
jkeenan: which version of TAP::Harness? |
As stated in previous post: I could not reproduce this failure with TAP::Harness::Archive v0.15 and either perl-5.20.1 or perl-5.14.4 (both installed via 'perlbrew'). TAP::Harness v3.30 in the case of perl-5.20.1 and perl-5.14.4. |
But TAP::Harness::Archive and TAP::Harness are two separate modules. For me, it looks like TAP::Harness is the one that is causing the trouble. --archive works with either TAP::Harness::Archive 0.14 or 0.15, but only as long as TAP::Harness is 3.23. When I upgrade that to 3.33 it breaks. |
Using 'cpanm', I upgraded to TAP-Harness v3.33. I repeated the procedures described in my previous post with perl-5.20.1. A tarball was created. I unpacked that tarball. All the contents were plausible. However, when I then said 'perlbrew switch perl-5.14.4' and repeated the procedures, I got:
So there is some problematic interaction between TAP::Harness v3.33 and older perls. |
Sorry for dragging on... Did you mean 3.23 or 3.33? 3.23 works for me, 3.33 does not. |
Reproduced with perl 5.14.4. Failure with TAP::Harness 3.33 but not 3.23. The key here is the base.pm 2.16 that ships with perl 5.14.4. base.pm is known to be buggy and it previously skipped requiring modules when it's needed in case of cyclic invocations, and this "TAP::Harness requiring TAP::Harness::Archive which calls base.pm 2.18 apparently fixed it:
But Test::Harness has a reason to switch from parent.pm to base.pm (can't use non-core prereq since it might cause cyclic dependencies). And requiring newer base.pm might have the same problem. I guess the last resort is to use |
Actually - since TAP::Harness::Archive is a standalone module, could it be just updated to require |
Thanks for looking into this. Good to know it's not just me going crazy... :-) As for the technical stuff, that is way above my head, I'm afraid. |
I don't quite understand. TAP::Harness doesn't load TAP::Harness::Archive during compile-time, so the circularity shouldn't be a problem, right? |
Sounds like a reasonable workaround to me. |
Yeah it's weird, but certainly, TAP::Harness::Archive skips requiring TAP::Harness as well as pushing it into |
Thanks for creating and maintaining some great modules!
After some recent upgrades, the --archive option to prove seems to be broken:
$ prove --archive /tmp/test.tgz
Can't locate object method "new" via package "TAP::Harness::Archive::SUPER" at /usr/local/share/perl/5.14.2/TAP/Harness/Archive.pm line 96.
Line 96 looks like this:
my $self = $class->SUPER::new($args);
Versions:
OS: Debian 7.6
Perl: v5.14.2 built for x86_64-linux-gnu-thread-multi
TAP::Harness 3.33
TAP::Harness::Archive 0.15
I have tested this with TAP::Harness::Archive 0.15 and TAP::Harness 3.23, and that seems to work. Not quite sure if this is mainly a problem with TAP::Harness or TAP::Harness::Archive...
Please let me know if more details are needed.
The text was updated successfully, but these errors were encountered: