Skip to content

Merge pull request #4534 from faucetsdn/dependabot/pip/pyright-1.1.370 #3197

Merge pull request #4534 from faucetsdn/dependabot/pip/pyright-1.1.370

Merge pull request #4534 from faucetsdn/dependabot/pip/pyright-1.1.370 #3197

name: Code health checks
on: [push, pull_request]
env:
FILES_CHANGED: "all"
CODECHECK_PY_VER: '3.10'
jobs:
codecheck:
name: Code check
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v4
- if: ${{ github.event_name == 'pull_request' }}
name: Setup dependencies for changed files action
run: |
sudo apt-get update -y
sudo apt-get install -y jq
git config --global --add safe.directory "$GITHUB_WORKSPACE"
- if: ${{ github.event_name == 'pull_request' }}
name: Get file changes
id: file_changes
uses: tj-actions/changed-files@v44
with:
json: true
escape_json: false
- if: ${{ steps.file_changes.outputs.all_changed_files }}
name: Compare file changes
run: |
FILES_ALL="$(echo '${{ steps.file_changes.outputs.all_changed_files }}' | jq -r '.[]' | tr '\n' ' ')"
FILES_ADDED="$(echo '${{ steps.file_changes.outputs.added_files }}' | jq -r '.[]' | tr '\n' ' ')"
FILES_DELETED="$(echo '${{ steps.file_changes.outputs.deleted_files }}' | jq -r '.[]' | tr '\n' ' ')"
FILES_RENAMED="$(echo '${{ steps.file_changes.outputs.renamed_files }}' | jq -r '.[]' | tr '\n' ' ')"
FILES_MODIFIED="$(echo '${{ steps.file_changes.outputs.modified_files }}' | jq -r '.[]' | tr '\n' ' ')"
FILES_ADDED_MODIFIED="${FILES_ADDED} ${FILES_MODIFIED}"
PY_FILES_CHANGED="$(echo ${FILES_ADDED_MODIFIED} | tr ' ' '\n' | grep -E '\.py$' | tr '\n' ' ')"
CI_TEST_FILES_CHANGED="$(echo ${FILES_ADDED_MODIFIED} | tr ' ' '\n' | grep -E '(workflows\/tests-.+\.yml$|Dockerfile\.tests$|^docker\/.+$|tests\/.+\.sh$)' | tr '\n' ' ')"
RQ_FILES_CHANGED="$(echo ${FILES_ADDED_MODIFIED} | tr ' ' '\n' | grep -E 'requirements(.*)txt$' | tr '\n' ' ')"
DOC_FILES_CHANGED="$(echo ${FILES_ADDED_MODIFIED} | tr ' ' '\n' | grep -E '^docs/.+$' | tr '\n' ' ')"
if [ ! -z "${CI_TEST_FILES_CHANGED}" ]; then FILES_CHANGED="all"; else FILES_CHANGED="${FILES_ADDED_MODIFIED}"; fi
echo "Git added/modified: ${FILES_ADDED_MODIFIED}"
echo "CI test files changed: ${CI_TEST_FILES_CHANGED}"
echo "Python code changed: ${PY_FILES_CHANGED}"
echo "Requirement changes: ${RQ_FILES_CHANGED}"
echo "Documentation changes: ${DOC_FILES_CHANGED}"
echo "Files changed: ${FILES_CHANGED}"
echo "FILES_CHANGED=${FILES_CHANGED}" >> ${GITHUB_ENV}
echo "PY_FILES_CHANGED=${PY_FILES_CHANGED}" >> ${GITHUB_ENV}
echo "RQ_FILES_CHANGED=${RQ_FILES_CHANGED}" >> ${GITHUB_ENV}
echo "DOC_FILES_CHANGED=${DOC_FILES_CHANGED}" >> ${GITHUB_ENV}
- name: Set up python-${{ env.CODECHECK_PY_VER }}
uses: actions/setup-python@v5
with:
python-version: ${{ env.CODECHECK_PY_VER }}
- name: Install dependencies
run: |
./docker/pip_deps.sh --extra-requirements="codecheck-requirements.txt"
- name: Run black formatter
run: |
if [[ "${{ env.FILES_CHANGED }}" == "all" || ! -z "${{ env.RQ_FILES_CHANGED }}" ]]; then
echo "Running black on everything"
black . --check
elif [ ! -z "${{ env.PY_FILES_CHANGED }}" ]; then
echo "Running black on ${{ env.PY_FILES_CHANGED }}"
black ${{ env.PY_FILES_CHANGED }} --check
fi
- if: ${{ env.FILES_CHANGED == 'all' || env.PY_FILES_CHANGED }}
name: Run pylint
run: |
cd ./tests/codecheck
if [[ "${{ env.FILES_CHANGED }}" == "all" || ! -z "${{ env.RQ_FILES_CHANGED }}" ]]; then
echo "Running pylint on everything"
./pylint.sh
else
echo "Running pylint on ${{ env.PY_FILES_CHANGED }}"
./pylint.sh ${{ env.PY_FILES_CHANGED }}
fi