name: Run Test
on: 
  push:
    paths-ignore:
      - ".gitignore"
      - "docs/**"
      - "ChangeLog"      
      - "CREDITS.TXT"
      - "COMPILE.TXT"
      - "COMPILE_MSVC.TXT"
      - "COMPILE_CMAKE.TXT"
      - "HACK.TXT"
      - "LICENSE.TXT"
      - "LICENSE_LLVM.TXT"
      - "README.md"
      - "RELEASE_NOTES"
      - "SPONSORS.TXT"
      - "TODO"
  pull_request:

env:
  CI: true

jobs:
  Linux:
    runs-on: ${{ matrix.config.os }}
    name: ${{ matrix.config.name }}
    strategy:
      fail-fast: false
      matrix:
        config:
          - {
              name: 'ubuntu-20.04 x64 python3.6 cmake',
              os: ubuntu-20.04,
              arch: x64,
              python-arch: x64,
              python-version: '3.6',
              build-system: 'cmake',
              enable-asan: 'OFF'
            }
          - {
              name: 'ubuntu-22.04 x64 python3.9 make',
              os: ubuntu-22.04,
              arch: x64,
              python-arch: x64,
              python-version: '3.9',
              build-system: 'make',
              enable-asan: 'OFF'
            }
          - {
              name: 'ubuntu-22.04 x64 python3.9 cmake',
              os: ubuntu-22.04,
              arch: x64,
              python-arch: x64,
              python-version: '3.9',
              build-system: 'cmake',
              enable-asan: 'OFF'
            }     
          - {
              name: 'ubuntu-22.04 x64 python3.11 cmake',
              os: ubuntu-22.04,
              arch: x64,
              python-arch: x64,
              python-version: '3.11',
              build-system: 'cmake',
              enable-asan: 'OFF'
            }
          - {
              name: 'ubuntu-22.04 x64 python3.11 ASAN',
              os: ubuntu-latest,
              arch: x64,
              python-arch: x64,
              python-version: '3.11',
              build-system: 'cmake',
              enable-asan: 'ON'
            }

    steps:
    - uses: actions/checkout@v3

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

    - name: prepare
      run: |
        export LD_LIBRARY_PATH=`pwd`/tests/:$LD_LIBRARY_PATH
        wget https://github.com/groundx/capstonefuzz/raw/master/corpus/corpus-libFuzzer-capstone_fuzz_disasmnext-latest.zip
        unzip -q corpus-libFuzzer-capstone_fuzz_disasmnext-latest.zip -d suite/fuzz
        git clone https://git.cryptomilk.org/projects/cmocka.git suite/cstest/cmocka
        chmod +x suite/cstest/build_cstest.sh

    - name: make
      if: startsWith(matrix.config.build-system, 'make')
      run: |
        ./make.sh
        make check
        sudo make install
        cp libcapstone.so.5 libcapstone.so.5.0

    - name: cmake
      if: startsWith(matrix.config.build-system, 'cmake')
      env:
        asan: ${{ matrix.config.enable-asan }}
      run: |
        mkdir build && cd build
        # build static library
        cmake -DCAPSTONE_INSTALL=1 -DCMAKE_INSTALL_PREFIX=/usr -DENABLE_ASAN=${asan} -DCAPSTONE_BUILD_DIET=${diet_build} ..
        cmake --build . --config Release
        # build shared library
        cmake -DCAPSTONE_INSTALL=1 -DBUILD_SHARED_LIBS=1 -DCMAKE_INSTALL_PREFIX=/usr -DCAPSTONE_BUILD_CSTEST=ON -DENABLE_ASAN=${asan} ..
        sudo cmake --build . --config Release --target install
        cp libcapstone.* ../
        cp libcapstone.* ../tests/
        cp test_* ../tests/

    - name: Lower number of KASL randomized address bits
      run: |
        # Work-around ASAN bug https://github.com/google/sanitizers/issues/1716
        sudo sysctl vm.mmap_rnd_bits=28

    - name: "Compatibility header test build"
      if: matrix.config.diet-build == 'OFF'
      env:
        asan: ${{ matrix.config.enable-asan }}
      run: |
        cd "$(git rev-parse --show-toplevel)/suite/auto-sync/c_tests/"
        if [ "$asan" = "ON" ]; then
          clang -lcapstone -fsanitize=address src/test_arm64_compatibility_header.c -o test_arm64_compatibility_header
        else
          clang -lcapstone src/test_arm64_compatibility_header.c -o test_arm64_compatibility_header
        fi
        ./test_arm64_compatibility_header
        cd "$(git rev-parse --show-toplevel)"

    - name: cstool - reaches disassembler engine
      run: |
        sh suite/run_invalid_cstool.sh

    - name: cstest (cmake)
      if: startsWith(matrix.config.build-system, 'cmake')
      run: |
        python suite/cstest/cstest_report.py -D -d suite/MC
        python suite/cstest/cstest_report.py -D -f suite/cstest/issues.cs
        python suite/cstest/cstest_report.py -D -f tests/cs_details/issue.cs

    - name: cstest (make)
      if: startsWith(matrix.config.build-system, 'make')
      run: |
        cd suite/cstest && ./build_cstest.sh
        python cstest_report.py -D -t build/cstest -d ../MC
        python cstest_report.py -D -t build/cstest -f issues.cs
        python cstest_report.py -D -t build/cstest -f ../../tests/cs_details/issue.cs
        cd ../../

    - name: verify python binding
      if: matrix.config.enable-asan == 'OFF'
      run: |
        mkdir -p bindings/python/capstone/lib && cp libcapstone.so.5.* bindings/python/capstone/lib/libcapstone.so
        cd bindings/python

        # check if the generated *_const.py files are up-to-date
        mkdir capstone_old && cp capstone/*_const.py capstone_old/
        make gen_const
        for f in ./capstone/*_const.py; do
          diff  -u -w "$f" "./capstone_old/`basename $f`"
          if [ ! $? -eq 0 ]; then
            exit 1
          fi
        done
        rm -rf capstone_old

        # smoke test api usage
        make check

    - name: run python binding test
      if: matrix.config.enable-asan == 'OFF'
      run: |
        cp libcapstone.* bindings/python/prebuilt
        cd bindings/python
        make install
        cd ..
        BUILD_TESTS=no make tests

    - name: run cython binding test
      if: matrix.config.enable-asan == 'OFF'
      run: |
        pip install cython
        cd bindings/python
        make install_cython
        cd ..
        python -c "import capstone;print(capstone.debug())" | grep Cython
        BUILD_TESTS=no make tests

  Windows:
    runs-on: ${{ matrix.config.os }}
    name: ${{ matrix.config.name }}
    strategy:
      fail-fast: false
      matrix:
        config:
          - name: 'windows x64 MSVC 64bit'
            os: windows-latest
            arch: x64
            platform: windows
            python-arch: x64
            python-version: '3.9'

    steps:
    - uses: actions/checkout@v3

    - uses: lukka/get-cmake@latest
      name: Get CMake

    - name: '🛠️ Win MSVC 64 setup'
      if: contains(matrix.config.name, 'MSVC 64')
      uses: ilammy/msvc-dev-cmd@v1  
      with:
        arch: 'x64'

    - name: '🚧 Win MSVC 64 build'
      if: contains(matrix.config.name, 'MSVC 64')
      shell: bash
      run: |
        cmake --version
        cmake --preset=${{ matrix.config.platform }}-x64
        cmake --build --preset build-${{ matrix.config.platform }}-release
        cmake --build --preset install-${{ matrix.config.platform }}-release
