test : add unit tests for _unshare_net_supported in parser_sandbox

未关闭
#2,444 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
2/5
预计耗时
1-3 小时
新手友好度
35/100
Issue 类型
功能
描述清晰度
描述清楚
活跃度
活跃
技术栈
python
领域
testing

调研方向

Read backend/secuscan/parser_sandbox.py to inspect _unshare_net_supported and its cache globals, then run the pytest command given in the issue. Add testing/backend/unit/test_parser_sandbox_unshare_supported.py with the four mocked platform and probe cases, resetting the cache around each test. Done means all four paths pass in isolation; the issue says tmdeveloper007 is handling it, so confirm availability before starting.

由索引模型根据 Issue 内容生成。

描述

Summary of What Needs to be Done:
Add unit tests for the _unshare_net_supported function in backend/secuscan/parser_sandbox.py. This function probes whether the unshare --user --net system call works on the host, and caches the result to avoid repeated probes.

The function has several distinct code paths that should each be tested:

  1. Non-Linux platform returns False immediately
  2. unshare binary not found returns False
  3. unshare binary found but probe fails (non-zero exit) returns False
  4. unshare binary found and probe succeeds (exit 0) returns True

Changes that Need to be Made:
Create testing/backend/unit/test_parser_sandbox_unshare_supported.py:

  • Test non-Linux path by patching platform.system() to return "Darwin"
  • Test unshare binary not found by patching shutil.which to return None
  • Test probe failure by patching subprocess.run to return a non-zero returncode
  • Test probe success by patching subprocess.run to return zero returncode
  • The function uses module-level caching (_unshare_capability_checked, _unshare_available): each test case needs to reset these globals before and after to ensure test isolation
  • Import the real production function directly: from backend.secuscan.parser_sandbox import _unshare_net_supported
  • Run with python3 -m pytest testing/backend/unit/test_parser_sandbox_unshare_supported.py -v --noconftest

Impact that it would Provide:

  • Tests a code path (capability detection) that is currently completely untested
  • Prevents regressions when refactoring the unshare support detection logic
  • Ensures the function behaves correctly on different platforms and when the unshare binary is unavailable
  • Uses standard unittest.mock patching, no heavy framework dependencies

Note: This task is being handled by tmdeveloper007 — please assign to that account when picking it up.

主要语言
Python
星标
36
派生
234
PR 合并指标
30 天内没有已合并 PR

环境准备

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

utksh1/SecuScan 的其他 Issue

查看 utksh1/SecuScan 的全部 Issue

相似的 Issue

更多 Python Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。