sile 0.15.7

Simon’s Improved Layout Engine
Documentation
name: Test

on: [ push, pull_request ]

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

jobs:

  test:
    strategy:
      fail-fast: false
      matrix:
        luaVersion:
          - [ '5.4', 'MYCFLAGS=-fPIC' ]
          - [ '5.3', 'MYCFLAGS=-fPIC' ]
          - [ '5.2', 'MYCFLAGS=-fPIC' ]
          - [ '5.1', 'CFLAGS="-O2 -Wall -DLUA_USE_LINUX -fPIC"' ]
          - [ 'luajit', 'XCFLAGS=-fPIC' ]
          - [ 'luajit-openresty', 'XCFLAGS=-fPIC' ]
    runs-on: ubuntu-22.04
    name: Test on Lua ${{ matrix.luaVersion[0] }}
    steps:
      - name: Checkout
        uses: actions/checkout@v4
        with:
          fetch-depth: 0
      - name: Cache test fonts
        uses: actions/cache@v4
        with:
          path: |
            .fonts
            .sources
          key: fonts-${{ hashFiles('Makefile-fonts') }}
      - name: Cache lua_modules
        uses: actions/cache@v4
        with:
          path: |
            lua_modules
          key: luarocks-${{ matrix.luaVersion[0] }}-${{ hashFiles('Makefile-luarocks', 'sile.rockspec.in') }}
      - name: Cache Rust
        uses: Swatinem/rust-cache@v2
      - name: Install system dependencies
        run: |
          sudo apt-get update
          sudo apt-get install fonts-sil-gentiumplus libarchive-tools libfontconfig1-dev libharfbuzz-dev libicu-dev libpng-dev poppler-utils
      - name: Setup ‘lua’
        uses: hishamhm/gh-actions-lua@master
        with:
          luaVersion: ${{ matrix.luaVersion[0] }}
          luaCompileFlags: ${{ matrix.luaVersion[1] }}
      - name: Setup ‘cargo’
        uses: actions-rs/toolchain@v1
      - name: Setup ‘luarocks’
        uses: hishamhm/gh-actions-luarocks@master
      - name: Prep system Lua for use
        run: |
          luarocks install busted
          function deepest () { find $1 -type d | awk 'length>m{m=length;r=$0}END{print r}'; }
          cat << EOF >> $GITHUB_ENV
          LD_LIBRARY_PATH=$PWD/.lua/lib:$LD_LIBRARY_PATH
          LIBRARY_PATH=$PWD/.lua/lib:$LIBRARY_PATH
          LD_RUN_PATH=$PWD/.lua/lib:$LD_RUN_PATH
          PKG_CONFIG_PATH=$PWD/.lua/lib/pkgconfig:$PKG_CONFIG_PATH
          LUA_INCLUDE=-I$(deepest $PWD/.lua/include)
          MAKEFLAGS=-j$(nproc) -Otarget
          EOF
      - name: Configure
        run: |
          ./bootstrap.sh
          ./configure \
            ${{ matrix.luaVersion[1] }} \
            --enable-developer-mode \
            --without-developer-tools \
              BUSTED=$(which busted) \
            --disable-font-variations \
            --with${{ !startsWith(matrix.luaVersion[0], 'luajit') && 'out' || '' }}-luajit \
            --without-system-luarocks \
            --without-manual
      - name: Make
        run: |
          make
      - name: Prove SILE runs at all
        run: |
          make selfcheck
      - name: Test Busted
        continue-on-error: ${{ matrix.luaVersion[0] == '5.1' }}
        timeout-minutes: ${{ runner.debug && 20 || 2 }}
        run: |
          make busted
      - name: Test Regressions
        timeout-minutes: ${{ runner.debug && 20 || 2 }}
        run: |
          make regressions
      - name: Test Cargo
        timeout-minutes: ${{ runner.debug && 20 || 2 }}
        run: |
          make cargo-test
      - name: Upload artifacts
        uses: actions/upload-artifact@v4
        with:
          name: test-${{ matrix.luaVersion[0] }}-actuals
          path: tests/*.actual