pySCG: Add a testing framework for Python code examples and documentation
还没有人认领这个 Issue。
- #1011 来自 @tommcd —— 已关闭,未合并
评估
- 难度
- 5/5
- 预计耗时
- 一周以上
- 新手友好度
- 20/100
- Issue 类型
- 功能
- 描述清晰度
- 描述清楚
- 活跃度
- 停滞
- 技术栈
- github-actions, python
- 领域
- ci-cd, documentation, testing
调研方向
The issue points to docs/Secure-Coding-Guide-for-Python/tests/, pyproject.toml, tox.ini, and .github/workflows/python-tests.yml; begin with tests/README.md and the existing test results in KNOWN_ISSUES.md. The described framework spans code examples, Markdown checks, link validation, and CI across multiple Python versions. Done means those checks and CI behavior match the listed requirements; the issue notes 44 existing problem files for follow-up.
由索引模型根据 Issue 内容生成。
描述
Summary
Add a pytest-based testing framework to validate Python code examples and Markdown documentation structure across the Secure Coding Guide for Python.
[!NOTE]
We moved repo since creating this source code for this solution is on a closed PR in source
https://github.com/ossf/wg-best-practices-os-developers/pull/1011
Motivation
Currently, there is no automated validation of:
- Python code syntax and deprecation warnings in examples
- Markdown documentation structure conformance to the template
- Internal links and code file references
- Consistency across 100+ CWE articles
This leads to potential issues with broken examples, missing documentation sections, and broken links that could confuse contributors and readers.
Solution
Implement a comprehensive testing framework that validates:
1. Python Code Quality
- Syntax validation using
ast.parse() - Deprecation warning detection via subprocess execution
- Expected output validation against documented examples
- Support for expected failure markers (intentional issues)
- Automatic cleanup of test artifacts
2. Markdown Documentation Structure
- Required sections validation (title, introduction, Non-Compliant, Compliant, Automated Detection, Related Guidelines, Bibliography)
- Code file reference validation (compliant01.py, noncompliant01.py exist)
- Table structure validation (Automated Detection, Related Guidelines, Bibliography)
- Section order validation
3. Link Validation
- Internal link validation in README.md files
- Index table link validation
- Integration with lychee for comprehensive link checking (internal only in CI, external available locally)
4. CI/CD Integration
- GitHub Actions workflow for automated testing on PRs
- Smart testing: Only tests changed CWE directories on PRs (fast, ~1 min)
- Full suite: Runs all tests on pushes to main (~3 min)
- Multi-version testing (Python 3.9-3.14)
- Coverage reporting to Codecov
- Fast execution with uv package manager
5. Local Development Support
- Easy setup with
uv sync --group test - Multi-version testing with tox
- Parallel execution support with pytest-xdist
- Clean issue reporting with
generate_issue_report.py - Comprehensive documentation in tests/README.md
Implementation Details
- Uses pytest with parametrized tests for all Python and Markdown files
- Organized test utilities in
tests/utils/for maintainability - PEP 735 dependency groups for clean dependency management
- Automatic cleanup of test artifacts (database files, temp files, etc.)
- Cross-platform Python-based issue report generator
Benefits
- Ensures all code examples are syntactically valid and run without warnings
- Validates documentation consistency across all CWE articles
- Catches broken links and missing files before merge
- Provides clear, actionable error messages for contributors
- Reduces review burden by automating quality checks
- Supports Python 3.9-3.14 compatibility testing
- Fast CI/CD with smart testing (only changed files on PRs)
Current State
The framework identifies issues in 44 files (documented in KNOWN_ISSUES.md):
- 31 Documentation files with issues:
- Missing required sections (Bibliography, Automated Detection, etc.)
- Missing required tables
- Section order issues
- Missing code file references
- 13 Python code files with issues:
- 11 files with execution timeouts (intentional infinite loops/blocking operations)
- 1 file with DeprecationWarning
- 1 file with output mismatch
These pre-existing issues can be addressed in follow-up PRs. The testing framework will prevent new issues from being introduced.
Files Added/Modified
New Files:
.github/workflows/python-tests.yml- CI/CD workflow with smart testingdocs/Secure-Coding-Guide-for-Python/tests/- Complete test frameworkdocs/Secure-Coding-Guide-for-Python/pyproject.toml- Project configurationdocs/Secure-Coding-Guide-for-Python/tox.ini- Multi-version testing configdocs/Secure-Coding-Guide-for-Python/.gitignore- Ignore test artifactsdocs/Secure-Coding-Guide-for-Python/generate_test_summary.sh- Summary scriptdocs/Secure-Coding-Guide-for-Python/KNOWN_ISSUES.md- Reference of existing issues
Modified Files:
docs/Secure-Coding-Guide-for-Python/CONTRIBUTING.md- Added testing instructions- Fixed typo: Renamed
compliants02.py→compliant02.py
Testing
All 765 tests collected, 531 passed, 80 failures (pre-existing issues), 154 skipped.
Tests run successfully across Python 3.9-3.14 in CI/CD.
- 主要语言
- Python
- 星标
- 2
- 派生
- 2
- 平均合并
- 11 分钟
- 30 天内合并 PR
- 2
环境准备
- 没有 Dockerfile 或 Docker Compose 文件
- 没有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
ossf/python-secure-coding-guide 的其他 Issue
-
pyscg-0051 should use a context manager可能已有人在做 @s19110 于 8 天前认领。 未关闭bug
难度 2/5 1-3 小时 新手友好度 68/100
ossf/python-secure-coding-guide#1 · 4 条评论 · 已指派 1 人 ·
-
难度 3/5 1-2 天 新手友好度 65/100
ossf/python-secure-coding-guide#29 · 1 条评论 ·
-
难度 5/5 一周以上 新手友好度 25/100
-
难度 4/5 3-5 天 新手友好度 25/100
-
难度 4/5 3-5 天 新手友好度 25/100
查看 ossf/python-secure-coding-guide 的全部 Issue
相似的 Issue
-
documentation type/bug
难度 2/5 1-3 小时 新手友好度 78/100
维护者通常 1 天内回复
-
难度 1/5 1 小时以内 新手友好度 65/100
StevenBlack/hosts#3299 ·
-
`garak --report` overwrites the input report when its name has no ".report"可能已有人在做 @0z5a 今天认领。 未关闭needs-triage
难度 2/5 半天 新手友好度 72/100
维护者通常 2 天内回复
-
trace: Pi's 1-hour cache writes are priced at 1.25x, but billed at 2x可能已有人在做 @Shizoqua 今天认领。 未关闭
难度 2/5 1-3 小时 新手友好度 82/100
microsoft/TokenEconomizer#221 ·
维护者通常 1 天内回复
-
plot_graph crashes when a mesh node has no m2m edge可能已有人在做 @tygvi 今天认领。 未关闭
难度 2/5 1-3 小时 新手友好度 78/100
mllam/neural-lam#883 · 1 条评论 ·
维护者通常 2 天内回复