blob: 63ffb6572bf7d8ee3ec2a94fe1e73505dec3204e [file] [log] [blame]
name: Tests
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
env:
CXX: clang++
CC: clang
jobs:
build:
runs-on: ubuntu-18.04
steps:
- uses: actions/checkout@v2
with:
submodules: recursive
- uses: actions/cache@v2
with:
path: |
~/.gradle
~/.m2
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: Detect runner CPU architecture
run: |
echo "CPU_ARCH=$(uname -m)" >> $GITHUB_ENV
- name: Cache ICU build output
id: cache-icu
uses: actions/cache@v2
with:
path: ~/icu-bin
key: ${{ runner.os }}-${{env.CPU_ARCH}}-icu-${{ hashFiles('nativeruntime/external/icu/**') }}
- name: Build ICU
if: steps.cache-icu.outputs.cache-hit != 'true'
run: |
cd nativeruntime/external/icu/icu4c/source
CFLAGS="-fPIC" CXXFLAGS="-fPIC" ./runConfigureICU Linux --enable-static --prefix=$HOME/icu-bin
make -j4
make install
- name: Build
run: ICU_ROOT_DIR=$HOME/icu-bin SKIP_ICU_BUILD=true SKIP_ERRORPRONE=true SKIP_JAVADOC=true ./gradlew clean assemble testClasses --parallel --stacktrace --no-watch-fs
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,31']
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: Cache ICU build output
id: cache-icu
uses: actions/cache@v2
with:
path: ~/icu-bin
key: ${{ runner.os }}-icu-${{ hashFiles('nativeruntime/external/icu/**') }}
- name: Run unit tests
run: |
ICU_ROOT_DIR=$HOME/icu-bin SKIP_ICU_BUILD=true SKIP_ERRORPRONE=true SKIP_JAVADOC=true ./gradlew test --info --stacktrace --continue \
--parallel \
--no-watch-fs \
-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'
instrumentation-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: Nexus One
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/*