name: Unit Tests on: push: pull_request: workflow_dispatch: jobs: unit-tests: runs-on: ubuntu-latest permissions: contents: read steps: - name: Checkout uses: actions/checkout@v4 - name: Set up JDK 17 run: | set -euxo pipefail cd /tmp wget -q https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.12%2B7/OpenJDK17U-jdk_x64_linux_hotspot_17.0.12_7.tar.gz tar -xzf OpenJDK17U-jdk_x64_linux_hotspot_17.0.12_7.tar.gz -C /opt mv /opt/jdk-17.0.12+7 /opt/java17 export JAVA_HOME=/opt/java17 export PATH=$JAVA_HOME/bin:$PATH echo "JAVA_HOME=/opt/java17" >> $GITHUB_ENV echo "$JAVA_HOME/bin" >> $GITHUB_PATH - name: Install Android SDK run: | set -euxo pipefail echo "ANDROID_HOME=/opt/android-sdk" >> "$GITHUB_ENV" mkdir -p /opt/android-sdk/cmdline-tools wget -q https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip -O /tmp/clt.zip unzip -q /tmp/clt.zip -d /tmp/clt mv /tmp/clt/cmdline-tools /opt/android-sdk/cmdline-tools/latest yes | /opt/android-sdk/cmdline-tools/latest/bin/sdkmanager --licenses >/dev/null 2>&1 || true /opt/android-sdk/cmdline-tools/latest/bin/sdkmanager \ "platform-tools" \ "platforms;android-36.1" \ "build-tools;36.1.0" - name: Grant execute permission for gradlew run: chmod +x gradlew - name: Run JVM unit tests run: ./gradlew :app:testDebugUnitTest --console=plain env: ANDROID_HOME: /opt/android-sdk GRADLE_OPTS: '-Dorg.gradle.daemon=false' - name: Upload test report if: always() uses: actions/upload-artifact@v4 with: name: unit-test-report path: app/build/reports/tests/testDebugUnitTest