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
420
Larastan に自作 OSS ライブラリのテストをぶっ壊された話
PHPerKaigi 2023 Day1 アンカンファレンス
mpyw
March 24, 2023
Tweet
Share
More Decks by mpyw
See All by mpyw
推測するな、計測せよ New Relic × Laravel 実践
mpyw
3
1.7k
排他制御のためだけに渋々 Redis 使ってませんか?
mpyw
7
2.2k
MySQL/Postgres におけるトランザクション分離レベル
mpyw
18
5.7k
PhpStorm と Docker の壊し方 〜モジュラモノリスへの幻想と失敗〜
mpyw
3
2.4k
Other Decks in Programming
See All in Programming
PHPでお金を扱う時、終わりのない 謎の1円調査の旅にでなくて済む方法
nakka
3
1.2k
Develop Faster With FrankenPHP
dunglas
2
2.5k
家族・子育て重視/沖縄在住を維持しながらエンジニアとしてのキャリアをどのように育てていくか?
ug
0
240
小さく段階的リリースすることで深夜メンテを回避する
mkmk884
2
130
今から始めるCursor / Windsurf / Cline
kengo_hayano
0
110
Preact、HooksとSignalsの両立 / Preact: Harmonizing Hooks and Signals
ssssota
1
700
JavaOne 2025: Advancing Java Profiling
jbachorik
1
310
新卒から4年間、20年もののWebサービスと 向き合って学んだソフトウェア考古学
oguri
8
6.7k
RCPと宣言型ポリシーについてのお話し
kokitamura
2
150
RailsでCQRS/ESをやってみたきづき
suzukimar
2
1.5k
신입 안드로이드 개발자의 AI 스타트업 생존기 (+ Native C++ Code를 Android에서 사용해보기)
dygames
0
500
보일러플레이트 코드가 진짜 나쁜 건가요?
gaeun5744
0
370
Featured
See All Featured
Testing 201, or: Great Expectations
jmmastey
42
7.4k
Side Projects
sachag
452
42k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
12
610
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
22
2.6k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.8k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
129
19k
Scaling GitHub
holman
459
140k
A Modern Web Designer's Workflow
chriscoyier
693
190k
Writing Fast Ruby
sferik
628
61k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.5k
KATA
mclloyd
29
14k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
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 側で 修正されたが,本質的な問題に対する違和感は拭えない