name: Python Package CI

on:
  push:
  pull_request:

jobs:
  build:
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        os: [ubuntu-24.04, windows-2022, macOS-14]
        python-version: ["3.8", "3.12"]

    steps:
    - uses: actions/checkout@v4

    - name: Set up Python ${{ matrix.python-version }}
      uses: actions/setup-python@v5
      with:
        python-version: ${{ matrix.python-version }}

    - name: Setup MSVC
      if: runner.os == 'Windows'
      uses: ilammy/msvc-dev-cmd@v1

    - name: Build and install capstone
      run: pip install ./bindings/python

    - name: Install cstest_py
      run: pip install ./bindings/python/cstest_py

    - name: Run legacy tests
      run: python ./bindings/python/tests/test_all.py

    - name: cstest_py integration tests
      run: |
        cd suite/cstest/test/
        python3 ./integration_tests.py cstest_py
        cd ../../../

    - name: cstest_py MC
      run: |
        cstest_py tests/MC/

    - name: cstest_py details
      run: |
        cstest_py tests/details/

    - name: cstest_py issues
      run: |
        cstest_py tests/issues/

    - name: cstest_py features
      run: |
        cstest_py tests/features/
