| 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/* |