name: Test External

on: [push, pull_request]

permissions:
  contents: read

env:
  RUBY_DEBUG: true

jobs:
  test:
    name: ${{matrix.ruby}} on ${{matrix.os}}
    runs-on: ${{matrix.os}}-latest
    
    strategy:
      matrix:
        os:
          - ubuntu
          - macos
        
        ruby:
          - "3.2"
          - "3.3"
          - "3.4"
          - "head"
    
    steps:
    - uses: actions/checkout@v4
    - uses: ruby/setup-ruby@v1
      with:
        ruby-version: ${{matrix.ruby}}
        bundler-cache: true
    
    - name: Build extensions
      timeout-minutes: 10
      run: bundle exec bake build
    
    - name: Run tests
      timeout-minutes: 10
      run: bundle exec bake test:external
    
    - name: Run tests (worker pool)
      if: ${{matrix.os == 'ubuntu' && matrix.ruby == 'head'}}
      env:
        ASYNC_SCHEDULER_WORKER_POOL: true
      timeout-minutes: 10
      run: bundle exec bake test:external
    
    # - name: Run tests (pure Ruby)
    #   env:
    #     IO_EVENT_SELECTOR: Select
    #   timeout-minutes: 10
    #   run: bundle exec bake build test:external