Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

JVM backend continues after dynamic Test::More skip_all

Đang mở
#1,471 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Đánh giá

Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức phù hợp với người mới
68/100
Loại issue
Lỗi
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
java, perl
Lĩnh vực
backend, testing-qa

Hướng nghiên cứu

Start with the minimal reproducer and the JVM backend's Test::More/Test2 skip-all path, then compare it with the interpreter backend. Use t/live_prerelease.t as the real-world case and add the suggested permanent unit test for a dynamically evaluated skip_all followed by a failing statement. Done means both backends exit successfully while preserving the skip TAP output.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

area:backend area:cpan-port area:runtime bug

Summary

The JVM backend does not terminate successfully after Test::More receives a
dynamic skip_all plan. It prints the skip plan but continues executing the
rest of the test file. The interpreter backend and standard Perl terminate
successfully.

CPAN evidence

  • Distribution: Net::Google::Storage 0.2.0
  • CPAN run: 20260921-124328-13959
  • Failing test: t/live_prerelease.t
  • Passing test: t/basic.t
  • System Perl focused result: pass; t/basic.t passes and
    t/live_prerelease.t is skipped because Test::Class is unavailable.
  • The live test also requires optional Google Storage credentials/configuration
    and is not part of the local functional test.

The archived JVM result was:

Can't locate object method "runtests" via package "Test::Class"
 at t/live_prerelease.t line 10.
t/live_prerelease.t ...... skipped: Probable missing Test::Class
Result: FAIL

The test contains this optional-dependency guard:

BEGIN {
    use lib 't/lib';
    eval { require Net::Google::Storage::Test; };
    if ($@) {
        eval "use Test::More skip_all => 'Probable missing Test::Class';";
    }
}

Test::Class->runtests;

The upstream test is fragile because the method call is unconditional, but
standard Perl's skip_all behavior makes the file exit successfully before
that call.

Minimal reproducer

eval { require Test::Class::DefinitelyMissing };
if ($@) {
    eval q{use Test::More skip_all => "missing optional dependency"};
}
Test::Class->runtests;

Observed results:

Runtime Result
System Perl 1..0 # SKIP ..., exit 0
PerlOnJava JVM backend 1..0 # SKIP ..., then missing-method error, exit 255
PerlOnJava interpreter backend 1..0 # SKIP ..., exit 0

The JVM backend also prints AFTER-SKIP for a variant that prints after the
skip_all call, proving that execution continues after the skip plan. The
interpreter backend does not print it.

Expected behavior

The JVM backend should treat a skip_all plan as successful test termination,
including when Test::More is loaded dynamically inside eval STRING. Code
following the skip plan must not execute, and the process should exit 0.

Suggested acceptance coverage

Add a permanent unit test covering a dynamically evaluated
Test::More skip_all followed by an otherwise-failing statement. Require
successful exit on both the JVM and interpreter backends, while preserving the
skip TAP output.

Likely ownership

This appears to be a JVM-backend control-flow/exit propagation issue in the
Test::More/Test2 skip-all path, not a Net::Google::Storage API or module
implementation issue.

Ngôn ngữ chính
Perl
Star
64
Fork
6
Merge trung bình
5 giờ 38 phút
Pull request đã merge (30 ngày)
170

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của fglock/PerlOnJava

Tất cả issue của fglock/PerlOnJava

Issue tương tự

Thêm issue về Perl

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.