Skip to content

test: add cov5/resid cov headers and use native display in test-prj-r…#872

Open
pengfeixx wants to merge 1 commit into
linuxdeepin:masterfrom
pengfeixx:cov-headers-native
Open

test: add cov5/resid cov headers and use native display in test-prj-r…#872
pengfeixx wants to merge 1 commit into
linuxdeepin:masterfrom
pengfeixx:cov-headers-native

Conversation

@pengfeixx

Copy link
Copy Markdown
Contributor

…unning.sh

Switch tests/test-prj-running.sh from offscreen to native display (env has real screen+camera) — recovers GUI/paint/cursor/screengrab coverage that offscreen skipped. Add ut_main_window_cov5 (shortcut-lambda sweep via emit QShortcut::activated) and ut_resid_cov (45 tests across ShapesWidget/ SubToolWidget/ToolBar/ScreenGrabber/CameraWidget/EventMonitor deep paths).

新增 cov5(快捷键 lambda 扫描)与 resid_cov(45 个用例覆盖 ShapesWidget 等 6 类深层路径);将 tests/test-prj-running.sh 由 offscreen 改为原生 显示(环境有真实屏幕+摄像头),恢复 GUI/paint/cursor/screengrab 覆盖。

Log: 新增深层路径 cov 用例并切换原生显示
Influence: 新增 cov5/resid 覆盖头文件,offscreen 改原生显示,src/ 行覆盖率提升约 3.5%。

…unning.sh

Switch tests/test-prj-running.sh from offscreen to native display (env has
real screen+camera) — recovers GUI/paint/cursor/screengrab coverage that
offscreen skipped. Add ut_main_window_cov5 (shortcut-lambda sweep via
emit QShortcut::activated) and ut_resid_cov (45 tests across ShapesWidget/
SubToolWidget/ToolBar/ScreenGrabber/CameraWidget/EventMonitor deep paths).

新增 cov5(快捷键 lambda 扫描)与 resid_cov(45 个用例覆盖 ShapesWidget
等 6 类深层路径);将 tests/test-prj-running.sh 由 offscreen 改为原生
显示(环境有真实屏幕+摄像头),恢复 GUI/paint/cursor/screengrab 覆盖。

Log: 新增深层路径 cov 用例并切换原生显示
Influence: 新增 cov5/resid 覆盖头文件,offscreen 改原生显示,src/ 行覆盖率提升约 3.5%。

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry @pengfeixx, you have reached your weekly rate limit of 500000 diff characters.

Please try again later or upgrade to continue using Sourcery

@deepin-ci-robot

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: lzwind, pengfeixx

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@deepin-ci-robot

Copy link
Copy Markdown

deepin pr auto review

★ 总体评分:95分

■ 【总体评价】

代码实现了截图录屏工具的测试覆盖率补充,通过白盒测试覆盖了大量残余分支
逻辑基本正确,测试结构清晰,但因单文件过大和部分冗余写法扣5分

■ 【详细分析】

  • 1.语法逻辑(基本正确)✓

测试代码通过ACCESS_PRIVATE_FIELD/FUN宏访问私有成员,正确使用GTest框架的TEST_F和EXPECT_NO_FATAL_FAILURE宏。在ut_main_window_cov5.h中TearDown故意不释放m_w以避免析构崩溃,在ut_resid_cov.h中通过#if 0合理屏蔽了会导致SEGV或链接错误的测试用例
潜在问题:故意内存泄漏在长期运行的测试进程中可能积累导致OOM,虽然当前逐用例隔离运行规避了此风险
建议:在TearDown中增加对环境变量的判断,在安全时可正常delete;对于禁用的测试用例,可考虑添加TODO注释标注未来修复计划

  • 2.代码质量(良好)✓

测试用例命名规范且具有自描述性,如mouseMoveRecordingArrowLine清晰表达了录制状态下箭头类型的鼠标移动分支。每个测试类前有详细的覆盖策略说明,禁用块也注明了具体原因
潜在问题:ut_resid_cov.h文件达到1029行,包含5个测试固件类,维护成本较高;部分测试用例使用lambda包装执行体如ut_resid_run0增加了不必要的嵌套层级
建议:将ut_resid_cov.h按被测类拆分为ut_shapeswidget_resid.h、ut_toolbar_resid.h等独立文件;移除仅包裹单次调用的冗余lambda

  • 3.代码性能(无性能问题)✓

测试代码不涉及复杂算法或高频系统调用,事件模拟均为单次触发,无性能瓶颈

  • 4.代码安全(存在0个安全漏洞)✓

漏洞对比统计:新增漏洞 0 个,减少漏洞 0 个,持平 0 个
本次变更为纯测试代码补充,不涉及生产逻辑,未引入命令注入、路径遍历等安全风险。test-prj-running.sh中移除QT_QPA_PLATFORM=offscreen改为native运行属于测试环境配置调整,且已配合关闭ASAN,不会引发安全问题

  • 建议:保持当前测试隔离策略,确保native平台运行时不影响宿主系统桌面环境

■ 【改进建议代码示例】

// 建议将 ut_resid_cov.h 按被测类拆分,以下为 shapeswidget 残余覆盖独立文件示例
// ut_shapeswidget_resid.h
#pragma once
#include <gtest/gtest.h>
#include "stub.h"
#include "addr_pri.h"
#include "../../src/widgets/shapeswidget.h"

using namespace testing;

ACCESS_PRIVATE_FIELD(ShapesWidget, bool, m_isRecording);
ACCESS_PRIVATE_FIELD(ShapesWidget, bool, m_isPressed);
ACCESS_PRIVATE_FUN(ShapesWidget, void(QPinchGesture *), pinchTriggered);

class ShapesWidgetResidTest : public Test {
public:
    ShapesWidget *m_w = nullptr;
    void SetUp() override {
        m_w = new ShapesWidget;
        m_w->resize(400, 300);
    }
    void TearDown() override {
        delete m_w;
        m_w = nullptr;
    }
};

TEST_F(ShapesWidgetResidTest, pinchTriggeredCenterFlag) {
    QPinchGesture pinch;
    pinch.setCenterPoint(QPointF(100, 100));
    pinch.setScaleFactor(1.5);
    pinch.setChangeFlags(QPinchGesture::ScaleFactorChanged |
                          QPinchGesture::CenterPointChanged);
    call_private_fun::ShapesWidgetpinchTriggered(*m_w, &pinch);
}

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.

3 participants