# 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.

# Note: There's a script under `jnigen/tool` which runs a subset of these
# tests on local machine. It's a useful little script for checking the
# code before making a PR. If you add a task here, you might want to add
# the equivalent in that script as well.

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_jnigen:
    runs-on: ubuntu-latest
    defaults:
      run:
        working-directory: ./pkgs/jnigen
    strategy:
      fail-fast: false
      matrix:
        sdk: [stable]
    steps:
      - uses: actions/checkout@v2
      - uses: subosito/flutter-action@v2
        with:
          channel: ${{ matrix.sdk }}
          cache: true
          cache-key: 'flutter-:os:-:channel:-:version:-:arch:-:hash:'
      - 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_jnigen:
    needs: [analyze_jnigen]
    runs-on: ${{ matrix.os }}
    defaults:
      run:
        working-directory: ./pkgs/jnigen
    strategy:
      fail-fast: false
      matrix:
        os: [ubuntu-latest]
        sdk: [stable, beta]
    steps:
      - uses: actions/checkout@v2
      - uses: subosito/flutter-action@v2
        with:
          channel: ${{ matrix.sdk }}
          cache: true
          cache-key: 'flutter-:os:-:channel:-:version:-:arch:-:hash:'
      - 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: jnigen_tests
          parallel: true
          path-to-lcov: ./pkgs/jnigen/coverage/lcov.info
        if: ${{ matrix.sdk == 'stable' }}

  test_summarizer:
    runs-on: ubuntu-latest
    defaults:
      run:
        working-directory: ./pkgs/jnigen/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

  analyze_jni:
    runs-on: ubuntu-latest
    defaults:
      run:
        working-directory: ./pkgs/jni
    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'
      - name: install clang tools
        run: |
          sudo apt-get update -y
          sudo apt-get install -y clang-format build-essential cmake
      - 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: Check C code formatting using clang-format
        run: clang-format --dry-run -Werror dartjni.c dartjni.h third_party/*.c third_party/*.h
        working-directory: ./pkgs/jni/src
      - name: verify that tool/generate_ide_files.dart generates a file
        run: |
          dart run tool/generate_ide_files.dart
          ls src/compile_commands.json

  test_jni:
    runs-on: ubuntu-latest
    needs: [analyze_jni]
    defaults:
      run:
        working-directory: ./pkgs/jni
    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 libclang-dev
      - run: dart pub get
      - run: dart run jni:setup
      - 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
      - name: regenerate & compare ffigen bindings
        run: |
          cp lib/src/third_party/jni_bindings_generated.dart __old_bindings
          dart run ffigen --config ffigen.yaml
          diff lib/src/third_party/jni_bindings_generated.dart __old_bindings

  ## Run tests for package:jni on windows, just to confirm it works.
  ## Do not, for example, collect coverage or check formatting.
  test_jni_windows_minimal:
    needs: [analyze_jni]
    runs-on: windows-latest
    defaults:
      run:
        working-directory: ./pkgs/jni
    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: Add-Content $env:GITHUB_PATH "$env:JAVA_HOME\bin\server"
      - run: dart pub get
      - run: dart run jni:setup
      ## TODO(#51): -j 1 is required to avoid a rare race condition which is caused by
      ## all tests which spawn JVM being run in same process.
      - run: dart test -j 1

  test_jnigen_windows_minimal:
    needs: [analyze_jnigen]
    runs-on: windows-latest
    defaults:
      run:
        working-directory: ./pkgs/jnigen
    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: git config --global core.autocrlf true
      - run: Add-Content $env:GITHUB_PATH "$env:JAVA_HOME\bin\server"
      - run: dart pub get
      - run: dart run jnigen:setup
      - run: dart test

  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/jnigen/example/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/jnigen/example/notification_plugin/example
      - name: re-generate bindings
        run: flutter pub run jnigen -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/jnigen/example/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 jnigen -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

  run_pdfbox_example_linux:
    runs-on: ubuntu-latest
    defaults:
      run:
        working-directory: ./pkgs/jnigen/example/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 jnigen -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 jnigen --config jnigen.yaml --override classes="org.apache.pdfbox.pdmodel;org.apache.pdfbox.text"
      - 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/jnigen/example/pdfbox_plugin/dart_example
      - name: Build flutter example for pdfbox_plugin
        run: |
          flutter pub get
          flutter build linux
        working-directory: ./pkgs/jnigen/example/pdfbox_plugin/example

  coveralls_finish:
    needs: [test_jnigen, test_jni]
    runs-on: ubuntu-latest
    steps:
      - name: Coveralls finished
        uses: coverallsapp/github-action@master
        with:
          github-token: ${{ secrets.github_token }}
          parallel-finished: true
