name: ci on: pull_request: push: branches: - master jobs: TestMatrix: strategy: matrix: lua-version: ["5.4", "5.3", "5.2", "5.1", "luajit"] os: ["ubuntu-latest"] libflag: ["-shared --coverage"] include: - os: "macos-latest" lua-version: "5.4" libflag: "-bundle -undefined dynamic_lookup -all_load --coverage" - os: "windows-latest" toolchain: "msvc" lua-version: "5.4" - os: "windows-latest" lua-version: "luajit" runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@master - name: Setup MSVC # 'luarocks/gh-actions-lua' step requires msvc to build PUC-Rio Lua # versions on Windows (LuaJIT will be built using MinGW/gcc). if: ${{ matrix.toolchain == 'msvc' }} uses: ilammy/msvc-dev-cmd@v1 - uses: luarocks/gh-actions-lua@master with: luaVersion: ${{ matrix.lua-version }} - uses: luarocks/gh-actions-luarocks@master - name: Prep luacov run: | luarocks install luacov - name: Prep luacov-coveralls # TODO Windows coverage if: ${{ matrix.os != 'windows-latest' }} run: | pip install --user cpp-coveralls # install luacov-coveralls, but avoid installing luafilesystem luarocks install lua-path luarocks install dkjson luarocks install luacov-coveralls --server=https://luarocks.org/dev --deps-mode=none - name: Unix Build if: ${{ matrix.os != 'windows-latest' }} run: | luarocks make CFLAGS="-O2 -fPIC -ftest-coverage -fprofile-arcs" LIBFLAG="${{ matrix.libflag }}" - name: Windows Build # TODO Windows coverage if: ${{ matrix.os == 'windows-latest' }} run: | luarocks make - name: Test run: | lua -lluacov tests/test.lua - name: Coverage # TODO Windows coverage if: ${{ matrix.os != 'windows-latest' }} run: | export MY_PYTHON_VER=$(python -c 'import sys; print(".".join(sys.version.split(".")[0:2]))') export PATH="/Users/runner/Library/Python/$MY_PYTHON_VER/bin:$PATH" coveralls -b . -i src --dump c.report.json luacov-coveralls -j c.report.json -v -t ${{ secrets.GITHUB_TOKEN }}