Attempt to support restructured directories #92
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Moodle CI Runner CI | |
on: [push, pull_request, workflow_dispatch] | |
jobs: | |
collect: | |
name: Collect tests | |
runs-on: ubuntu-latest | |
outputs: | |
matrix: ${{steps.collect-tests.outputs.matrix }} | |
steps: | |
- name: Checking out moodl-ci-runner | |
uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- name: Collecting Bats tests | |
id: collect-tests | |
run: | | |
# Get all the test files without extension. | |
echo "matrix=$(cd test && find . -iname '*.bats' -not -path '*/helpers/*' -exec basename {} .bats ';' | \ | |
jq -R -s -c 'split("\n")[:-1]')" >> $GITHUB_OUTPUT | |
test: | |
name: Test | |
needs: collect | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
test: ${{ fromJson(needs.collect.outputs.matrix) }} | |
steps: | |
- name: Install required packages | |
run: | | |
sudo apt-get update | |
sudo apt-get install uuid dc | |
- name: Checking out moodle-ci-runner | |
uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- name: Checking out Moodle | |
uses: actions/checkout@v4 | |
with: | |
repository: moodle/moodle | |
fetch-depth: 0 # We need a complete clone, because we use various commits / tags. | |
path: moodle | |
- name: Checking out moodle-local_ci | |
uses: actions/checkout@v4 | |
with: | |
repository: moodlehq/moodle-local_ci | |
path: local_ci | |
- name: Setup Bats | |
uses: bats-core/[email protected] | |
with: | |
bats-version: 1.11.0 | |
# Note we don't need any of the libraries because the ones we need (support and assert) | |
# are bundled within test/helpers as git submodules and have been checked out above. | |
support-path: false | |
assert-path: false | |
detik-install: false | |
file-install: false | |
- name: Run tests | |
env: | |
MOODLE_CI_RUNNER_GITDIR: ${{ github.workspace }}/moodle | |
LOCAL_CI_PATH: ${{ github.workspace }}/local_ci | |
run: | | |
bats --timing test/${{ matrix.test }}.bats | |
coverage: | |
if: github.repository == 'moodlehq/moodle-ci-runner' | |
name: Code coverage | |
needs: collect | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
test: ${{ fromJson(needs.collect.outputs.matrix) }} | |
steps: | |
- name: Install required packages | |
run: | | |
sudo apt-get update | |
sudo apt-get install uuid dc kcov | |
- name: Checking out moodle-ci-runner | |
uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- name: Checking out Moodle | |
uses: actions/checkout@v4 | |
with: | |
repository: moodle/moodle | |
fetch-depth: 0 # We need a complete clone, because we use various commits / tags. | |
path: moodle | |
- name: Checking out moodle-local_ci | |
uses: actions/checkout@v4 | |
with: | |
repository: moodlehq/moodle-local_ci | |
path: local_ci | |
- name: Setup Bats | |
uses: bats-core/[email protected] | |
with: | |
bats-version: 1.11.0 | |
# Note we don't need any of the libraries because the ones we need (support and assert) | |
# are bundled within test/helpers as git submodules and have been checked out above. | |
support-path: false | |
assert-path: false | |
detik-install: false | |
file-install: false | |
- name: Run tests (capturing code coverage) | |
env: | |
MOODLE_CI_RUNNER_GITDIR: ${{ github.workspace }}/moodle | |
LOCAL_CI_PATH: ${{ github.workspace }}/local_ci | |
run: | | |
kcov \ | |
--clean \ | |
--include-path ${{ github.workspace }}/runner/main \ | |
--bash-parse-files-in-dir ${{ github.workspace }}/runner/main \ | |
${{ github.workspace }}/coverage \ | |
bats ${{ github.workspace }}/test/${{ matrix.test }}.bats | |
- name: Upload code coverage (codecov) | |
uses: codecov/codecov-action@v4 | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} | |
directory: ${{ github.workspace }}/coverage | |
flags: ${{ matrix.test }} | |