.github/workflows/ruby.yml

Summary

Maintainability
Test Coverage
# This workflow will download a prebuilt Ruby version, install dependencies and
# run tests with Rake
# For more information see: https://github.com/marketplace/actions/setup-ruby-jruby-and-truffleruby

name: CI

"on":
  push:
    branches: [master]
  pull_request:
    branches: [master]
  schedule:
    - cron: '16 4 12 * *'
  workflow_dispatch:

env:
  CUCUMBER_PUBLISH_QUIET: true
  RUBYOPTS: "--disable-did-you-mean"

jobs:
  test:

    runs-on: ubuntu-latest

    strategy:
      matrix:
        ruby: ["3.0", "3.1", "3.2", "3.3"]

    steps:
      - uses: actions/checkout@v4
      - name: Install non-ruby dependencies
        run: |
          # Ensure all packages can be found
          sudo apt-get update
          # Provides libgirepository-1.0.so.1
          sudo apt-get install libgirepository-1.0-1
          # Provides source code for test libraries and tools to generate introspection data
          sudo apt-get install gobject-introspection
          # The regress.c test library needs cairo headers
          sudo apt-get install libcairo2-dev
          # Provides gir files for various libraries, needed for generating gir files
          # for test libraries
          sudo apt-get install libgirepository1.0-dev
          # The following packages provide typelibs for various libraries
          sudo apt-get install gir1.2-gtop-2.0
          sudo apt-get install gir1.2-gtk-3.0
          sudo apt-get install gir1.2-pango-1.0
          sudo apt-get install gir1.2-secret-1
          sudo apt-get install gir1.2-gstreamer-1.0
          sudo apt-get install gir1.2-gtksource-3.0
          # BUG: Missing dependency of gir1.2-harfbuzz-0.0
          sudo apt-get install libharfbuzz-gobject0

      - name: Set up Ruby
        uses: ruby/setup-ruby@v1
        with:
          ruby-version: ${{ matrix.ruby }}
          bundler-cache: true
      - name: Run tests
        run: bundle exec rake test:all
      - name: Run features
        run: bundle exec rake test:features

  lint:

    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4
      - name: Set up Ruby
        uses: ruby/setup-ruby@v1
        with:
          ruby-version: "3.3"
          bundler-cache: true
      - name: Run RuboCop
        run: bundle exec rubocop -P
      - name: Check manifest
        run: bundle exec rake manifest:check