Conversation
## 根本原因と修正 ### 1. composer.json の strict validation 失敗を修正 - `license` フィールド追加(strict モードで必須) - `require.php` を `>=8.1` で明示(依存関係の実態に合わせる) - 非推奨の `version` フィールドを削除 - 存在しない `eccube/plugin-installer` を allow-plugins から削除 ### 2. composer.lock による PHP バージョン不整合を解消 - composer.lock をバージョン管理から除外(プラグインの標準的慣行) - .gitignore に追加 - CI で `composer update` を使用し各PHP環境に適した依存を解決 ### 3. CI マトリクスを現行PHPバージョンに更新 - PHP 8.0 を削除(2023年11月にEOL、PHPUnit 10+ は 8.1+ 必須) - PHP 8.3, 8.4 を追加 - キャッシュキーを composer.json ベースに変更 ### 4. PHPUnit 設定とテストの近代化 - phpunit.xml.dist: `<coverage>` → `<source>` に移行(PHPUnit 10+ 推奨形式) - テスト: `@dataProvider` アノテーション → `#[DataProvider]` 属性に移行 - データプロバイダメソッドを static に変更(PHPUnit 11 で必須) https://claude.ai/code/session_01NKu4ADGFCQfxeaQXmPTFwG
There was a problem hiding this comment.
Pull request overview
CI パイプラインが全 PHP バージョンで失敗していた原因(composer メタデータ不備、PHPUnit/PHP バージョン整合、PHPUnit 設定形式)を解消し、CI とテスト設定を現行(PHP 8.1+ / PHPUnit 10+)に合わせる PR です。
Changes:
composer.jsonを strict validate に通るよう整備し、PHP 8.1+ と PHPUnit 10/11 を明示composer.lockをリポジトリ管理から外し、CI をcomposer updateベースへ変更- PHPUnit 設定とテスト(DataProvider 属性)を PHPUnit 10+ 形式へ移行
Reviewed changes
Copilot reviewed 4 out of 6 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
composer.json |
license/require-dev 等の整理、PHP 8.1+・PHPUnit 10/11 に更新 |
.github/workflows/ci.yml |
PHP マトリクス更新、依存導入を composer update に変更、cache key を composer.json ベースへ |
phpunit.xml.dist |
<coverage> から <source> へ移行(PHPUnit 10+ 推奨形式) |
Tests/Unit/Controller/MpbControllerTest.php |
@dataProvider を #[DataProvider] 属性へ変更、プロバイダを static 化 |
.gitignore |
composer.lock を ignore 対象に追加 |
composer.lock |
追跡対象から削除 |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| "version": "1.0.0", | ||
| "description": "Make Product By Customer for EC-CUBE 4.3", | ||
| "type": "eccube-plugin", | ||
| "license": "proprietary", |
There was a problem hiding this comment.
composer.json の "license" が "proprietary" になっていますが、リポジトリ直下の LICENSE ファイルは MIT License になっています(LICENSE:1)。配布形態が OSS のままなら composer.json の license を "MIT"(SPDX)に合わせるか、逆に proprietary が正しいなら LICENSE ファイル側も整合する内容に更新してください。
| "license": "proprietary", | |
| "license": "MIT", |
| - name: Install dependencies | ||
| run: composer install --prefer-dist --no-progress --no-interaction | ||
| run: composer update --prefer-dist --no-progress --no-interaction | ||
|
|
There was a problem hiding this comment.
CI で composer.lock をコミットしない方針の場合でも、workflow が毎回 composer update を実行すると依存関係が実行のたびに変わり得て、過去に通ったコミットが将来落ちる(非決定的)状態になります。再現性を重視するなら lock をコミットして composer install に戻す、ライブラリ運用として lock を置かないなら少なくとも --prefer-lowest/--prefer-stable を組み合わせたジョブを追加する等、依存解決の戦略を明示するのが安全です。
Summary
PR #2 でマージされたCIパイプラインが全PHPバージョン(8.0/8.1/8.2)で失敗していた根本原因を特定し、包括的に修正しました。
根本原因分析
composer.jsonにlicenseフィールド欠落、非推奨versionフィールド存在composer validate --strictが全バージョンで失敗composer.lockが PHPUnit 10.5 (PHP>=8.1必須) を固定composer installが失敗phpunit.xml.distが PHPUnit 9 形式の<coverage>を使用修正内容
license追加、php>=8.1明示、PHPUnit^10.0 || ^11.0に更新、非推奨version削除.gitignoreに追加8.1/8.2/8.3/8.4に更新、composer updateに変更<coverage>→<source>に移行(PHPUnit 10+ 推奨形式)@dataProvider→#[DataProvider]属性、プロバイダをstaticに変更Test plan
composer validate --strict→ validcomposer update→ 正常完了vendor/bin/phpunit --testdox→ 53 tests, 77 assertions, 0 errors, 0 deprecationshttps://claude.ai/code/session_01NKu4ADGFCQfxeaQXmPTFwG