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
430
Larastan に自作 OSS ライブラリのテストをぶっ壊された話
PHPerKaigi 2023 Day1 アンカンファレンス
mpyw
March 24, 2023
Tweet
Share
More Decks by mpyw
See All by mpyw
推測するな、計測せよ New Relic × Laravel 実践
mpyw
4
1.7k
排他制御のためだけに渋々 Redis 使ってませんか?
mpyw
7
2.3k
MySQL/Postgres におけるトランザクション分離レベル
mpyw
18
5.7k
PhpStorm と Docker の壊し方 〜モジュラモノリスへの幻想と失敗〜
mpyw
4
2.4k
Other Decks in Programming
See All in Programming
generative-ai-use-cases(GenU)の推しポイント ~2025年4月版~
hideg
1
390
Optimizing JRuby 10
headius
0
590
Storybookの情報をMCPサーバー化する
shota_tech
2
990
プロフェッショナルとしての成長「問題の深掘り」が導く真のスキルアップ / issue-analysis-and-skill-up
minodriven
8
1.9k
2025-04-25 GitHub Copilot Agent ライブデモ(スクリプト)
goataka
0
110
カウシェで Four Keys の改善を試みた理由
ike002jp
1
130
Bedrock × Confluenceで簡単(?)社内RAG
iharuoru
1
120
監視 やばい
syossan27
12
10k
The Nature of Complexity in John Ousterhout’s Philosophy of Software Design
philipschwarz
PRO
0
170
In geheimer Mission: AI Agents entwickeln
joergneumann
0
110
ComposeでのPicture in Picture
takathemax
0
130
Cursor/Devin全社導入の理想と現実
saitoryc
29
22k
Featured
See All Featured
Product Roadmaps are Hard
iamctodd
PRO
53
11k
The Invisible Side of Design
smashingmag
299
50k
BBQ
matthewcrist
88
9.6k
Being A Developer After 40
akosma
91
590k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
2.9k
[RailsConf 2023] Rails as a piece of cake
palkan
54
5.5k
Six Lessons from altMBA
skipperchong
28
3.8k
A Modern Web Designer's Workflow
chriscoyier
693
190k
Docker and Python
trallard
44
3.4k
YesSQL, Process and Tooling at Scale
rocio
172
14k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
26k
KATA
mclloyd
29
14k
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 側で 修正されたが,本質的な問題に対する違和感は拭えない