blob: 9bae1257f31466c475bc1f2c26d6448dab852018 [file]
# Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file
# for details. All rights reserved. Use of this source code is governed by a
# BSD-style license that can be found in the LICENSE file.
name: Dart CI
on:
# Run on PRs and pushes to the default branch.
push:
branches: [ main ]
pull_request:
branches: [ main ]
schedule:
- cron: "0 0 * * 0"
env:
PUB_ENVIRONMENT: bot.github
jobs:
check_java_format:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2 # v2 minimum required
- uses: axel-op/googlejavaformat-action@v3
with:
args: "--set-exit-if-changed"
analyze_jni_gen:
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./pkgs/jni_gen
strategy:
fail-fast: false
matrix:
sdk: [stable]
steps:
- uses: actions/checkout@v2
- uses: dart-lang/setup-dart@v1.0
with:
sdk: ${{ matrix.sdk }}
- id: install
name: Install dependencies
run: dart pub get
- name: Check formatting
run: dart format --output=none --set-exit-if-changed .
if: always() && steps.install.outcome == 'success'
- name: Analyze code
run: dart analyze --fatal-infos
if: always() && steps.install.outcome == 'success'
test_jni_gen:
needs: analyze_jni_gen
runs-on: ${{ matrix.os }}
defaults:
run:
working-directory: ./pkgs/jni_gen
strategy:
fail-fast: false
matrix:
# Add macos-latest and/or windows-latest if relevant for this package.
os: [ubuntu-latest]
sdk: [2.17.0, dev]
steps:
- uses: actions/checkout@v2
- uses: dart-lang/setup-dart@v1.0
with:
sdk: stable
- uses: actions/setup-java@v2
with:
distribution: 'zulu'
java-version: '11'
cache: maven
- name: Install dependencies
run: dart pub get
- name: Run VM tests
run: dart test --platform vm
- name: Install coverage
run: dart pub global activate coverage
- name: Collect coverage
run: dart pub global run coverage:test_with_coverage
- name: Upload coverage
uses: coverallsapp/github-action@v1.1.2
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
flag-name: jni_gen_tests
parallel: true
path-to-lcov: ./pkgs/jni_gen/coverage/lcov.info
## TODO: More minimal test on windows after fixing dev dependency.
## i.e do not rerun analyze and format steps, and do not require flutter.
## IssueRef: https://github.com/dart-lang/jni_gen/issues/15
test_summarizer:
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./pkgs/jni_gen/java
steps:
- uses: actions/checkout@v2
- uses: actions/setup-java@v2
with:
distribution: 'zulu'
java-version: '11'
- name: run tests using maven surefire
run: mvn surefire:test
test_jni:
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./pkgs/jni
steps:
- uses: actions/checkout@v3
## Requires flutter to analyze example.
## Using dart alone doesn't work.
- uses: subosito/flutter-action@v2
with:
channel: 'stable'
cache: true
cache-key: 'flutter-:os:-:channel:-:version:-:arch:-:hash:'
- uses: actions/setup-java@v2
with:
distribution: 'zulu'
java-version: '11'
- run: |
sudo apt-get update -y
sudo apt-get install -y ninja-build libgtk-3-dev
- run: dart pub get
- run: dart run bin/setup.dart
- run: flutter pub get
- name: Check formatting
run: flutter format --output=none --set-exit-if-changed .
- name: Run lints
run: flutter analyze --fatal-infos
- name: Get dependencies
run: dart pub get
- name: Run tests
run: dart test
- name: Install coverage
run: dart pub global activate coverage
- name: Collect coverage
run: dart pub global run coverage:test_with_coverage
- name: Upload coverage
uses: coverallsapp/github-action@v1.1.2
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
flag-name: jni_tests
parallel: true
path-to-lcov: ./pkgs/jni/coverage/lcov.info
build_jni_example_linux:
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./pkgs/jni/example
steps:
- uses: actions/checkout@v3
- uses: subosito/flutter-action@v2
with:
channel: 'stable'
cache: true
cache-key: 'flutter-:os:-:channel:-:version:-:arch:-:hash:'
- uses: actions/setup-java@v2
with:
distribution: 'zulu'
java-version: '11'
- run: |
sudo apt-get update -y
sudo apt-get install -y ninja-build libgtk-3-dev
- run: flutter config --enable-linux-desktop
- run: flutter pub get
- run: dart run jni:setup
- run: flutter build linux
build_jni_example_windows:
runs-on: windows-latest
defaults:
run:
working-directory: ./pkgs/jni/example
steps:
- uses: actions/checkout@v3
- uses: subosito/flutter-action@v2
with:
channel: 'stable'
cache: true
cache-key: 'flutter-:os:-:channel:-:version:-:arch:-:hash:'
- uses: actions/setup-java@v2
with:
distribution: 'zulu'
java-version: '11'
- run: flutter config --enable-windows-desktop
- run: flutter pub get
- run: flutter build windows
build_jni_example_android:
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./pkgs/jni/example
steps:
- uses: actions/checkout@v3
- uses: actions/setup-java@v2
with:
distribution: 'zulu'
java-version: '11'
- uses: subosito/flutter-action@v2
with:
channel: 'stable'
cache: true
cache-key: 'flutter-:os:-:channel:-:version:-:arch:-:hash:'
- run: flutter pub get
- run: flutter build apk
build_notification_plugin_example:
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./pkgs/jni_gen/examples/notification_plugin
steps:
- uses: actions/checkout@v3
- uses: actions/setup-java@v2
with:
distribution: 'zulu'
java-version: '11'
- uses: subosito/flutter-action@v2
with:
channel: 'stable'
cache: true
cache-key: 'flutter-:os:-:channel:-:version:-:arch:-:hash:'
- run: flutter pub get
- run: flutter analyze
- run: flutter build apk
working-directory: ./pkgs/jni_gen/examples/notification_plugin/example
- name: re-generate bindings
run: flutter pub run jni_gen -Ddart_root=_dart -Dc_root=_c --config jnigen.yaml
- name: compare generated dart bindings
run: diff -qr lib/ _dart
- name: compare generated C bindings
run: diff -qr src/ _c
build_in_app_java_example:
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./pkgs/jni_gen/examples/in_app_java
steps:
- uses: actions/checkout@v3
- uses: actions/setup-java@v2
with:
distribution: 'zulu'
java-version: '11'
- uses: subosito/flutter-action@v2
with:
channel: 'stable'
cache: true
cache-key: 'flutter-:os:-:channel:-:version:-:arch:-:hash:'
- run: flutter pub get
- run: flutter analyze
- run: flutter build apk
- name: re-generate bindings
run: flutter pub run jni_gen -Ddart_root=_dart -Dc_root=_c --config jnigen.yaml
- name: compare generated dart bindings
run: diff -qr lib/android_utils _dart
- name: compare generated C bindings
run: diff -qr src/android_utils _c
coveralls_finish:
needs: [test_jni_gen, test_jni]
runs-on: ubuntu-latest
steps:
- name: Coveralls finished
uses: coverallsapp/github-action@master
with:
github-token: ${{ secrets.github_token }}
parallel-finished: true
run_pdfbox_example_linux:
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./pkgs/jni_gen/examples/pdfbox_plugin
steps:
- uses: actions/checkout@v3
- uses: subosito/flutter-action@v2
with:
channel: 'stable'
cache: true
cache-key: 'flutter-:os:-:channel:-:version:-:arch:-:hash:'
- uses: actions/setup-java@v2
with:
distribution: 'zulu'
java-version: '11'
- run: |
sudo apt-get update -y
sudo apt-get install -y ninja-build libgtk-3-dev
- run: flutter config --enable-linux-desktop
- run: dart pub get
- name: Generate bindings
run: |
dart run jni_gen -Dc_root=_c -Ddart_root=_dart --config jnigen.yaml
- name: Compare generated bindings
run: |
diff -qr _c src/
diff -qr _dart lib/third_party
- name: Generate full bindings
run: dart run jni_gen --config jnigen_full.yaml
- name: Analyze generated bindings
run: |
flutter pub get # dart-analyze errors on flutter example
flutter analyze
- name: Run standalone example
run: |
dart pub get
dart run jni:setup && dart run jni:setup -p pdfbox_plugin
wget 'https://dart.dev/guides/language/specifications/DartLangSpec-v2.2.pdf'
dart run bin/pdf_info.dart DartLangSpec-v2.2.pdf
working-directory: ./pkgs/jni_gen/examples/pdfbox_plugin/dart_example
- name: Build flutter example for pdfbox_plugin
run: |
flutter pub get
flutter build linux
working-directory: ./pkgs/jni_gen/examples/pdfbox_plugin/example