Skip to content

MSYS2的UCRT64环境中编译1.17.0,测试失败 #1182

Description

@TomoeMami

报错节选:

 Start 1: rime_test
1/1 Test #1: rime_test ........................***Failed    0.30 sec
[==========] Running 90 tests from 30 test suites.
[----------] Global test environment set-up.
……
[ RUN      ] RimeSyllabifierTest.TrimLeadingDelimiters
D:/msys64/home/riko/MINGW-packages/mingw-w64-librime/src/librime-1.17.0/test/syllabifier_test.cc:170: Failure
Expected equality of these values:
 input.length()
   Which is: 3
 g.interpreted_length
   Which is: 0
D:/msys64/home/riko/MINGW-packages/mingw-w64-librime/src/librime-1.17.0/test/syllabifier_test.cc:171: Failure
Expected equality of these values:
 2
 g.vertices.size()
   Which is: 1

D:/msys64/home/riko/MINGW-packages/mingw-w64-librime/src/librime-1.17.0/test/syllabifier_test.cc:172: Failure
Value of: g.vertices.end() == g.vertices.find(3)
 Actual: true
Expected: false
[  FAILED  ] RimeSyllabifierTest.TrimLeadingDelimiters (4 ms)
……
[ RUN      ] RimeSyllabifierTest.TrimBothLeadingAndTrailingDelimiters
D:/msys64/home/riko/MINGW-packages/mingw-w64-librime/src/librime-1.17.0/test/syllabifier_test.cc:204: Failure
Expected equality of these values:
 input.length()
   Which is: 5
 g.interpreted_length
   Which is: 0

D:/msys64/home/riko/MINGW-packages/mingw-w64-librime/src/librime-1.17.0/test/syllabifier_test.cc:205: Failure
Expected equality of these values:
 2
 g.vertices.size()
   Which is: 1

D:/msys64/home/riko/MINGW-packages/mingw-w64-librime/src/librime-1.17.0/test/syllabifier_test.cc:206: Failure
Value of: g.vertices.end() == g.vertices.find(5)
 Actual: true
Expected: false

[  FAILED  ] RimeSyllabifierTest.TrimBothLeadingAndTrailingDelimiters (0 ms)
[----------] 9 tests from RimeSyllabifierTest (8 ms total)

……

[----------] Global test environment tear-down
[==========] 90 tests from 30 test suites ran. (77 ms total)
[  PASSED  ] 88 tests.
[  FAILED  ] 2 tests, listed below:
[  FAILED  ] RimeSyllabifierTest.TrimLeadingDelimiters
[  FAILED  ] RimeSyllabifierTest.TrimBothLeadingAndTrailingDelimiters

2 FAILED TESTS
 YOU HAVE 1 DISABLED TEST

相关测试函数:TEST_F(RimeSyllabifierTest, TrimLeadingDelimiters) {
因为我不懂C,在AI的指导下一番调试之后,它给出了诊断:

输出表明,BuildSyllableGraph 在图构建阶段完全没有生成任何边,顶点只有起点 0。这很可能是因为在 UCRT64 环境下,SpellingAccessor 在 spelling_map_ 为空时的行为与测试预期不符,导致拼写插入失败。
原始测试中 Build(keyset) 没传 script,导致 prism 内部 spelling_map_ 保持为 nullptr。虽然 SpellingAccessor 对 null 有降级处理(直接返回 spelling_id 作为音节),但在 UCRT64 编译环境下,可能因为结构对齐、优化或未定义行为导致 while (!accessor.exhausted()) 循环内的插入逻辑异常,最终 spellings 被判为空,边被丢弃。

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions