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
530
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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
7k
PhpStorm と Docker の壊し方 〜モジュラモノリスへの幻想と失敗〜
mpyw
4
2.6k
Other Decks in Programming
See All in Programming
30年振りにコンパイラの定数整数除算を改善した
herumi
9
4.3k
「人を評価する AI」の設計と実装
ryoyanara
0
260
楽しそうなつよつよエンジニアと目が死んでる僕/A brilliant engineer having a blast, and dead-eyed me.
3l4l5
2
260
まずはプロンプトガイドを読もう、話はそれからだ
kiakiraki
1
230
業務時間外もAIに働いてもらう話
colorful12
2
8.8k
AIの中の人になってみる
htkym
0
140
VibeCodingからAgenticWorkflowへ
starfish719
0
940
komatsuna「分散システムにおけるバグ分析手法」
komatsunaqa
0
290
Hello, Hiroshima Geospatial Data! — Exploring DoboX with Python
ra0kley
0
120
Oxlintはいいぞ(続)
yug1224
1
480
freeeにおけるEvalsの実践例の紹介
freee
PRO
0
160
ハーネス設計入門 〜プロンプト、コンテキストの次〜
kinopeee
40
24k
Featured
See All Featured
The SEO Collaboration Effect
kristinabergwall1
1
530
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.1k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
HDC tutorial
michielstock
2
820
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
220
Code Review Best Practice
trishagee
74
20k
WCS-LA-2024
lcolladotor
0
810
Docker and Python
trallard
47
4.2k
AI: The stuff that nobody shows you
jnunemaker
PRO
9
950
Joys of Absence: A Defence of Solitary Play
codingconduct
1
450
Designing for humans not robots
tammielis
254
26k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
450
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 側で 修正されたが,本質的な問題に対する違和感は拭えない