Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

Config::IniFiles initialization returns undef in CGI::Application plugin test

クローズ
#1,788 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

関連するプルリクエストがすでにマージされています。

  • #1799 @fglock による — マージ済み

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
18/100
issue の種類
バグ
明瞭さ
おおむね明確
活発さ
活発
技術スタック
java, perl
領域
backend

調査の方向性

The failure is in t/CGI-Application-Plugin-Config-IniFiles.t and t/TestConfigIniFiles.pm at the run_mode call to $self->config->val("main", "title"). Start by reproducing with a small script that calls Config::IniFiles->new(-file => ...) on the distribution's test.conf and printing @Config::IniFiles::errors to see why ReadConfig returns false under PerlOnJava. Done means the object is defined on both backends and all 9 assertions pass.

索引モデルが issue の本文から書いたものです。

説明

area:io area:runtime bug

Summary

The CPAN test suite for CGI-Application-Plugin-Config-IniFiles 0.03 fails under PerlOnJava when the plugin reads its valid test.conf configuration. System Perl passes the full target suite.

Failure evidence

  • CPAN tester run: 20261013-145839-84917
  • Distribution: CGI-Application-Plugin-Config-IniFiles 0.03 (ARTO)
  • Failing test: t/CGI-Application-Plugin-Config-IniFiles.t
  • Failure site: t/TestConfigIniFiles.pm, run_mode, at $self->config->val("main", "title")
  • PerlOnJava result: test exits after 2 of 9 planned assertions with Can't call method "val" on an undefined value.
  • System Perl oracle: all 9 tests pass. The archived oracle used Perl 5.42.2 and installed CGI::Application 4.61 and Config::IniFiles 3.003000.
  • PerlOnJava setup also used CGI::Application 4.61; the available Config::IniFiles is 3.003000. Its target test environment includes the distribution's test.conf.

Root cause

CGI::Application::Plugin::Config::IniFiles::config_file assigns the return value of Config::IniFiles->new(-file => $file) to the app's __CONFIG field. In the failing PerlOnJava run, that initialization produces undef; the plugin's config() accessor then returns the stored undef, causing the later val call to fail. The same valid configuration initializes successfully under system Perl.

This localizes the incompatibility to PerlOnJava's interaction with Config::IniFiles initialization or file parsing. The archived output does not include @Config::IniFiles::errors or identify the specific low-level operation, so the precise parser/filehandle semantic still needs to be isolated.

Proposed fix

  1. Add a focused regression that loads a small INI file with Config::IniFiles->new(-file => ...), checks the returned object and a known val, and runs on both PerlOnJava backends.
  2. Instrument or reduce the failing path to capture @Config::IniFiles::errors and determine why ReadConfig returns false under PerlOnJava. Fix the underlying runtime or file-reading incompatibility instead of masking the undefined object in the plugin.
  3. Keep the plugin integration scenario as coverage and require all 9 upstream assertions to pass on both backends and system Perl.

Environment and limitations

The available archived log records the macOS Homebrew system Perl path, but does not record the PerlOnJava commit, JVM version, or an interpreter-backend result. Reverse-dependency counts do not apply: this distribution and the identified dependencies are pure Perl.

主要言語
Perl
スター
64
フォーク
7
平均マージ
5時間 31分
マージ済み PR(30日)
214

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

fglock/PerlOnJava のほかの issue

fglock/PerlOnJava の issue をすべて見る

似ている issue

Perl の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。