# 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@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v2 minimum required
      - uses: axel-op/googlejavaformat-action@fe78db8a90171b6a836449f8d0e982d5d71e5c5a
        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@ac593985615ec2ede58e132d2e21d2b1cbd6127c
      - uses: subosito/flutter-action@dbf1fa04f4d2e52c33185153d06cdb5443aa189d
        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@ac593985615ec2ede58e132d2e21d2b1cbd6127c
      - uses: subosito/flutter-action@dbf1fa04f4d2e52c33185153d06cdb5443aa189d
        with:
          channel: ${{ matrix.sdk }}
          cache: true
          cache-key: 'flutter-:os:-:channel:-:version:-:arch:-:hash:'
      - uses: actions/setup-java@308abcba03229002f0055e17d79d00c32fca160f
        with:
          distribution: 'zulu'
          java-version: '11'
          cache: maven
      ## Committed bindings are formatted with clang-format.
      ## So this is required to format generated bindings identically
      - name: install clang tools
        run: |
          sudo apt-get update -y
          sudo apt-get install -y clang-format
      - name: Install dependencies
        run: dart pub get
      - name: build in_app_java APK
        run: flutter build apk --target-platform=android-arm64
        working-directory: ./pkgs/jnigen/example/in_app_java
      - name: build notification_plugin example APK
        run: flutter build apk --target-platform=android-arm64
        working-directory: ./pkgs/jnigen/example/notification_plugin/example
      - 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@9ba913c152ae4be1327bfb9085dc806cedb44057
        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@ac593985615ec2ede58e132d2e21d2b1cbd6127c
      - uses: actions/setup-java@308abcba03229002f0055e17d79d00c32fca160f
        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@ac593985615ec2ede58e132d2e21d2b1cbd6127c
      - uses: subosito/flutter-action@dbf1fa04f4d2e52c33185153d06cdb5443aa189d
        with:
          channel: 'stable'
          cache: true
          cache-key: 'flutter-:os:-:channel:-:version:-:arch:-:hash:'
      - uses: actions/setup-java@308abcba03229002f0055e17d79d00c32fca160f
        with:
          distribution: 'zulu'
          java-version: '11'
      - name: install clang tools & CMake
        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@ac593985615ec2ede58e132d2e21d2b1cbd6127c
      - uses: subosito/flutter-action@dbf1fa04f4d2e52c33185153d06cdb5443aa189d
        with:
          channel: 'stable'
          cache: true
          cache-key: 'flutter-:os:-:channel:-:version:-:arch:-:hash:'
      - uses: actions/setup-java@308abcba03229002f0055e17d79d00c32fca160f
        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@9ba913c152ae4be1327bfb9085dc806cedb44057
        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@ac593985615ec2ede58e132d2e21d2b1cbd6127c
      - uses: subosito/flutter-action@dbf1fa04f4d2e52c33185153d06cdb5443aa189d
        with:
          channel: 'stable'
          cache: true
          cache-key: 'flutter-:os:-:channel:-:version:-:arch:-:hash:'
      - uses: actions/setup-java@308abcba03229002f0055e17d79d00c32fca160f
        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@ac593985615ec2ede58e132d2e21d2b1cbd6127c
      - name: Setup clang
        uses: egor-tensin/setup-clang@01d437c0618e76d3c44e7d58f5d175c75cb37bac
        with:
          version: latest
          platform: x64
      - uses: subosito/flutter-action@dbf1fa04f4d2e52c33185153d06cdb5443aa189d
        with:
          channel: 'stable'
          cache: true
          cache-key: 'flutter-:os:-:channel:-:version:-:arch:-:hash:'
      - uses: actions/setup-java@308abcba03229002f0055e17d79d00c32fca160f
        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
      - name: build in_app_java APK
        run: flutter build apk --target-platform=android-arm64
        working-directory: ./pkgs/jnigen/example/in_app_java
      - name: build notification_plugin example APK
        run: flutter build apk --target-platform=android-arm64
        working-directory: ./pkgs/jnigen/example/notification_plugin/example
      - run: dart test

  test_jni_macos_minimal:
    needs: [analyze_jni]
    runs-on: macos-latest
    defaults:
      run:
        working-directory: ./pkgs/jni
    steps:
      - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c
      - uses: subosito/flutter-action@dbf1fa04f4d2e52c33185153d06cdb5443aa189d
        with:
          channel: 'stable'
          cache: true
          cache-key: 'flutter-:os:-:channel:-:version:-:arch:-:hash:'
      - uses: actions/setup-java@308abcba03229002f0055e17d79d00c32fca160f
        with:
          distribution: 'temurin'
          java-version: '11'
      - 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_macos_minimal:
    needs: [analyze_jnigen]
    runs-on: macos-latest
    defaults:
      run:
        working-directory: ./pkgs/jnigen
    steps:
      - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c
      - name: Setup clang format
        uses: ConorMacBride/install-package@3e7ad059e07782ee54fa35f827df52aae0626f30
        with:
          brew: clang-format
      - uses: subosito/flutter-action@dbf1fa04f4d2e52c33185153d06cdb5443aa189d
        with:
          channel: 'stable'
          cache: true
          cache-key: 'flutter-:os:-:channel:-:version:-:arch:-:hash:'
      - uses: actions/setup-java@308abcba03229002f0055e17d79d00c32fca160f
        with:
          distribution: 'temurin'
          java-version: '11'
      - run: git config --global core.autocrlf true
      - 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@ac593985615ec2ede58e132d2e21d2b1cbd6127c
      - uses: subosito/flutter-action@dbf1fa04f4d2e52c33185153d06cdb5443aa189d
        with:
          channel: 'stable'
          cache: true
          cache-key: 'flutter-:os:-:channel:-:version:-:arch:-:hash:'
      - uses: actions/setup-java@308abcba03229002f0055e17d79d00c32fca160f
        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@ac593985615ec2ede58e132d2e21d2b1cbd6127c
      - uses: subosito/flutter-action@dbf1fa04f4d2e52c33185153d06cdb5443aa189d
        with:
          channel: 'stable'
          cache: true
          cache-key: 'flutter-:os:-:channel:-:version:-:arch:-:hash:'
      - uses: actions/setup-java@308abcba03229002f0055e17d79d00c32fca160f
        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@ac593985615ec2ede58e132d2e21d2b1cbd6127c
      - uses: actions/setup-java@308abcba03229002f0055e17d79d00c32fca160f
        with:
          distribution: 'zulu'
          java-version: '11'
      - uses: subosito/flutter-action@dbf1fa04f4d2e52c33185153d06cdb5443aa189d
        with:
          channel: 'stable'
          cache: true
          cache-key: 'flutter-:os:-:channel:-:version:-:arch:-:hash:'
      - run: flutter pub get
      - run: flutter build apk

  run_pdfbox_example_linux:
    runs-on: ubuntu-latest
    defaults:
      run:
        working-directory: ./pkgs/jnigen/example/pdfbox_plugin
    steps:
      - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c
      - uses: subosito/flutter-action@dbf1fa04f4d2e52c33185153d06cdb5443aa189d
        with:
          channel: 'stable'
          cache: true
          cache-key: 'flutter-:os:-:channel:-:version:-:arch:-:hash:'
      - uses: actions/setup-java@308abcba03229002f0055e17d79d00c32fca160f
        with:
          distribution: 'zulu'
          java-version: '11'
      - run: |
          sudo apt-get update -y
          sudo apt-get install -y ninja-build libgtk-3-dev clang-format
      - run: flutter config --enable-linux-desktop
      - run: dart pub get
      - name: Generate bindings
        run: |
          dart run jnigen -Doutput.c.path=_c/ -Doutput.dart.path=_dart/ --config jnigen.yaml
      - name: Compare generated bindings
        run: |
          diff -r _c src/
          diff -r _dart lib/src/third_party
      - name: Generate full bindings
        run: dart run jnigen --config jnigen.yaml --override classes="org.apache.pdfbox"
      - 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
          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@9ba913c152ae4be1327bfb9085dc806cedb44057
        with:
          github-token: ${{ secrets.github_token }}
          parallel-finished: true
