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
390
Larastan に自作 OSS ライブラリのテストをぶっ壊された話
PHPerKaigi 2023 Day1 アンカンファレンス
mpyw
March 24, 2023
Tweet
Share
More Decks by mpyw
See All by mpyw
推測するな、計測せよ New Relic × Laravel 実践
mpyw
2
1.5k
排他制御のためだけに渋々 Redis 使ってませんか?
mpyw
7
2.1k
MySQL/Postgres におけるトランザクション分離レベル
mpyw
17
5.3k
PhpStorm と Docker の壊し方 〜モジュラモノリスへの幻想と失敗〜
mpyw
3
2.2k
Other Decks in Programming
See All in Programming
CSC509 Lecture 09
javiergs
PRO
0
110
CSC509 Lecture 08
javiergs
PRO
0
110
弊社の「意識チョット低いアーキテクチャ」10選
texmeijin
5
23k
現場で役立つモデリング 超入門
masuda220
PRO
13
2.9k
cXML という電子商取引の トランザクションを支える プロトコルと向きあっている話
phigasui
3
2.3k
とにかくAWS GameDay!AWSは世界の共通言語! / Anyway, AWS GameDay! AWS is the world's lingua franca!
seike460
PRO
1
560
Nuxtベースの「WXT」でChrome拡張を作成する | Vue Fes 2024 ランチセッション
moshi1121
1
530
役立つログに取り組もう
irof
27
8.7k
Tuning GraphQL on Rails
pyama86
2
1k
Vue SFCのtemplateでTypeScriptの型を活用しよう
tsukkee
3
1.5k
AWS IaCの注目アップデート 2024年10月版
konokenj
3
3.1k
Outline View in SwiftUI
1024jp
1
170
Featured
See All Featured
It's Worth the Effort
3n
183
27k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
131
33k
Large-scale JavaScript Application Architecture
addyosmani
510
110k
Thoughts on Productivity
jonyablonski
67
4.3k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
27
4.2k
Imperfection Machines: The Place of Print at Facebook
scottboms
264
13k
Visualization
eitanlees
144
15k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.8k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
26
2.1k
Art, The Web, and Tiny UX
lynnandtonic
296
20k
Navigating Team Friction
lara
183
14k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
37
1.8k
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 側で 修正されたが,本質的な問題に対する違和感は拭えない