blob: 97dea634314d2929095959e32c5a9bb8b48a3947 [file] [log] [blame]
name: Tests
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
build:
runs-on: ubuntu-18.04
steps:
- uses: actions/checkout@v2
with:
submodules: recursive
- uses: actions/cache@v2
with:
path: |
~/.gradle
~/.m2
~/sqlite
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle-
- name: Set up JDK 11.0.8
uses: actions/setup-java@v1
with:
java-version: 11.0.8
- name: Build
run: SKIP_ERRORPRONE=true SKIP_JAVADOC=true ./gradlew clean assemble testClasses --parallel --stacktrace
unit-tests:
runs-on: ubuntu-18.04
needs: build
strategy:
fail-fast: false
matrix:
api-versions: ['16,17,18', '19,21,22', '23,24,25', '26,27,28', '29,30']
steps:
- uses: actions/checkout@v2
with:
submodules: recursive
- uses: actions/cache@v2
with:
path: |
~/.gradle
~/.m2
~/sqlite
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle-
- name: Set up JDK 11.0.8
uses: actions/setup-java@v1
with:
java-version: 11.0.8
- name: Run unit tests
run: |
SKIP_ERRORPRONE=true SKIP_JAVADOC=true ./gradlew test --info --stacktrace --continue \
--parallel \
-Drobolectric.enabledSdks=${{ matrix.api-versions }} \
-Drobolectric.alwaysIncludeVariantMarkersInTestName=true \
-Dorg.gradle.workers.max=2
- name: Upload Test Results
uses: actions/upload-artifact@v2
if: always()
with:
name: test_results_${{ matrix.api-versions }}
path: '**/build/test-results/**/TEST-*.xml'
instrumetation-tests:
runs-on: macos-latest
timeout-minutes: 60
needs: build
strategy:
# Allow tests to continue on other devices if they fail on one device.
fail-fast: false
matrix:
api-level: [ 28, 30 ]
steps:
- uses: actions/checkout@v2
- name: Set up JDK 11.0.8
uses: actions/setup-java@v1
with:
java-version: 11.0.8
# Determine what emulator image to use. We run all API 29+ emulators using
# the google_apis image
- name: Determine emulator target
id: determine-target
env:
API_LEVEL: ${{ matrix.api-level }}
run: |
TARGET="default"
if [ "$API_LEVEL" -ge "26" ]; then
TARGET="google_apis"
fi
echo "::set-output name=TARGET::$TARGET"
- name: Run device tests
uses: reactivecircus/android-emulator-runner@v2
with:
api-level: ${{ matrix.api-level }}
target: ${{ steps.determine-target.outputs.TARGET }}
profile: Galaxy Nexus
emulator-build: 7425822 # https://github.com/ReactiveCircus/android-emulator-runner/issues/160
script: ./gradlew connectedCheck
- name: Upload test results
if: always()
uses: actions/upload-artifact@v2
with:
name: test-results-${{ matrix.api-level }}-${{ steps.determine-target.outputs.TARGET }}-${{ matrix.shard }}
path: |
**/build/reports/*
**/build/outputs/*/connected/*