Skip to content

test: GetDocDataObject001 のエラー(ドライブ文字大小依存) #2499

Description

@hpmy-dev

修正済みでPRしようとしましたが、回避策もあるので報告だけさせて頂きます。

問題内容

test: GetDocDataObject001 でエラー

再現手順

コマンドプロンプトでcd c:\で移動した場合に、ドライブ名が小文字の場合にエラー

再現頻度

Image
test-window.cpp: error: Value of: memory.wstring()
Expected: is equal to L"c:\workspace\git\sakura\Win32\Release\backup-agent-target.txt"
  Actual: L"C:\workspace\git\sakura\Win32\Release\backup-agent-target.txt"

原因

本テストは2つのクリップボード形式でパスを取得・比較していますが、形式により
ドライブ文字の扱いが異なります。

  • CFSTR_FILENAMEW(シェルのファイル名形式): Windows シェルがドライブ文字を
    大文字へ正規化する(c:C:)。
  • CF_UNICODETEXT(sakura 独自形式): FileOpen に渡したパスをそのまま保持する
    c: のまま)。

期待値の targetPath.native()GetIniFileName() 由来のドライブ文字大小を
そのまま保持するため、CFSTR_FILENAMEW 側の比較でのみ、ドライブ文字の大小が
食い違い StrEq(大小区別)で失敗します。
プロダクト側の不具合ではなく、テストの比較がドライブ文字表記に依存している点が原因です。

対応

比較対象を緩めず(フルパス一致の検証は維持)、CFSTR_FILENAMEW 側の比較に限り、
期待値のドライブ文字を大文字へ正規化してから比較するようにしました。
CF_UNICODETEXT 側は従来どおり targetPath.native() と比較します(正規化不要)。

変更ファイル

  • src/test/cpp/tests1/test-window.cpp(テストソースのみ)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions