name: "Unit Tests" on: push: branches: [ '*' ] pull_request: branches: [ '*' ] repository_dispatch: types: [run_tests] workflow_call: inputs: pattern_language_git_repo: type: string pattern_language_git_hash: type: string jobs: tests: name: ๐Ÿงช Unit Tests runs-on: ubuntu-24.04 permissions: actions: read contents: read security-events: write steps: - name: ๐Ÿงฐ Checkout uses: actions/checkout@v4 with: repository: ${{ github.repository_owner }}/ImHex-Patterns submodules: recursive - name: โฌ‡๏ธ Install dependencies run: | sudo apt update sudo apt install -y \ build-essential \ ccache \ gcc-14 \ g++-14 \ lld \ ${PKGCONF:-} \ cmake \ ninja-build \ python3 \ python3-pip \ libmagic-dev \ lcov sudo pip install jsonschema - name: ๐Ÿ“œ Setup ccache uses: hendrikmuhs/ccache-action@v1 with: key: ${{ runner.os }}-ccache-${{ github.run_id }} restore-keys: ${{ runner.os }}-ccache max-size: 1G - name: ๐Ÿ› ๏ธ Build run: | mkdir -p build cd build CC=gcc-14 CXX=g++-14 cmake \ -DCMAKE_C_COMPILER_LAUNCHER=ccache \ -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ -DCMAKE_C_FLAGS="-fuse-ld=lld --coverage" \ -DCMAKE_CXX_FLAGS="-fuse-ld=lld --coverage" \ -DIMHEX_PATTERNS_ENABLE_UNIT_TESTS=ON \ -DLIBPL_ENABLE_TESTS=OFF \ -DLIBPL_ENABLE_CLI=OFF \ -DIMHEX_PATTERNS_LIBPL_GIT_REPO="${{ inputs.pattern_language_git_repo }}" \ -DIMHEX_PATTERNS_LIBPL_GIT_HASH="${{ inputs.pattern_language_git_hash }}" \ -G Ninja \ .. ninja unit_tests - name: ๐Ÿงช Perform Unit Tests run: | cd build ctest --output-on-failure -j 4 - name: ๐Ÿ“Ž Validate JSON Files run: | cd constants for file in ./[!_]*; do jsonschema -i $file _schema.json; done cd .. cd tips for file in ./[!_]*; do jsonschema -i $file _schema.json; done cd ..