# https://docs.github.com/en/actions

name: CI

on:
  pull_request: ~
  push:
    branches:
      - master

jobs:

  static-code-analysis:
    name: Static Code Analysis

    runs-on: ubuntu-latest

    steps:
      - name: Checkout
        uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Install PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: '8.4'
          coverage: none
          extensions: mbstring

      - name: Install dependencies
        run: >-
          composer install

      - name: Install tools
        run: >-
          composer run install-tools

      - name: Run code style check
        run: >-
          composer run cs-check

      - name: Run static analysis
        run: >-
          composer run static-analysis

     # Disabled for version 2.0, since there is no BC promise at this time.
     # - name: Run backwards compatibility check
     #   run: >-
     #     composer run bc-check

  tests:
    name: Tests

    runs-on: ubuntu-latest

    strategy:
      matrix:
        php-version:
          - "8.2"
          - "8.3"
          - "8.4"
          - "8.5"

    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Install PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: "${{ matrix.php-version }}"
          coverage: none
          extensions: mbstring

      - name: Install dependencies
        run: >-
          composer install

      - name: Install phpunit
        run: >-
          composer --working-dir=tools/phpunit install

      - name: Run tests
        run: >-
          composer run test

  windows-tests:
    name: Windows tests

    runs-on: windows-latest

    strategy:
      matrix:
        php-version:
          - "8.2"
          - "8.3"
          - "8.4"
          - "8.5"

    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Install PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: "${{ matrix.php-version }}"
          coverage: none
          extensions: mbstring

      - name: Install dependencies
        run: >-
          composer install

      - name: Install phpunit
        run: >-
          composer --working-dir=tools/phpunit install

      - name: Run tests
        run: >-
          composer run test
