1name: Android Unit Tests
2
3on:
4  workflow_dispatch: {}
5  push:
6    branches: [master]
7    paths:
8      - .github/workflows/android-unit-tests.yml
9      - android/**
10      - fastlane/**
11      - packages/**/android/**
12      - tools/**
13      - yarn.lock
14  pull_request:
15    paths:
16      - .github/workflows/android-unit-tests.yml
17      - android/**
18      - fastlane/**
19      - packages/**/android/**
20      - tools/**
21      - yarn.lock
22
23concurrency:
24  group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.ref }}
25  cancel-in-progress: true
26
27jobs:
28  test:
29    runs-on: ubuntu-18.04
30    steps:
31      - name: Check out repository
32        uses: actions/checkout@v2
33        with:
34          submodules: true
35      - name: Get yarn cache directory path
36        id: yarn-cache-dir-path
37        run: echo "::set-output name=dir::$(yarn cache dir)"
38      - uses: actions/cache@v2
39        with:
40          path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
41          key: ${{ runner.os }}-yarn-${{ hashFiles('yarn.lock') }}
42          restore-keys: |
43            ${{ runner.os }}-yarn-
44      - run: yarn install --frozen-lockfile
45      - uses: actions/cache@v2
46        with:
47          path: ~/.gradle/caches
48          key: ${{ runner.os }}-gradle-${{ hashFiles('android/*.gradle*') }}
49          restore-keys: |
50            ${{ runner.os }}-gradle-
51      - uses: actions/cache@v2
52        id: cache-android-ndk
53        with:
54          path: /usr/local/lib/android/sdk/ndk/19.2.5345600/
55          key: ${{ runner.os }}-ndk-19.2.5345600
56          restore-keys: |
57            ${{ runner.os }}-ndk-
58      - name: Install NDK
59        if: steps.cache-android-ndk.outputs.cache-hit != 'true'
60        run: |
61          sudo $ANDROID_HOME/tools/bin/sdkmanager --install "ndk;19.2.5345600"
62      - run: echo "$(pwd)/bin" >> $GITHUB_PATH
63      - name: Run native Android unit tests
64        env:
65          ANDROID_NDK_HOME: /usr/local/lib/android/sdk/ndk/19.2.5345600/
66        run: expotools native-unit-tests --platform android
67      - name: Save test results
68        if: always()
69        uses: actions/upload-artifact@v2
70        with:
71          name: test-results
72          path: packages/**/build/test-results/**/*xml
73      - name: Run Spotless lint check
74        env:
75          ANDROID_NDK_HOME: /usr/local/lib/android/sdk/ndk/19.2.5345600/
76        working-directory: android
77        run: ./gradlew spotlessCheck || echo '::error Spotless lint failed. Run `./gradlew spotlessApply` to automatically fix formatting.'
78