Skip to content

トレイウィンドウのメッセージ配送をテストする#2533

Merged
berryzplus merged 14 commits into
sakura-editor:masterfrom
berryzplus:feature/improve_traywnd_test
Jul 19, 2026
Merged

トレイウィンドウのメッセージ配送をテストする#2533
berryzplus merged 14 commits into
sakura-editor:masterfrom
berryzplus:feature/improve_traywnd_test

Conversation

@berryzplus

Copy link
Copy Markdown
Contributor

PR対象

  • アプリ(サクラエディタ本体)
  • テストコード

カテゴリ

  • 改善

PR の背景

  • 先行 issue はとくに作成していません。

背景にあるのは「カバレッジ低過ぎ問題(#2526)」です。

仕様・動作説明

  • メッセージ配送のテストを導入して「ウィンドウクラスは基本的にテストしづらい」に対策します。

ウィンドウクラスはメッセージハンドラをメンバーに持つため、本質的にテストしづらいです。
※メッセージハンドラはWindows APIの生構造体が引数となるため。

しかし、クラスの役割 ≒ メッセージ配送 と置けば、
メッセージ配送が正しく行われるか と
配送されたメッセージが正しく(?)処理されるか に評価観点を分離できます。

サクラエディタの場合、メッセージ配送が正しく行われることを保証できないコードが結構あったりするわけですが、これまでは「たたき台」にできる評価コードすら一本もない状態でした。

本件、勝手にやります。

PR の影響範囲

テスト内容

関連 issue, PR

参考資料

@github-actions

github-actions Bot commented Jul 18, 2026

Copy link
Copy Markdown

Test Results

1 139 tests  +23   1 139 ✅ +23   3m 49s ⏱️ +15s
  107 suites + 1       0 💤 ± 0 
    1 files   ± 0       0 ❌ ± 0 

Results for commit a01decc. ± Comparison against base commit 5d2d293.

♻️ This comment has been updated with latest results.

@berryzplus

Copy link
Copy Markdown
Contributor Author

MinGWビルドの失敗について。

  • ローカルでは通っている。
  • 今回修正は「トレイクリックメニューでしか動かせないパス」を素直に「トレイクリックのメニュレート」で実現しているため、テスト成功率がそもそも高くない。
  • 今回修正と関係ない実行時エラーなので、何度もリトライすればそのうち通る。

あと何回かリトライしてダメなようなら、「トレイクリックをエミュレートする」を最小限に抑える変更を含めてしまうことも考えようかと思ってる。

1本のPull Requestに複数の意図が入り込むと、どれだけアプリに対する理解が深くても「これなんだっけ?」になりがち。

無理な場合を除いて、できるだけソレは避けたい。

@berryzplus

Copy link
Copy Markdown
Contributor Author

ぼくがサクラエディタに関わっている目的には、「先端技術のキャッチアップを怠らないよう、勉強の機会を得る」ということが含まれている。

GitHub Actionsで発生したエラーを GitHub Copilot(≒AIアシスタント) に見て貰っている。
このエラーの原因は seg fault なので、「どこを修正すれば直ります。」を判断しづらいはず。

スパッと直せたら Copilot すげぇぇぇ! になるよね。

ならんとは思うけど。

@berryzplus

Copy link
Copy Markdown
Contributor Author

ん? ExpandParameter_mixed の失敗が2回続けて再現しただと・・・?

@berryzplus

Copy link
Copy Markdown
Contributor Author

OK。Copilot君正しい。 > #2534

Copilot すげぇぇぇ! になった。

ただ、このまま入れるのは違う気がする。

@berryzplus

berryzplus commented Jul 19, 2026

Copy link
Copy Markdown
Contributor Author

さて。どうしたものか。

選択肢

  • CFileNameManager が影響しない部分のみにして入れる
  • CFileNameManager のシングルトンを解除してから入れる
  • いったん取り下げる

最善は1つ目。
2つ目のシングルトン解除は現実的に無理。
3つ目をやるとこれまで通り、永遠に改善が完了しない。

@berryzplus

Copy link
Copy Markdown
Contributor Author

テスト実行が完了しない不具合発生。(クリティカル。)

@berryzplus

Copy link
Copy Markdown
Contributor Author

テストが完了しなかった理由は、以下。

トレイクリックメニューからGrepダイアログを表示し、OKボタンを押す
のテストから
共有メモリから履歴を読み込んでGrepダイアログにセットする
を削ったために、
OKボタンを押してもGrepダイアログが閉じられない
(検索条件を入力してくださいと表示される)
(Grepが実行されないので永遠に待機。)

仕方ないので、障害になってる部分を直す最低限の修正を入れてリトライ中。

@sonarqubecloud

Copy link
Copy Markdown

@berryzplus
berryzplus marked this pull request as ready for review July 19, 2026 07:21
@berryzplus

Copy link
Copy Markdown
Contributor Author

CFileNameManager以外の TSingleton も移行しておいたほうが良さげ。

@berryzplus

Copy link
Copy Markdown
Contributor Author

トレイウィンドウのテストとしてはまだ問題が残っているけれど、メッセージ配送のテストはできているのでマージしてしまう。

@berryzplus
berryzplus merged commit 46f47d6 into sakura-editor:master Jul 19, 2026
17 checks passed
@berryzplus
berryzplus deleted the feature/improve_traywnd_test branch July 19, 2026 07:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant