Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Larastan に自作 OSS ライブラリのテストをぶっ壊された話
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
mpyw
March 24, 2023
Programming
520
0
Share
Larastan に自作 OSS ライブラリのテストをぶっ壊された話
PHPerKaigi 2023 Day1 アンカンファレンス
mpyw
March 24, 2023
More Decks by mpyw
See All by mpyw
推測するな、計測せよ New Relic × Laravel 実践
mpyw
4
2k
排他制御のためだけに渋々 Redis 使ってませんか?
mpyw
8
2.6k
MySQL/Postgres におけるトランザクション分離レベル
mpyw
24
6.9k
PhpStorm と Docker の壊し方 〜モジュラモノリスへの幻想と失敗〜
mpyw
4
2.6k
Other Decks in Programming
See All in Programming
関係性から理解する"同一性"の型用語たち
pvcresin
2
630
Migrations : C'est une question d'hygiène !
vinceamstoutz
0
2.8k
LLM本来の能力を解き放つサンドボックス技術とAI民主化への適用
yukukotani
1
470
AI時代のUIはどこへ行く?その2!
yusukebe
19
6.1k
AIとRubyの静的型付け
ukin0k0
0
500
フロントエンドとバックエンドで「1文字」を揃えよう
youkidearitai
PRO
0
120
ふつうのFeature Flag実践入門
irof
7
3.4k
Signal Forms: Beyond the Basics @ngBaguette 2026 in Paris
manfredsteyer
PRO
0
200
AI駆動開発で崩れていくコードベースを立て直す
kyoko_nr_nr
1
410
CLIであることを活かしたGitHub Copilot CLI活用術 / GitHub Copilot CLI Pro Tips & Tricks
nao_mk2
1
1.2k
3Dシーンの圧縮
fadis
1
560
生成AI時代にこそ効くGo | Why Go Works in the Age of Generative AI
mom0tomo
8
3.1k
Featured
See All Featured
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
55k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
150
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
55k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
390
YesSQL, Process and Tooling at Scale
rocio
174
15k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
570
Facilitating Awesome Meetings
lara
57
6.9k
Designing for Performance
lara
611
70k
How to Ace a Technical Interview
jacobian
281
24k
The Language of Interfaces
destraynor
162
26k
First, design no harm
axbom
PRO
2
1.2k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Transcript
Larastan に自作 OSS ライブラリ のテストをぶっ壊された話 PHPerKaigi 2023 Day1 アンカンファレンス @mpyw
ある日,突然自作ライブラリのテストが壊れました
発端 PDO のエミュレーションを切り替えるテスト
発端 PDO のエミュレーションを切り替えるテスト RefreshDatabase はコネクションを解決してしまうが 使っていない
CI だけ何故か落ちるようになってしまった…
ローカルと CI の微妙な違い • ローカルでは…? ◦ vendor/bin/phpunit • CI では…?
◦ vendor/bin/phpstan ◦ vendor/bin/phpunit
ローカルと CI の微妙な違い • ローカルでは…? ◦ vendor/bin/phpunit • CI では…?
◦ vendor/bin/phpstan ◦ vendor/bin/phpunit PHPStan を走らせると その後のテストは何回実行しても落ちる
PHPStan の実行で何が起こったのか?
PHPStan の実行で何が起こったのか? orchestra/testbench はライブラリの テスト用に laravel/laravel をいい感じに 用意してくれるテストフレームワーク
Larastan くん勝手に vendor 配下触るの!?
差分を探す
差分を探す 新規作成された vendor 自体は怪しくなかった ↓ 既存ファイルが書き換えられているのでは…?
差分を探す
差分を探す パッケージディスカバリが走ってそう
Larastan がどこかのバージョンから パッケージディスカバリを orchestra/testbench 内 の laravel/laravel に対して行うようになった…
差分を探す orchestra/testbench が spatie/laravel-ray に依存している
サービスプロバイダから呼ばれる処理で… 立ち上げ時に DB::connection() を解決している
None
None
というか Larastan がお節介すぎるやろ…
nunomaduro/larastan/issues/1588 に立てました
nunomaduro/larastan/issues/1588 に立てました
laravel-ray 側で直すんかい!w
遅延評価されるように修正された(1日前)
まとめ • Larastan は勝手に orchestra/testbench 上の依存関係で パッケージディスカバリを実行してくる • DB::connection() が解決される副作用に限っては
spatie/laravel-ray 側で 修正されたが,本質的な問題に対する違和感は拭えない