name: Run Test on: push: paths-ignore: - ".gitignore" - "docs/**" - "ChangeLog" - "CREDITS.TXT" - "COMPILE_MAKE.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-22.04 x64 make', os: ubuntu-22.04, arch: x64, build-system: 'make', diet-build: 'OFF', enable-asan: 'OFF' } - { name: 'ubuntu-22.04 x64 cmake', os: ubuntu-22.04, arch: x64, build-system: 'cmake', diet-build: 'OFF', enable-asan: 'OFF' } - { name: 'ubuntu-24.04 x64 ASAN', os: ubuntu-24.04, arch: x64, build-system: 'cmake', diet-build: 'OFF', 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 fuzzing 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 - name: make if: startsWith(matrix.config.build-system, 'make') run: | ./make.sh sudo make install - 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 - 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" if: startsWith(matrix.config.build-system, 'cmake') && matrix.config.diet-build == 'OFF' run: | ctest --test-dir build --output-on-failure -R ASCompatibilityHeaderTest - name: cstool - reaches disassembler engine run: | sh suite/run_invalid_cstool.sh - name: cstest unit tests if: startsWith(matrix.config.build-system, 'cmake') run: | ctest --test-dir build --output-on-failure -R UnitCSTest - name: cstest integration tests if: startsWith(matrix.config.build-system, 'cmake') run: | ctest --test-dir build --output-on-failure -R IntegrationCSTest - name: cstest MC if: startsWith(matrix.config.build-system, 'cmake') run: | ctest --test-dir build --output-on-failure -R MCTests - name: cstest details if: startsWith(matrix.config.build-system, 'cmake') run: | ctest --test-dir build --output-on-failure -R DetailTests - name: cstest issues if: startsWith(matrix.config.build-system, 'cmake') run: | ctest --test-dir build --output-on-failure -R IssueTests - name: cstest features if: startsWith(matrix.config.build-system, 'cmake') run: | ctest --test-dir build --output-on-failure -R FeaturesTests - name: Legacy integration tests if: startsWith(matrix.config.build-system, 'cmake') run: | ctest --test-dir build --output-on-failure -R legacy* 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