🧑💻 update example #130
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Test | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
branches: | |
- main | |
workflow_call: | |
defaults: | |
run: | |
shell: bash | |
env: | |
PUB_ENVIRONMENT: bot.github | |
permissions: read-all | |
jobs: | |
analyze: | |
name: "Analyze" | |
runs-on: ubuntu-latest | |
steps: | |
- name: Cache Pub hosted dependencies | |
uses: actions/cache@v4 | |
with: | |
path: "~/.pub-cache/hosted" | |
key: "os:ubuntu-latest;pub-cache-hosted;sdk:stable;packages:qs_dart;commands:codegen-test" | |
restore-keys: | | |
os:ubuntu-latest;pub-cache-hosted;sdk:stable;packages:qs_dart | |
os:ubuntu-latest;pub-cache-hosted;sdk:stable | |
os:ubuntu-latest;pub-cache-hosted | |
os:ubuntu-latest | |
- name: Setup Dart SDK | |
uses: dart-lang/setup-dart@v1 | |
with: | |
sdk: stable | |
- id: checkout | |
name: Checkout repository | |
uses: actions/checkout@v4 | |
- id: install | |
name: Install dependencies | |
run: dart pub get | |
- name: Check the formatting of one or more Dart files | |
run: dart format lib test --output=none --set-exit-if-changed . | |
- name: Analyze the project's Dart code | |
run: dart analyze lib test --fatal-infos | |
test: | |
name: "Test" | |
needs: analyze | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
include: | |
- platform: chrome | |
- platform: vm | |
steps: | |
- name: Cache Pub hosted dependencies | |
uses: actions/cache@v4 | |
with: | |
path: "~/.pub-cache/hosted" | |
key: "os:ubuntu-latest;pub-cache-hosted;sdk:stable;packages:qs_dart;commands:codegen-test" | |
restore-keys: | | |
os:ubuntu-latest;pub-cache-hosted;sdk:stable;packages:qs_dart | |
os:ubuntu-latest;pub-cache-hosted;sdk:stable | |
os:ubuntu-latest;pub-cache-hosted | |
os:ubuntu-latest | |
- name: Setup Dart SDK | |
uses: dart-lang/setup-dart@v1 | |
with: | |
sdk: stable | |
- id: checkout | |
name: Checkout repository | |
uses: actions/checkout@v4 | |
- id: install | |
name: Install dependencies | |
run: dart pub get | |
- name: Run the project's tests in Chrome | |
if: ${{ matrix.platform == 'chrome' }} | |
run: dart test --platform chrome | |
- name: Install coverage dependencies | |
if: ${{ matrix.platform == 'vm' }} | |
run: | | |
dart pub global activate coverage | |
dart pub global activate remove_from_coverage | |
- name: Collect and report coverage | |
if: ${{ matrix.platform == 'vm' }} | |
run: | | |
dart pub global run coverage:test_with_coverage | |
dart pub global run remove_from_coverage:remove_from_coverage -f coverage/lcov.info -r '\.g\.dart$' | |
- name: Upload coverage to Codecov | |
if: ${{ matrix.platform == 'vm' }} | |
uses: codecov/codecov-action@v4 | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} | |
slug: techouse/qs | |
file: ./coverage/lcov.info | |
verbose: true | |
- name: Upload coverage to Codacy | |
if: ${{ matrix.platform == 'vm' }} | |
uses: codacy/codacy-coverage-reporter-action@v1 | |
with: | |
project-token: ${{ secrets.CODACY_PROJECT_TOKEN }} | |
coverage-reports: coverage/lcov.info | |
ensure_compatibility: | |
name: "Ensure compatibility with qs" | |
needs: analyze | |
runs-on: ubuntu-latest | |
steps: | |
- name: Cache Pub hosted dependencies | |
uses: actions/cache@v4 | |
with: | |
path: "~/.pub-cache/hosted" | |
key: "os:ubuntu-latest;pub-cache-hosted;sdk:stable;packages:qs_dart;commands:codegen-test" | |
restore-keys: | | |
os:ubuntu-latest;pub-cache-hosted;sdk:stable;packages:qs_dart | |
os:ubuntu-latest;pub-cache-hosted;sdk:stable | |
os:ubuntu-latest;pub-cache-hosted | |
os:ubuntu-latest | |
- name: Setup Dart SDK | |
uses: dart-lang/setup-dart@v1 | |
with: | |
sdk: stable | |
- name: Setup Node | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 20 | |
- id: checkout | |
name: Checkout repository | |
uses: actions/checkout@v4 | |
- id: install_dart_dependencies | |
name: Install Dart dependencies | |
run: dart pub get | |
- id: install_node_dependencies | |
name: Install Node dependencies | |
working-directory: test/comparison | |
run: npm install | |
- name: Run a comparison test between qs_dart and qs for JavaScript | |
working-directory: test/comparison | |
continue-on-error: true | |
run: | | |
set -e | |
node_output=$(node qs.js) | |
dart_output=$(dart run qs.dart) | |
if [ "$node_output" == "$dart_output" ]; then | |
echo "The outputs are identical." | |
else | |
echo "The outputs are different." | |
exit 1 | |
fi |