Skip to content

feat(gui): enhance drag-and-drop support in MainWindow #127

feat(gui): enhance drag-and-drop support in MainWindow

feat(gui): enhance drag-and-drop support in MainWindow #127

Workflow file for this run

name: CI - C++
on:
push:
branches: [main, classic-next, dev, classic-9.1]
pull_request:
branches: [main, classic-next, dev, classic-9.1]
env:
RUST_BACKTRACE: 1
CARGO_TERM_COLOR: always
jobs:
cxx-parity-gate:
name: Binding Compliance Gate (C++)
runs-on: windows-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v6
- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: "3.12"
- name: Run CXX binding compliance profile
run: python tools/binding_compliance/check_compliance.py --repo-root . --profile cxx-ci
- name: Upload CXX binding compliance diagnostics
if: failure()
uses: actions/upload-artifact@v6
with:
name: cxx-parity-diagnostics
path: |
tools/binding_compliance/artifacts/
cpp-bindings/classic-cpp-bridge/parity-artifacts/
if-no-files-found: warn
retention-days: 7
cli-tests:
name: CLI Tests
needs: [cxx-parity-gate]
runs-on: windows-latest
timeout-minutes: 90
env:
RUST_BACKTRACE: full
steps:
- uses: actions/checkout@v6
with:
submodules: recursive
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
- name: Set up MSVC dev environment
uses: ilammy/msvc-dev-cmd@v1
with:
arch: x64
- name: Cache cargo registry
uses: actions/cache@v5
with:
path: ~/.cargo/registry
key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-registry-
- name: Cache cargo index
uses: actions/cache@v5
with:
path: ~/.cargo/git
key: ${{ runner.os }}-cargo-index-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-index-
- name: Cache cargo build
uses: actions/cache@v5
with:
path: target
key: ${{ runner.os }}-cargo-cpp-cli-${{ hashFiles('**/Cargo.lock') }}-${{ hashFiles('foundation/**/*.rs', 'business-logic/**/*.rs', 'cpp-bindings/**/*.rs', 'node-bindings/**/*.rs', 'python-bindings/**/*.rs', 'ui-applications/**/*.rs') }}
restore-keys: |
${{ runner.os }}-cargo-cpp-cli-${{ hashFiles('**/Cargo.lock') }}-
${{ runner.os }}-cargo-cpp-cli-
- name: Cache vcpkg root
uses: actions/cache@v5
with:
path: ~\vcpkg
key: ${{ runner.os }}-vcpkg-root-${{ hashFiles('.github/scripts/setup-vcpkg.ps1', 'classic-cli/vcpkg.json', 'classic-gui/vcpkg.json') }}
restore-keys: |
${{ runner.os }}-vcpkg-root-
- name: Set up vcpkg (resilient)
shell: pwsh
run: pwsh -ExecutionPolicy Bypass -File .github/scripts/setup-vcpkg.ps1
- name: Build and test CLI
run: pwsh -ExecutionPolicy Bypass -File classic-cli/build_cli.ps1 -Test
- name: Upload CLI diagnostics
if: failure()
uses: actions/upload-artifact@v6
with:
name: cli-test-diagnostics
path: |
classic-cli/build/Testing/
classic-cli/build-debug/Testing/
classic-cli/build/CMakeFiles/CMakeError.log
classic-cli/build/CMakeFiles/CMakeOutput.log
if-no-files-found: warn
retention-days: 7
gui-tests:
name: GUI Tests
needs: [cxx-parity-gate]
runs-on: windows-latest
timeout-minutes: 120
env:
RUST_BACKTRACE: full
QT_QPA_PLATFORM: offscreen
steps:
- uses: actions/checkout@v6
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
- name: Set up MSVC dev environment
uses: ilammy/msvc-dev-cmd@v1
with:
arch: x64
- name: Cache cargo registry
uses: actions/cache@v5
with:
path: ~/.cargo/registry
key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-registry-
- name: Cache cargo index
uses: actions/cache@v5
with:
path: ~/.cargo/git
key: ${{ runner.os }}-cargo-index-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-index-
- name: Cache cargo build
uses: actions/cache@v5
with:
path: target
key: ${{ runner.os }}-cargo-cpp-gui-${{ hashFiles('**/Cargo.lock') }}-${{ hashFiles('foundation/**/*.rs', 'business-logic/**/*.rs', 'cpp-bindings/**/*.rs', 'node-bindings/**/*.rs', 'python-bindings/**/*.rs', 'ui-applications/**/*.rs') }}
restore-keys: |
${{ runner.os }}-cargo-cpp-gui-${{ hashFiles('**/Cargo.lock') }}-
${{ runner.os }}-cargo-cpp-gui-
- name: Cache vcpkg root
uses: actions/cache@v5
with:
path: ~\vcpkg
key: ${{ runner.os }}-vcpkg-root-${{ hashFiles('.github/scripts/setup-vcpkg.ps1', 'classic-cli/vcpkg.json', 'classic-gui/vcpkg.json') }}
restore-keys: |
${{ runner.os }}-vcpkg-root-
- name: Set up vcpkg (resilient)
shell: pwsh
run: pwsh -ExecutionPolicy Bypass -File .github/scripts/setup-vcpkg.ps1
- name: Cache GUI vcpkg installed
uses: actions/cache@v5
with:
path: classic-gui/vcpkg_installed
key: ${{ runner.os }}-vcpkg-installed-gui-${{ hashFiles('classic-gui/vcpkg.json', 'classic-gui/CMakePresets.json', '.github/scripts/setup-vcpkg.ps1') }}
restore-keys: |
${{ runner.os }}-vcpkg-installed-gui-
- name: Cache GUI vcpkg archives
uses: actions/cache@v5
with:
path: ~\AppData\Local\vcpkg\archives
key: ${{ runner.os }}-vcpkg-archives-gui-${{ hashFiles('classic-gui/vcpkg.json', 'classic-gui/CMakePresets.json', '.github/scripts/setup-vcpkg.ps1') }}
restore-keys: |
${{ runner.os }}-vcpkg-archives-gui-
- name: GUI test preflight diagnostics
shell: pwsh
run: |
cmake --version
ctest --version
Write-Host "QT_QPA_PLATFORM=$env:QT_QPA_PLATFORM"
- name: Verify Qt resolution policy
shell: pwsh
run: pwsh -ExecutionPolicy Bypass -File classic-gui/verify_qt_resolution.ps1
- name: Build and test GUI
run: pwsh -ExecutionPolicy Bypass -File classic-gui/build_gui.ps1 -Preset ci -Test -TestTimeoutSec 600
- name: Upload GUI diagnostics
if: failure()
uses: actions/upload-artifact@v6
with:
name: gui-test-diagnostics
path: |
classic-gui/build/Testing/
classic-gui/build-debug/Testing/
classic-gui/build/CMakeFiles/CMakeError.log
classic-gui/build/CMakeFiles/CMakeOutput.log
if-no-files-found: warn
retention-days: 7