name: Automated tests on: push: branches: [ edge ] pull_request: branches: [ edge ] jobs: tests: # https://github.com/actions/virtual-environments runs-on: ubuntu-latest steps: - name: Git checkout source code uses: actions/checkout@v2 # Composer tests - name: Check PHP syntax run: composer run-script php-lint - name: Check PHTML syntax run: composer run-script phtml-lint - name: Check translations syntax run: composer run-script translations && git diff --exit-code - name: Use Composer cache id: composer-cache uses: actions/cache@v2 with: path: vendor key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }} restore-keys: | ${{ runner.os }}-php- - name: Run Composer install run: composer install --prefer-dist --no-progress if: steps.composer-cache.outputs.cache-hit != 'true' - name: Run PHP unit tests run: composer run-script phpunit - name: PHP_CodeSniffer run: composer run-script phpcs - name: PHPStan run: composer run-script phpstan # NPM tests - name: Uses Node.js uses: actions/setup-node@v2 with: # https://nodejs.org/en/about/releases/ node-version: '14' cache: 'npm' - run: npm ci - name: Check JavaScript syntax run: npm run --silent eslint - name: Check Markdown syntax run: npm run --silent markdownlint - name: Check CSS syntax run: npm run --silent stylelint - name: Check Right-to-left CSS run: npm run --silent rtlcss && git diff --exit-code # Shell tests - name: Use shell cache id: shell-cache uses: actions/cache@v2 with: path: bin key: ${{ runner.os }}-bin-shfmt@v3.4.0c-hadolint@v2.7.0-typos@v1.3.3 - name: Add ./bin/ to $PATH run: mkdir -p bin/ && echo "${PWD}/bin" >> $GITHUB_PATH - name: Setup Go if: steps.shell-cache.outputs.cache-hit != 'true' # Multiple Go versions are pre-installed but the default 1.15 is too old # https://github.com/actions/setup-go uses: actions/setup-go@v2 with: go-version: '1.17' - name: Install shfmt if: steps.shell-cache.outputs.cache-hit != 'true' run: GOBIN=${PWD}/bin/ go install mvdan.cc/sh/v3/cmd/shfmt@v3.4.0 - name: Check shell script syntax # shellcheck is pre-installed https://github.com/actions/virtual-environments/blob/main/images/linux/Ubuntu2004-README.md run: ./tests/shellchecks.sh - name: Install hadolint if: steps.shell-cache.outputs.cache-hit != 'true' run: curl -sL -o ./bin/hadolint "https://github.com/hadolint/hadolint/releases/download/v2.7.0/hadolint-$(uname -s)-$(uname -m)" && chmod 700 ./bin/hadolint - name: Check Dockerfile syntax run: find . -name 'Dockerfile*' -print0 | xargs -0 -n1 ./bin/hadolint --failure-threshold warning - name: Install typos if: steps.shell-cache.outputs.cache-hit != 'true' run: | cd bin ; wget -q 'https://github.com/crate-ci/typos/releases/download/v1.3.3/typos-v1.3.3-x86_64-unknown-linux-musl.tar.gz' && tar -xvf *.tar.gz './typos' && chmod +x typos && rm *.tar.gz ; cd .. - name: Check spelling run: bin/typos