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
mpyw
March 24, 2023
Programming
0
510
Larastan に自作 OSS ライブラリのテストをぶっ壊された話
PHPerKaigi 2023 Day1 アンカンファレンス
mpyw
March 24, 2023
Tweet
Share
More Decks by mpyw
See All by mpyw
推測するな、計測せよ New Relic × Laravel 実践
mpyw
4
2k
排他制御のためだけに渋々 Redis 使ってませんか?
mpyw
8
2.5k
MySQL/Postgres におけるトランザクション分離レベル
mpyw
24
6.8k
PhpStorm と Docker の壊し方 〜モジュラモノリスへの幻想と失敗〜
mpyw
4
2.5k
Other Decks in Programming
See All in Programming
AIコードレビューの導入・運用と AI駆動開発における「AI4QA」の取り組みについて
hagevvashi
0
500
CSC307 Lecture 14
javiergs
PRO
0
480
20260315 AWSなんもわからん🥲
chiilog
2
160
Vuetify 3 → 4 何が変わった?差分と移行ポイント10分まとめ
koukimiura
0
150
AIに任せる範囲を安全に広げるためにやっていること
fukucheee
0
140
The free-lunch guide to idea circularity
hollycummins
0
270
どんと来い、データベース信頼性エンジニアリング / Introduction to DBRE
nnaka2992
1
300
RubyとGoでゼロから作る証券システム: 高信頼性が求められるシステムのコードの外側にある設計と運用のリアル
free_world21
0
310
最初からAWS CDKで技術検証してもいいんじゃない?
akihisaikeda
4
160
仕様漏れ実装漏れをなくすトレーサビリティAI基盤のご紹介
orgachem
PRO
6
2.2k
生成 AI 時代のスナップショットテストってやつを見せてあげますよ(α版)
ojun9
0
260
それはエンジニアリングの糧である:AI開発のためにAIのOSSを開発する現場より / It serves as fuel for engineering: insights from the field of developing open-source AI for AI development.
nrslib
0
270
Featured
See All Featured
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.1k
Practical Orchestrator
shlominoach
191
11k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
230
How to make the Groovebox
asonas
2
2k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
410
Building a Modern Day E-commerce SEO Strategy
aleyda
45
8.9k
Git: the NoSQL Database
bkeepers
PRO
432
66k
Are puppies a ranking factor?
jonoalderson
1
3.1k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
200
Faster Mobile Websites
deanohume
310
31k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
2
560
How to Ace a Technical Interview
jacobian
281
24k
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 側で 修正されたが,本質的な問題に対する違和感は拭えない