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
プラグインで拡張される Context をtype-safe にする難しさと設計判断
kazupon
2
570
Java × distroless で 軽量なコンテナイメージを / Java on Distroless
contour_gara
0
480
PHPで使える日時の表現と、その知り方 #frontend_phpcon_do
o0h
PRO
0
180
AI 時代のソフトウェア設計の学び方
masuda220
PRO
29
12k
不変条件と整合性境界—ビジネスが決める設計判断と実現パターン / Invariants and Consistency Boundaries
nrslib
13
3.4k
AIエージェントの隔離技術の徹底比較
kawayu
0
460
Oxcを導入して開発体験が向上した話
yug1224
4
280
[2026年度第1回ORセミナー] 計画最適化ベンチャーと競技プログラミング人材
terryu16
0
240
AI駆動開発勉強会 広島支部 第一回勉強会 AI駆動開発概要とワークショップ
hayatoshimiu
0
440
Lessons from Spec-Driven Development
simas
PRO
0
130
tsserverとは何だったのか、これからどうなるのか
nowaki28
1
440
肥大化するレガシーコードに立ち向かうためのインターフェース分離と依存の逆転 / JJUG CCC 2026 Spring
hirokunimaeta
0
480
Featured
See All Featured
GitHub's CSS Performance
jonrohan
1033
470k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
230
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
1.1k
The browser strikes back
jonoalderson
0
1.1k
How STYLIGHT went responsive
nonsquared
100
6.2k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.9k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
440
Balancing Empowerment & Direction
lara
6
1.1k
What's in a price? How to price your products and services
michaelherold
247
13k
Visualization
eitanlees
152
17k
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.6k
Unsuck your backbone
ammeep
672
58k
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 側で 修正されたが,本質的な問題に対する違和感は拭えない