#
# Copyright (c) 2021, 2026 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:
    branches:
      - 'main'
      - '*-RELEASE'
  pull_request:
    branches:
      - 'main'
      - '*-RELEASE'

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

    strategy:
      matrix:
        java_version: [ 11, 17, 21 ]
        locale: [ en_US, en_GB ]

    env:
      LANG: ${{ matrix.locale }}.UTF-8
      LC_ALL: ${{ matrix.locale }}.UTF-8

    steps:
      - name: Checkout for build
        uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
        with:
          fetch-depth: 0
      - name: Set up compile JDK
        uses: actions/setup-java@03ad4de0992f5dab5e18fcb136590ce7c4a0ac95 # v5.6.0
        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 clean install -DskipTests
      - name: Yasson tests
        run: mvn -U -B -C -Dmaven.javadoc.skip=true verify
      - name: JSONB-API TCK
        run: cd yasson-tck && mvn -U -B test -DargLine="-Djava.locale.providers=COMPAT"
