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
							 |