name: Test on: push: branches: - 3.* pull_request: permissions: contents: read jobs: test: name: Test runs-on: ubuntu-22.04 steps: # Obtención del código - uses: actions/checkout@v4 with: submodules: 'true' # Necesario para que tj-actions/changed-files se ejecute # dentro de un tiempo adecuado fetch-depth: 2 # Instalación de dependencias - name: Preparar Python v3.13 uses: actions/setup-python@v5 with: python-version: "3.13" cache: "pip" - name: Configura dpkg/apt para ejecutarse de manera eficiente uses: abbbi/github-actions-tune@v1 - name: Deshabilita triggers de postgresql-common run: sudo sed -i '/postgresql-common/d' /var/lib/dpkg/triggers/File - name: Instalar dependencias de sistema run: | sudo apt-get update sudo apt-get install -y hunspell hunspell-es gettext language-pack-es locales-all - name: Instalar dependencias de Python run: | python -m pip install -r requirements.txt - name: Listar paquetes y versiones run: | pip list pospell --version powrap --version # Cálculo de los archivos .po a verificar. # En el caso de un PR, sólo se chequean los .po que se están editando, # mientras que en caseo de un push a las ramas 3.* queremos revisar # todos los archivos - name: Obtiene la lista de archivos .po con cambios (sólo en PRs) if: github.event_name == 'pull_request' id: changed-po-files uses: tj-actions/changed-files@v45 with: files: | **/*.po - name: Calcula lista de archivos .po a revisar id: po-files-to-check env: PO_FILES_TO_CHECK: ${{ steps.changed-po-files.conclusion == 'skipped' && '**/*.po' || steps.changed-po-files.outputs.all_changed_files }} run: | echo "po_files_to_check=$PO_FILES_TO_CHECK" >> $GITHUB_OUTPUT echo "any_po_files_to_check=`test -n \"$PO_FILES_TO_CHECK\" && echo true || echo false`" >> $GITHUB_OUTPUT - name: Muestra outputs de steps anteriores para debugueo env: CHANGED_PO_FILES: ${{ toJson(steps.changed-po-files) }} PO_FILES_TO_CHECK: ${{ toJson(steps.po-files-to-check) }} run: | echo "steps.changed-po-files=$PO_FILES_TO_CHECK" echo "steps.po-files-to-change.$CHANGED_PO_FILES" # Chequeos a realizar - name: TRANSLATORS run: | diff -Naur TRANSLATORS <(LANG=es python scripts/sort.py < TRANSLATORS) # FIXME # Se deshabilita porque el CI usa gettext 0.21 que es muy antiguo # y la mayoría de los sistemas usa 0.22.X #- name: Powrap # if: steps.po-files-to-check.outputs.any_po_files_to_check == 'true' # run: powrap --diff --check --quiet ${{ steps.po-files-to-check.outputs.po_files_to_check }} - name: Sphinx lint if: steps.po-files-to-check.outputs.any_po_files_to_check == 'true' run: sphinx-lint ${{ steps.po-files-to-check.outputs.po_files_to_check }} - name: Pospell if: steps.po-files-to-check.outputs.any_po_files_to_check == 'true' run: python scripts/check_spell.py ${{ steps.po-files-to-check.outputs.po_files_to_check }} # Construcción de la documentación - name: Construir documentación run: | # Normal build PYTHONWARNINGS=ignore::FutureWarning,ignore::RuntimeWarning sphinx-build -j auto -W --keep-going -b html -d cpython/Doc/_build/doctree -D language=es . cpython/Doc/_build/html