#
# 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@v4
        with: #Compile java needs to be the highest to ensure proper compilation of the multi-release jar
          distribution: 'temurin'
          java-version: 17
          cache: 'maven'
      - name: Copyright
        run: bash etc/copyright.sh
      - name: Checkstyle
        run: mvn -B checkstyle:checkstyle
      - name: Yasson install
#        run: mvn -U -C -Pstaging clean install -DskipTests
        run: mvn -U -C clean install -DskipTests
      - name: Set up JDK for tests
        uses: actions/setup-java@v4
        with:
          distribution: 'temurin'
          java-version: ${{ matrix.java_version }}
          cache: 'maven'
      - name: Yasson tests
        run: mvn -U -B -C -Dmaven.javadoc.skip=true -Pstaging verify
      - name: JSONB-API TCK
        run: cd yasson-tck && mvn -U -B test -DargLine="-Djava.locale.providers=COMPAT"
