# 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.
---
name: 'test-patch'
author: 'Apache Software Foundation'
description: 'Apache Yetus precommit patch testing'
branding:
  color: purple
  icon: feather
inputs:
  basedir:
    description: 'Directory location of source'
    required: true
    default: "${GITHUB_WORKSPACE}"
  blankseolignorefile:
    descipription: 'regex list of files to ignore blanks EOL'
    default: .yetus/blanks-eol.txt
  blankstabsignorefile:
    description: 'regex list of files to ignore tabs'
    default: .yetus/blanks-tabs.txt
  bufbasedir:
    description: 'Location where to run buf'
    default: .
  buildtool:
    description: 'Name of build tool plug-in to use'
    default: "nobuild"
  continuousimprovement:
    description: 'Pass branches that would otherwise fail'
    default: false
  excludes:
    description: 'Filename of files/directories to ignore'
    default: '.yetus/excludes.txt'
  githubtoken:
    description: 'GitHub token to use'
    required: true
    default: ''
  javahome:
    description: 'Location of the JDK to use'
    default: '/usr/lib/jvm/java-11-openjdk-amd64'
  patchdir:
    description: 'Directory location of logs, temp space, etc'
    required: true
    default: "/tmp/yetus"
  pip:
    description: 'Major Python version to use for pip: pip2 or pip3'
    default: pip3
  plugins:
    description: 'Fine grained control over plug-ins'
    default: 'all,-asflicense,-author,-findbugs,-gitlab,
      -golangcilint,-jira,-shelldocs'
  project:
    description: 'Name of project to put on reports, default personality, etc'
    default: unknown
  pylint:
    description: 'Major Python version to use for pylint: pylint2 or pylint3'
    default: pylint3
  reapermode:
    description: 'How to handle stale surefire tests'
    default: kill
  reviveconfig:
    description: 'Configuration file for revive'
    default: .revive.toml
  testsfilter:
    description: 'Only warn on these test plug-ins'
    default: ''

runs:
  using: 'docker'
  image: docker://apache/yetus:main
  args:
    - test-patch
    - --basedir=${{ inputs.basedir }}
    - --blanks-eol-ignore-file=${{ inputs.blankseolignorefile }}
    - --blanks-tabs-ignore-file=${{ inputs.blankstabsignorefile }}
    - --brief-report-file=${{ inputs.patchdir }}/brief.txt
    - --buf-basedir=${{ inputs.bufbasedir }}
    - --build-tool=${{ inputs.buildtool }}
    - --console-report-file=${{ inputs.patchdir }}/console.txt
    - --continuous-improvement=${{ inputs.continuousimprovement }}
    - --excludes=${{ inputs.excludes }}
    - --github-token=${{ inputs.githubtoken }}
    - --html-report-file=${{ inputs.patchdir }}/report.html
    - --ignore-unknown-options=true
    - --junit-report-xml=${{ inputs.patchdir }}/junit-report.xml
    - --patch-dir=${{ inputs.patchdir }}
    - --plugins=${{ inputs.plugins }}
    - --project=${{ inputs.project }}
    - --pylint-pip-cmd=${{ inputs.pip }}
    - --pylint-requirements=true
    - --pylint=${{ inputs.pylint }}
    - --reapermode=${{ inputs.reapermode }}
    - --report-unknown-options=false
    - --revive-config=${{ inputs.reviveconfig }}
    - --tests-filter=${{ inputs.testsfilter }}
