name: CI

on:
  pull_request:
    branches:
      - dev
      - master
  push:
    branches:
      - dev
      - master

jobs:
  build-and-test-jvm:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: gradle/wrapper-validation-action@v1

      - name: create and checkout branch
        # push events already checked out the branch
        if: github.event_name == 'pull_request'
        run: git checkout -B ${{ github.head_ref }}

      - name: set up JDK 8
        uses: actions/setup-java@v2
        with:
          java-version: 8
          distribution: "adopt"

      - name: Cache Gradle dependencies
        uses: actions/cache@v2
        with:
          path: ~/.gradle/caches
          key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }}
          restore-keys: ${{ runner.os }}-gradle

      - name: Build debug APK and run jvm tests
        run: ./gradlew assembleDebug lintDebug testDebugUnitTest --stacktrace

      - name: Upload APK
        uses: actions/upload-artifact@v2
        with:
          name: app
          path: app/build/outputs/apk/debug/*.apk

# Disabled until emulator works again. see https://github.com/TeamNewPipe/NewPipe/pull/6560
#  test-android:
     # macos has hardware acceleration. See android-emulator-runner action
#    runs-on: macos-latest
#    strategy:
#      matrix:
          # api-level 19 is min sdk, but throws errors related to desugaring
#        api-level: [21, 29]
#    steps:
#      - uses: actions/checkout@v2
#
#      - name: set up JDK 8
#        uses: actions/setup-java@v2
#        with:
#          java-version: 8
#          distribution: "adopt"
#
#      - name: Cache Gradle dependencies
#        uses: actions/cache@v2
#        with:
#          path: ~/.gradle/caches
#          key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }}
#          restore-keys: ${{ runner.os }}-gradle
#
#      - name: Run android tests
#        uses: reactivecircus/android-emulator-runner@v2
#        with:
#          api-level: ${{ matrix.api-level }}
#          script: ./gradlew connectedCheck

#   sonar:
#     runs-on: ubuntu-latest
#     steps:
#       - uses: actions/checkout@v2
#         with:
#           fetch-depth: 0  # Shallow clones should be disabled for a better relevancy of analysis

#       - name: Set up JDK 11
#         uses: actions/setup-java@v2
#         with:
#           java-version: 11 # Sonar requires JDK 11
#           distribution: "adopt"

#       - name: Cache SonarCloud packages
#         uses: actions/cache@v2
#         with:
#           path: ~/.sonar/cache
#           key: ${{ runner.os }}-sonar
#           restore-keys: ${{ runner.os }}-sonar

#       - name: Cache Gradle packages
#         uses: actions/cache@v2
#         with:
#           path: ~/.gradle/caches
#           key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }}
#           restore-keys: ${{ runner.os }}-gradle

#       - name: Build and analyze
#         env:
#           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}  # Needed to get PR information, if any
#           SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
#         run: ./gradlew build sonarqube --info
