Skip to content

Cross-Platform + Single-OS CI + Path Duplication (COMPOUND-D) #44

Description

@bradjin8

Repository: cppa-cursor-browser
Assignee: Brad @bradjin8
Severity: High

Problem

The project explicitly supports Windows, macOS, Linux, and WSL with platform-specific path detection logic, but the CI matrix tests only three Python versions on ubuntu-latest. The normalize_file_path function — which handles file:/// URIs, percent-encoded characters, backslash vs. forward-slash, and drive-letter casing — exists in two independent copies (one in utils/, one in scripts/export.py), and neither copy is exercised on Windows or macOS in CI. The PyInstaller spec targets a Windows .exe but is never built or tested. This means path normalization divergence between the two implementations cannot be detected automatically, and cross-platform breakage ships silently.

Acceptance Criteria

  • CI matrix expanded to include windows-latest and macos-latest runners
  • All existing tests pass on Windows, macOS, and Linux in CI
  • Path normalization tests specifically exercise Windows-style paths (backslashes, drive letters, file:///C:/... URIs) on actual Windows runners
  • PyInstaller build step added to the Windows CI job (build the .exe; smoke-test that it launches with --help)
  • CI workflow remains under 15 minutes total wall-clock time (use matrix parallelism)

Implementation Notes

Modify .github/workflows/tests.yml to add os: [ubuntu-latest, windows-latest, macos-latest] to the matrix. Some test fixtures may use hardcoded POSIX paths — audit for /tmp/ references and replace with tempfile.mkdtemp() or tmp_path pytest fixtures. The PyInstaller build step only needs to run on the Windows row. Consider using if: matrix.os == 'windows-latest' for that step. This is the highest-leverage single CI change: it simultaneously verifies cross-platform path handling, validates the desktop build, and exposes divergence between the two normalize_file_path copies.

References

  • Eval finding: test 27
  • Cluster: compound-cross-platform-verification-gap
  • Related files: .github/workflows/tests.yml, utils/path_helpers.py, scripts/export.py (private normalize_file_path), cursor_browser.spec (PyInstaller config)
  • Compounds: COMPOUND-D (cross-platform claims + single-OS CI + path duplication), COMPOUND-F (unbounded pins + single-OS CI)

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions