#
#    Licensed to the Apache Software Foundation (ASF) under one or more
#    contributor license agreements.  See the NOTICE file distributed with
#    this work for additional information regarding copyright ownership.
#    The ASF licenses this file to You under the Apache License, Version 2.0
#    (the "License"); you may not use this file except in compliance with
#    the License.  You may obtain a copy of the License at
#  
#       http://www.apache.org/licenses/LICENSE-2.0
#  
#    Unless required by applicable law or agreed to in writing, software
#    distributed under the License is distributed on an "AS IS" BASIS,
#    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#    See the License for the specific language governing permissions and
#    limitations under the License.
#

# Builds JDO and runs the TCK
#
# This workflow is run for every submitted pull request and every push on the main branch
name: Build JDO & Run TCK

on:
  push:
    branches:
      - 'main'
  pull_request:

jobs:
  format-check:
    name: Check Code Formatting
    continue-on-error: true
    runs-on: ubuntu-latest
    steps:
    - name: Checkout
      uses: actions/checkout@v2
      with:
        fetch-depth: 1
    - name: Check Format
      run: |
        mvn -Pverify-format clean compile
      shell: 'bash'

  build-jdo:
    name: Build JDO & Run TCK
    needs: format-check
    runs-on: ubuntu-latest
    strategy:
      matrix:
        # test against Java 8 and 11
        java: [ 8, 11, 17 ]
    defaults:
      run:
        shell: bash

    steps:
      - name: Checkout
        uses: actions/checkout@v2
        with:
          fetch-depth: 1

      - name: Setup java
        uses: actions/setup-java@v1
        with:
          java-version: ${{ matrix.java }}

      # Builds JDO & Runs the TCK
      # Skips JNDI-related tests as they require external libraries
      - name: Build JDO & Run TCK
        run: |
          mvn -Djdo.tck.skipJndi clean install
