-
Notifications
You must be signed in to change notification settings - Fork 0
Add Windows C++ compilation testing #4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Add comprehensive design for Windows-based C++ compilation testing system that will verify reproducibility of msvcpp-normalize-pe across multiple MSVC versions, architectures, and optimization levels. Key features: - Matrix testing: MSVC 2017/2019/2022 × x86/x64 × Od/O2 × 2 programs - Reference binaries stored in Git submodule - Always upload artifacts for debugging and reference generation - Runtime validation of patched binaries Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
Add simple and complex C++ programs to test PE patching: - simple.cpp: minimal program for basic PE structure testing - complex.cpp: realistic program with STL for complex PE testing Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
Set up structure for reference binaries (to be added as submodule). Includes documentation for future submodule setup and reference generation. Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
Add comprehensive GitHub Actions workflow that: - Tests MSVC 2017, 2019, 2022 across x86/x64 and Od/O2 - Compiles C++ test programs with /Brepro - Patches binaries with msvcpp-normalize-pe - Verifies reproducibility against reference binaries - Tests runtime execution of patched binaries - Uploads artifacts for debugging and reference generation Matrix: 24 jobs (3 MSVC × 2 arch × 2 opt × 2 programs) Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
Add GitHub Actions badge for Windows C++ compilation tests. Document fixture structure and generation process. Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
Fix two critical issues discovered during workflow execution: 1. Add --system flag to uv pip install - Change: uv pip install . → uv pip install --system . - Required for installing packages in GitHub Actions environment 2. Simplify MSVC matrix to use only 2019 toolset - Change: msvc: ['2017', '2019', '2022'] → msvc: ['2019'] - Only MSVC 2019 (toolset 14.2) is available on windows-latest runners - MSVC 2017 (14.1) and MSVC 2022 (14.3) are not installed by default - Reduces from 24 jobs to 8 jobs while ensuring all tests can run Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
The workflow only tests MSVC 2019 (8 jobs), not 2017/2019/2022 (24 jobs). Updated all three README files to accurately reflect: - Only MSVC 2019 is tested (default on windows-latest) - 8 reference binaries, not 24 - Binary naming examples use msvc2019 consistently - Added note explaining windows-latest runner limitation Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
Replace placeholder directory with actual Git submodule pointing to mithro/msvcpp-normalize-pe-test-binaries repository. This submodule will store the reference binaries for reproducibility testing once they are generated from the workflow artifacts. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
Update submodule to include the 8 MSVC 2019 reference binaries generated from the first successful workflow run. These binaries enable reproducibility testing in future workflow runs. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
Status Update: All Tests Passing! ✅The Windows C++ compilation testing is now fully operational: Completed Tasks
Latest ResultsWorkflow run: https://github.com/mithro/msvcpp-normalize-pe/actions/runs/19413573367 All 8 matrix combinations tested successfully:
VerificationThe workflow successfully verifies byte-for-byte reproducibility by comparing newly compiled+patched binaries against the reference binaries stored in the Ready to merge! 🚀
|
Summary
Test Plan
Implementation
This implements the design from
docs/plans/2025-11-17-windows-cpp-testing-design.md.Matrix: 8 jobs (1 MSVC version × 2 arch × 2 opt × 2 programs)
Workflow Steps:
Repositories
mithro/msvcpp-normalize-pemithro/msvcpp-normalize-pe-test-binaries(Git submodule attests/fixtures/references/)Results
✅ All 8 workflow jobs passing
Latest workflow run: https://github.com/mithro/msvcpp-normalize-pe/actions/runs/19413573367
Commits
🤖 Generated with Claude Code