| name: unit testing | |
| on: push | |
| jobs: | |
|   build-and-test: | |
|     runs-on: ubuntu-latest | |
|     steps: | |
|       # Checks out code from Github. | |
|       - name: Checkout repo | |
|         uses: actions/checkout@v2 | |
|       # Restore cache if available. | |
|       - name: Restore cached dependencies | |
|         id: dep-cache | |
|         uses: actions/cache@v2 | |
|         env: | |
|           cache-name: jstoxml-cache | |
|         with: | |
|           path: node_modules | |
|           key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} | |
|           restore-keys: | | |
|             ${{ runner.os }}-build-${{ env.cache-name }}- | |
|             ${{ runner.os }}-build- | |
|             ${{ runner.os }}- | |
|       # Fully install from scratch when no cache is available. | |
|       - name: Install dependencies from scratch (cache miss only) | |
|         if: steps.dep-cache.outputs.cache-hit != 'true' | |
|         run: npm i | |
|       - name: Unit tests | |
|         run: npm test | |
|         shell: bash
 |