# Developer version testing is in separate workflow
name: CI

on:
  push:
    branches:
    - main
    - 'v*'
    tags:
    - '*'
  pull_request:
  schedule:
    - cron: "0 3 * * 6"
  workflow_dispatch:

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  tests:
    runs-on: ubuntu-latest
    name: linux
    strategy:
      fail-fast: false
      matrix:
        include:
          - python-version: '3.9'
            tox_env: py39-test-oldestdeps-alldeps
          - python-version: '3.10'
            tox_env: py310-test
          - python-version: '3.11'
            tox_env: py311-test-alldeps
          - python-version: '3.13'
            tox_env: py313-test-alldeps

    steps:
    - name: Checkout code
      uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8  # v5.0.0
      with:
        fetch-depth: 0
    - name: Set up Python
      uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c  # v6.0.0
      with:
        python-version: ${{ matrix.python-version }}
    - name: Install tox
      run: python -m pip install --upgrade tox
    - name: Install library dependencies and run Tests
      run: tox -e ${{ matrix.tox_env }}

  mac_windows:
    runs-on: ${{ matrix.os }}
    name: ${{ matrix.os }} (3.12 py312-test-alldeps)
    strategy:
      fail-fast: false
      matrix:
        os: [macos-latest, windows-latest]
    steps:
    - name: Checkout code
      uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8  # v5.0.0
      with:
        fetch-depth: 0
    - name: Set up Python
      uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c  # v6.0.0
      with:
        python-version: '3.12'
    - name: Install tox
      run: python -m pip install --upgrade tox
    - name: Python 3.12 with latest dependencies
      run: tox -e py312-test-alldeps


  stylecheck:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
    steps:
      - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8  # v5.0.0
      - name: Set up Python 3.12
        uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c  # v6.0.0
        with:
          python-version: '3.12'
      - name: Install tox
        run: python -m pip install --upgrade tox
      - name: Check codestyle
        run: tox -e codestyle

  linkcheck:
    if: github.event_name == 'schedule' && github.repository == 'astropy/pyvo'
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
    steps:
      - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8  # v5.0.0
      - name: Set up Python 3.10
        uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c  # v6.0.0
        with:
          python-version: '3.10'
      - name: Install tox
        run: python -m pip install --upgrade tox
      - name: Check docs links
        run: tox -e linkcheck
