Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Larastan に自作 OSS ライブラリ のテストをぶっ壊された話 PHPerKaigi 2023 Day1 アンカンファレンス @mpyw
Slide 2
Slide 2 text
ある日,突然自作ライブラリのテストが壊れました
Slide 3
Slide 3 text
発端 PDO のエミュレーションを切り替えるテスト
Slide 4
Slide 4 text
発端 PDO のエミュレーションを切り替えるテスト RefreshDatabase はコネクションを解決してしまうが 使っていない
Slide 5
Slide 5 text
CI だけ何故か落ちるようになってしまった…
Slide 6
Slide 6 text
ローカルと CI の微妙な違い ● ローカルでは…? ○ vendor/bin/phpunit ● CI では…? ○ vendor/bin/phpstan ○ vendor/bin/phpunit
Slide 7
Slide 7 text
ローカルと CI の微妙な違い ● ローカルでは…? ○ vendor/bin/phpunit ● CI では…? ○ vendor/bin/phpstan ○ vendor/bin/phpunit PHPStan を走らせると その後のテストは何回実行しても落ちる
Slide 8
Slide 8 text
PHPStan の実行で何が起こったのか?
Slide 9
Slide 9 text
PHPStan の実行で何が起こったのか? orchestra/testbench はライブラリの テスト用に laravel/laravel をいい感じに 用意してくれるテストフレームワーク
Slide 10
Slide 10 text
Larastan くん勝手に vendor 配下触るの!?
Slide 11
Slide 11 text
差分を探す
Slide 12
Slide 12 text
差分を探す 新規作成された vendor 自体は怪しくなかった ↓ 既存ファイルが書き換えられているのでは…?
Slide 13
Slide 13 text
差分を探す
Slide 14
Slide 14 text
差分を探す パッケージディスカバリが走ってそう
Slide 15
Slide 15 text
Larastan がどこかのバージョンから パッケージディスカバリを orchestra/testbench 内 の laravel/laravel に対して行うようになった…
Slide 16
Slide 16 text
差分を探す orchestra/testbench が spatie/laravel-ray に依存している
Slide 17
Slide 17 text
サービスプロバイダから呼ばれる処理で… 立ち上げ時に DB::connection() を解決している
Slide 18
Slide 18 text
No content
Slide 19
Slide 19 text
No content
Slide 20
Slide 20 text
というか Larastan がお節介すぎるやろ…
Slide 21
Slide 21 text
nunomaduro/larastan/issues/1588 に立てました
Slide 22
Slide 22 text
nunomaduro/larastan/issues/1588 に立てました
Slide 23
Slide 23 text
laravel-ray 側で直すんかい!w
Slide 24
Slide 24 text
遅延評価されるように修正された(1日前)
Slide 25
Slide 25 text
まとめ ● Larastan は勝手に orchestra/testbench 上の依存関係で パッケージディスカバリを実行してくる ● DB::connection() が解決される副作用に限っては spatie/laravel-ray 側で 修正されたが,本質的な問題に対する違和感は拭えない