name: Fetcher Tests

on:
  push:
    branches:
      - main
    paths:
      - 'src/main/java/org/jabref/logic/importer/fetcher/**'
      - 'src/test/java/org/jabref/logic/importer/fetcher/**'
      - 'src/main/java/org/jabref/logic/crawler/**'
      - 'src/test/java/org/jabref/logic/crawler/**'
      - '.github/workflows/tests-fetchers.yml'
      - 'build.gradle'
  pull_request:
    paths:
      - 'src/main/java/org/jabref/logic/importer/fetcher/**'
      - 'src/test/java/org/jabref/logic/importer/fetcher/**'
      - '.github/workflows/tests-fetchers.yml'
      - 'build.gradle'
  schedule:
    # run on each Wednesday
    - cron: '2 3 * * 3'
  workflow_dispatch:

env:
  SpringerNatureAPIKey: ${{ secrets.SPRINGERNATUREAPIKEY_FOR_TESTS }}
  AstrophysicsDataSystemAPIKey: ${{ secrets.AstrophysicsDataSystemAPIKey_FOR_TESTS }}
  IEEEAPIKey: ${{ secrets.IEEEAPIKey_FOR_TESTS }}
  BiodiversityHeritageApiKey: ${{ secrets.BiodiversityHeritageApiKey_FOR_TESTS}}

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

permissions:
  contents: read

jobs:
  fetchertests:
    name: Fetcher tests
    runs-on: ubuntu-latest
    steps:
      - name: Checkout source
        uses: actions/checkout@v4
        with:
          submodules: 'true'
          show-progress: 'false'
      - name: Set up JDK
        uses: actions/setup-java@v4
        with:
          java-version: 23.0.1
          distribution: 'temurin'
      - name: Setup Gradle
        uses: gradle/actions/setup-gradle@v4
        with:
          gradle-home-cache-cleanup: true
      - name: Run fetcher tests
        run: ./gradlew fetcherTest
        env:
          CI: "true"