test(main): ダウンロード側の関門にテストを足す - #2468
Merged
Merged
Conversation
install 側の同型の関門(resolveInside / safeRemove)は install.test.ts と apmPath.test.ts で覆われているのに、ダウンロード側は 1 件も無かった。 download.ts が守っているのは 2 つ。subDir 経由でデータフォルダの外へ 書き込ませないこと(isParent)と、将来どこかで decode されるとパス区切りに 化ける値(%2f / %5c)をファイル名として受け付けないこと。tempFile.ts の existsTempFile も同じ基点で守っている。 実際のダウンロードは行わず、url にローカルパスを渡してコピー経路 (url が http で始まらない側)だけを通す。electron-dl の download は 呼ばれたら例外を投げるモックにして、ネットワーク経路へ入らないことも 同時に保証する。 関門を外すとテストが落ちることを確認済み。脱出先は userData の親を 掃除対象の root に含める形にした — os.tmpdir() 直下に置くと、関門が 壊れたときに実ファイルが残り、次回以降のテストがそれを拾って誤って落ちる。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
内容
install 側の同型の関門(
resolveInside/safeRemove)はinstall.test.tsとapmPath.test.tsで覆われているのに、ダウンロード側は 1 件も覆われていませんでした。download.tsが守っているのは 2 つです。tempFile.tsのexistsTempFileも同じ基点で守っています。テストの作り
実際のダウンロードは行いません。
urlにローカルパスを渡してコピー経路(urlがhttpで始まらない側)だけを通します。electron-dlのdownloadは呼ばれたら例外を投げるモックにしてあるので、「ネットワーク経路へ入っていないこと」も同時に保証されます。8 件:
%2f/%5c/ 大文字%2F)archiveサブディレクトリへ分けるkeyTextを渡すとハッシュを前置した名前になるloadCacheは既存ファイルがあればコピーせずそのパスを返す(中身を見ないことも明示)existsTempFileがデータフォルダの中を解決する / 外へ出るパスを拒む効いていることの確認
関門を実際に外して、対応するテストが落ちることを確認しました。
脱出先は
userDataの親を掃除対象のrootに含める形にしてあります。os.tmpdir()直下に置くと、関門が壊れたときに実ファイルが残り、次回以降のテストがそれを拾って誤って落ちます(実際に一度踏みました)。挙動は変えていません。
調査と文面の作成に Claude Code を使用しています。