Repository navigation
test: Server 热插拔与杂项单元测试(UT-devicemanager-30) - #924
Conversation
|
Sorry @add-uos, your pull request is larger than the review limit of 150,000 diff characters |
|
Warning
详情 {
"export": {
"deepin-devicemanager-server/tests/run-ut.sh": {
"b": [
"export QT_QPA_PLATFORM=${QT_QPA_PLATFORM:-offscreen}",
"export ASAN_OPTIONS=${ASAN_OPTIONS:-detect_leaks=1}",
" export LSAN_OPTIONS=suppressions=\"$SCRIPT_DIR/lsan_suppressions.txt\"",
" export projectdir=\"$PROJECT_ROOT\"",
" export builddir=\"build-${TEST_DIR}\"",
" export reportdir=\"build-${TEST_DIR}\"",
" export GTEST_XML_DIR=\"$GTEST_XML_DIR\"",
" export COVERAGE_INFO=\"$BUILD_DIR/coverage.info\""
]
}
}
} |
|
Warning
详情 {
"export": {
"deepin-devicemanager-server/tests/run-ut.sh": {
"b": [
"export QT_QPA_PLATFORM=${QT_QPA_PLATFORM:-offscreen}",
"export ASAN_OPTIONS=${ASAN_OPTIONS:-detect_leaks=1}",
" export LSAN_OPTIONS=suppressions=\"$SCRIPT_DIR/lsan_suppressions.txt\"",
" export projectdir=\"$PROJECT_ROOT\"",
" export builddir=\"build-${TEST_DIR}\"",
" export reportdir=\"build-${TEST_DIR}\"",
" export GTEST_XML_DIR=\"$GTEST_XML_DIR\"",
" export COVERAGE_INFO=\"$BUILD_DIR/coverage.info\""
]
}
}
} |
|
Warning
详情 {
"export": {
"deepin-devicemanager-server/tests/run-ut.sh": {
"b": [
"export QT_QPA_PLATFORM=${QT_QPA_PLATFORM:-offscreen}",
"export ASAN_OPTIONS=${ASAN_OPTIONS:-detect_leaks=1}",
" export LSAN_OPTIONS=suppressions=\"$SCRIPT_DIR/lsan_suppressions.txt\"",
" export projectdir=\"$PROJECT_ROOT\"",
" export builddir=\"build-${TEST_DIR}\"",
" export reportdir=\"build-${TEST_DIR}\"",
" export GTEST_XML_DIR=\"$GTEST_XML_DIR\"",
" export COVERAGE_INFO=\"$BUILD_DIR/coverage.info\""
]
}
}
} |
|
Warning
详情 {
"export": {
"deepin-devicemanager-server/tests/run-ut.sh": {
"b": [
"export QT_QPA_PLATFORM=${QT_QPA_PLATFORM:-offscreen}",
"export ASAN_OPTIONS=${ASAN_OPTIONS:-detect_leaks=1}",
" export LSAN_OPTIONS=suppressions=\"$SCRIPT_DIR/lsan_suppressions.txt\"",
" export projectdir=\"$PROJECT_ROOT\"",
" export builddir=\"build-${TEST_DIR}\"",
" export reportdir=\"build-${TEST_DIR}\"",
" export GTEST_XML_DIR=\"$GTEST_XML_DIR\"",
" export COVERAGE_INFO=\"$BUILD_DIR/coverage.info\""
]
}
}
} |
- 引入 tests/3rdparty/stub(stub-ext:set_lamda/ADDR 等标准打桩能力) - tests/CMakeLists.txt 末尾追加:测试目标接入 stub-ext、QtTest 模块、plugin.cpp 重新纳入、新增 customgpuinfo-test 独立二进制(仅追加,不改既有行) - 新增 run-ut.sh 一键编译/运行/覆盖率脚本与 LSan 抑制清单、ut-summary 生成脚本
- 26 用例覆盖构造初始缓存、curHwinfoUsbInfo(base64(MD5) 唯一键生成、hub 过滤、行数不足跳过、SysFS Device Link 优先)、getMapInfo、isUsbDevicesChanged、run、setWorkingFlag、slotUsbChanged(信号转发/超时窗口)、updateMemUsbInfo - 每用例注入 // Arrange/Act/Assert 三段注释,每用例 ≥2 有效断言,顶部附用例计数声明表格 - hwinfo 输出、QProcess、定时器等外部依赖全部打桩,不依赖真实设备
- 覆盖构造初始化(udev 上下文/监听器/1s 轮询定时器)、monitor 主循环(工作标志退出、select 超时重入、fd 未就绪、空设备、连接/断开/蓝牙事件)、setWorkingFlag、slotTimeout(10s 防抖窗口) - udev 库函数、select、QProcess 等 C 层依赖以 mangled-name extern C 打桩;注入 AAA 注释与用例计数声明
- 覆盖构造建立 DBus 接口、单例获取、disableOutDevice/disableInDevice/updateWakeup/setMonitorWorkingDBFlag 的无效接口与空接口跳过路径、monitorWorkingDBFlag 的有效回复/无效回复/无效接口/空接口四路径 - QDBusAbstractInterface::call 经私有导出 doCall(mangled-name)打桩,不依赖真实 DBus 总线
- DSMRegister 创建 MainJob 服务对象并返回 0、空名称路径、DSMUnRegister deleteLater 清理路径 - MainJob::SetUp 打桩 monitorWorkingDBFlag 为 false,防止 DetectThread 监听循环导致用例收尾 SIGABRT(修复既有用例)
- 新增 fixture 继承 ::testing::Test(SetUp/TearDown 内 stub.clear() 收口) - beginPointQt/endPointQt 经 QDateTime::currentMSecsSinceEpoch 打桩控制时钟,覆盖耗时计算与 0ms 边界;beginPointLinux 多点位独立记录;clear 清空语义 - 既有 UT_001-003 空断言用例重写为双断言;全部用例补齐 AAA 注释与三段式命名
- 经 #define main 重命名引入 main(),覆盖 getGpuBaseInfo(QProcess 打桩:进程未结束/字段解析)、getGpuMemInfoForFTDTM(QFile 打桩:打开失败/空内容/无匹配/MB 转换/循环边界多元素)、main 退出码与 stdout 输出(成功/失败/空映射/多元素) - getGpuMemInfoForFTDTM 打桩覆盖 main 的循环路径与退出码
The stub helper files (stub-shadow.cpp, stub-shadow.h, stubext.h) added by this PR reuse headers inherited from an older copy, whose copyright range "2021 - 2023" no longer satisfies the license-check CI. Replace it with a single 2026 SPDX-FileCopyrightText year since these files are effectively new in this PR, so the SPDX summary reports 0 failures.
|
Warning
详情 {
"export": {
"deepin-devicemanager-server/tests/run-ut.sh": {
"b": [
"export QT_QPA_PLATFORM=${QT_QPA_PLATFORM:-offscreen}",
"export ASAN_OPTIONS=${ASAN_OPTIONS:-detect_leaks=1}",
" export LSAN_OPTIONS=suppressions=\"$SCRIPT_DIR/lsan_suppressions.txt\"",
" export projectdir=\"$PROJECT_ROOT\"",
" export builddir=\"build-${TEST_DIR}\"",
" export reportdir=\"build-${TEST_DIR}\"",
" export GTEST_XML_DIR=\"$GTEST_XML_DIR\"",
" export COVERAGE_INFO=\"$BUILD_DIR/coverage.info\""
]
}
}
} |
deepin pr auto review🤖 AI 代码审查报告📊 总体评价
🔍 详细分析1. 语法逻辑 ✅评价: 语法正确,逻辑清晰 ✅ 通过 潜在问题: 建议: [] 2. 代码质量 ✅评价: 代码结构清晰,注释完整 ✅ 通过 潜在问题: 建议: ['1. 将 run-ut.sh 中的 STUB_SRC 改为环境变量或相对路径,如 STUB_SRC=${STUB_SRC:-$SCRIPT_DIR/3rdparty/stub}', '2. 将 stubQProcessOutput 等公共打桩辅助函数提取到 tests/common/stub_helpers.h 中复用'] 3. 代码性能 ✅评价: 性能良好,资源使用合理 ✅ 通过 潜在问题: 建议: [] 4. 代码安全 🔒评价: 存在0个安全漏洞 ✅ 通过
安全漏洞详情: 建议: [] 💡 改进建议代码示例# run-ut.sh 建议修复:将硬编码路径改为环境变量回退 # 修改前: # STUB_SRC="/home/ut005769@uos/.agents/skills/qt-autotest-generator/scripts/../templates/stub-ext" # 修改后: STUB_SRC="${STUB_SRC:-$SCRIPT_DIR/3rdparty/stub}" STUB_DST="$SCRIPT_DIR/3rdparty/stub" if [ -d "$STUB_DST" ]; then
print_info "stub-ext already present: $STUB_DST"
elif [ -d "$STUB_SRC" ]; then
mkdir -p "$STUB_DST"
cp -r "$STUB_SRC/." "$STUB_DST/"
print_info "Synced stub-ext from: $STUB_SRC"
else
print_warning "stub-ext source not found: $STUB_SRC"
print_warning "Manual copy: cp -r <stub-ext>/ ${TEST_DIR}/3rdparty/stub/"
fi本报告由 AI 代码审查工具自动生成 |
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: add-uos, lzwind The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:Approvers can indicate their approval by writing |
|
/forcemerge |
|
This pr force merged! (status: unstable) |
UT-devicemanager-30:Server 热插拔与杂项单元测试(qt-autotest-generator)
基于 upstream/master
6ccddaf4的ut-t30任务分支,为 deepin-devicemanager-server 补充/重写 Google Test 单元测试,覆盖 7 个目标文件:测试结果
deepin-devicemanager-server-test:293/293 通过customgpuinfo-test:16/16 通过分级覆盖率(7 个目标文件,gcovr 采集)
* 高分支数主要来自 QString/QMap 等 Qt 内联模板展开的从未执行分支记录(taken0=0),目标源码分支已全部双向覆盖;2 个未匹配方法为 plugin.cpp 的 extern "C" 自由函数(脚本按
class::name(匹配所致),实际均已覆盖。打桩策略(不依赖真实设备/DBus/文件系统)
#define main重命名引入,独立customgpuinfo-test二进制既有用例修复
monitorWorkingDBFlag,修复收尾 SIGABRTCMake
仅追加(
[ut-t30]注释段),不改既有行;inventory-summary.md、覆盖率报告等中间产物不入库。