# ATTENTION
#
# This is *not* a typical busted workflow! Do not copy this to other projects!
# Instead of installing busted from somewhere and using it on a code base,
# we're actually building and running the current HEAD version on ourselves:
# basically this is a combination bootstrap test and dogfooding. The upshot is
# that we check both that everything works (and end-to-end test) and that the
# current codebase checks against itself. This ensures we can fix a bug or make
# a breaking change in busted without being blocked by our own CI using a
# different busted version.
#
# See the README.md file for examples suitable for use in other projects.

name: Busted

on: [ push, pull_request ]

jobs:

  busted:
    strategy:
      fail-fast: false
      matrix:
        luaVersion: [ "5.5", "5.4", "5.3", "5.2", "5.1", "luajit" ] #, "luajit-openresty" ]
        penlightVersion: [ "1.15.0" ]
    runs-on: ubuntu-22.04
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Setup ‘lua’
        uses: hishamhm/gh-actions-lua@master
        with:
          luaVersion: ${{ matrix.luaVersion }}

      - name: Setup ‘luarocks’
        uses: hishamhm/gh-actions-luarocks@master
        with:
          luaRocksVersion: "3.13.0"

      - name: Setup dependencies
        run: |
          luarocks install penlight ${{ matrix.penlightVersion }}
          luarocks install moonscript
          luarocks install luacov
          luarocks install --deps-only busted-scm-1.rockspec

      - name: Build ‘busted’ (bootstrap)
        run: |
          luarocks make

      - name: Run ‘busted’ (dogfood)
        # disable project-local path prefixes to force use of system installation
        run: busted --coverage --lpath="" --cpath="" --output=gtest -Xoutput --color

      - name: Report test coverage
        if: ${{ success() && github.repository == 'lunarmodules/busted' }}
        continue-on-error: true
        run: luacov-coveralls -i src -e .luarocks
        env:
          COVERALLS_REPO_TOKEN: ${{ github.token }}
