#
# Copyright (c) 2021, 2022 Oracle and/or its affiliates. All rights reserved.
#
# This program and the accompanying materials are made available under the
# terms of the Eclipse Public License v. 2.0 which is available at
# http://www.eclipse.org/legal/epl-2.0,
# or the Eclipse Distribution License v. 1.0 which is available at
# http://www.eclipse.org/org/documents/edl-v10.php.
#
# SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
#

name: Yasson

on: [push, pull_request]

jobs:
  build:
    name: Test on JDK ${{ matrix.java_version }}
    runs-on: ubuntu-latest

    strategy:
      matrix:
        java_version: [ 11, 17 ]

    steps:
      - name: Checkout for build
        uses: actions/checkout@v2.3.4
        with:
          fetch-depth: 0
      - name: Set up compile JDK
        uses: actions/setup-java@v2
        with: #Compile java needs to be the highest to ensure proper compilation of the multi-release jar
          distribution: 'adopt'
          java-version: 17
      - name: Maven cache
        uses: actions/cache@v2
        env:
          cache-name: maven-cache
        with:
          path:
            ~/.m2
          key: build-${{ env.cache-name }}
      - name: Copyright
        run: bash etc/copyright.sh
      - name: Checkstyle
        run: mvn -B -Pstaging checkstyle:checkstyle
      - name: Yasson install
        run: mvn -U -C -Pstaging clean install -DskipTests
      - name: Set up JDK for tests
        uses: actions/setup-java@v2
        with:
          distribution: 'adopt'
          java-version: ${{ matrix.java_version }}
      - name: Yasson tests
        run: mvn -U -C -Dmaven.javadoc.skip=true -Pstaging verify
      - name: JSONB-API TCK
        run: cd yasson-tck && mvn -U -B test
