Files
wehub-resource-sync 91e75e620b
CI: cua-driver distro-compat matrix / Resolve release version (push) Waiting to run
CI: cua-driver distro-compat matrix / debian:12 (glibc 2.36) (push) Blocked by required conditions
CI: cua-driver distro-compat matrix / fedora:41 (glibc 2.40) (push) Blocked by required conditions
CI: cua-driver distro-compat matrix / rockylinux:9 (glibc 2.34) (push) Blocked by required conditions
CI: cua-driver distro-compat matrix / ubuntu:22.04 (glibc 2.35) (push) Blocked by required conditions
CI: cua-driver distro-compat matrix / ubuntu:24.04 (glibc 2.39) (push) Blocked by required conditions
CI: cua-driver distro-compat matrix / Distro compat summary (push) Blocked by required conditions
CI: Nix Linux Rust source / Nix / compositor build (push) Waiting to run
CI: Nix Linux Rust source / Nix / driver package (push) Waiting to run
CI: Nix Linux Rust source / Nix / Rust unit tests (push) Waiting to run
CI: Rust Linux unit / Rust Linux unit and compile (push) Waiting to run
CI: Rust Windows unit / Rust Windows unit and compile (push) Waiting to run
CI: SPDX Headers / Check SPDX headers (warn-only) (push) Waiting to run
CD: Docs MCP Server / build (linux/amd64) (push) Waiting to run
CD: Docs MCP Server / build (linux/arm64) (push) Waiting to run
CD: Docs MCP Server / merge (push) Blocked by required conditions
chore: import upstream snapshot with attribution
2026-07-13 13:03:19 +08:00
..

Tests for .github/scripts

This directory contains comprehensive tests for the GitHub workflow scripts using Python's built-in testing framework.

Requirements

No external dependencies required!

This test suite uses:

  • unittest - Python's built-in testing framework
  • tomllib - Python 3.11+ built-in TOML parser

For Python < 3.11, the toml package is used as a fallback.

Running Tests

Run all tests

cd .github/scripts/tests
python3 -m unittest discover -v

Run a specific test file

python3 -m unittest test_get_pyproject_version -v

Run a specific test class

python3 -m unittest test_get_pyproject_version.TestGetPyprojectVersion -v

Run a specific test method

python3 -m unittest test_get_pyproject_version.TestGetPyprojectVersion.test_matching_versions -v

Run tests directly from the test file

python3 test_get_pyproject_version.py

Test Structure

test_get_pyproject_version.py

Comprehensive tests for get_pyproject_version.py covering:

  • Version matching: Tests successful version validation
  • Version mismatch: Tests error handling when versions don't match
  • Missing version: Tests handling of pyproject.toml without version field
  • Missing project section: Tests handling of pyproject.toml without project section
  • File not found: Tests handling of non-existent files
  • Malformed TOML: Tests handling of invalid TOML syntax
  • Argument validation: Tests proper argument count validation
  • Semantic versioning: Tests various semantic version formats
  • Pre-release tags: Tests versions with alpha, beta, rc tags
  • Build metadata: Tests versions with build metadata
  • Edge cases: Tests empty versions and other edge cases

Total Tests: 17+ test cases covering all functionality

Best Practices Implemented

  1. Fixture Management: Uses setUp() and tearDown() for clean test isolation
  2. Helper Methods: Provides reusable helpers for creating test fixtures
  3. Temporary Files: Uses tempfile for file creation with proper cleanup
  4. Comprehensive Coverage: Tests happy paths, error conditions, and edge cases
  5. Clear Documentation: Each test has a descriptive docstring
  6. Output Capture: Uses unittest.mock.patch and StringIO to test stdout/stderr
  7. Exit Code Validation: Properly tests script exit codes with assertRaises(SystemExit)
  8. Type Hints: Uses type hints in helper methods for clarity
  9. PEP 8 Compliance: Follows Python style guidelines
  10. Zero External Dependencies: Uses only Python standard library

Continuous Integration

These tests can be integrated into GitHub Actions workflows with no additional dependencies:

- name: Run .github scripts tests
  run: |
    cd .github/scripts/tests
    python3 -m unittest discover -v

Test Output Example

test_empty_version_string (test_get_pyproject_version.TestGetPyprojectVersion)
Test handling of empty version string. ... ok
test_file_not_found (test_get_pyproject_version.TestGetPyprojectVersion)
Test handling of non-existent pyproject.toml file. ... ok
test_malformed_toml (test_get_pyproject_version.TestGetPyprojectVersion)
Test handling of malformed TOML file. ... ok
test_matching_versions (test_get_pyproject_version.TestGetPyprojectVersion)
Test that matching versions result in success. ... ok
test_missing_project_section (test_get_pyproject_version.TestGetPyprojectVersion)
Test handling of pyproject.toml without a project section. ... ok
test_missing_version_field (test_get_pyproject_version.TestGetPyprojectVersion)
Test handling of pyproject.toml without a version field. ... ok
test_no_arguments (test_get_pyproject_version.TestGetPyprojectVersion)
Test that providing no arguments results in usage error. ... ok
test_semantic_version_0_0_1 (test_get_pyproject_version.TestGetPyprojectVersion)
Test semantic version 0.0.1. ... ok
test_semantic_version_1_0_0 (test_get_pyproject_version.TestGetPyprojectVersion)
Test semantic version 1.0.0. ... ok
test_semantic_version_10_20_30 (test_get_pyproject_version.TestGetPyprojectVersion)
Test semantic version 10.20.30. ... ok
test_semantic_version_alpha (test_get_pyproject_version.TestGetPyprojectVersion)
Test semantic version with alpha tag. ... ok
test_semantic_version_beta (test_get_pyproject_version.TestGetPyprojectVersion)
Test semantic version with beta tag. ... ok
test_semantic_version_rc_with_build (test_get_pyproject_version.TestGetPyprojectVersion)
Test semantic version with rc and build metadata. ... ok
test_too_few_arguments (test_get_pyproject_version.TestGetPyprojectVersion)
Test that providing too few arguments results in usage error. ... ok
test_too_many_arguments (test_get_pyproject_version.TestGetPyprojectVersion)
Test that providing too many arguments results in usage error. ... ok
test_version_mismatch (test_get_pyproject_version.TestGetPyprojectVersion)
Test that mismatched versions result in failure with appropriate error message. ... ok
test_version_with_build_metadata (test_get_pyproject_version.TestGetPyprojectVersion)
Test matching versions with build metadata. ... ok
test_version_with_prerelease_tags (test_get_pyproject_version.TestGetPyprojectVersion)
Test matching versions with pre-release tags like alpha, beta, rc. ... ok

----------------------------------------------------------------------
Ran 18 tests in 0.XXXs

OK