Skip to content

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

@bradjin8

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

No fields configured for Task.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions