Loading...
No commits yet
Not committed History
Blame
compile-test.yml • 4.8 KB
name: Compile Test

on:
  push:
    branches: [ main, develop ]
    paths:
      - '01_manuscript/**'
      - 'scripts/shell/**'
      - 'config/**'
      - 'shared/**'
      - 'scripts/installation/requirements/**'
      - '.github/workflows/compile-test.yml'
  pull_request:
    branches: [ main, develop ]
    paths:
      - '01_manuscript/**'
      - 'scripts/shell/**'
      - 'config/**'
      - 'shared/**'
      - 'scripts/installation/requirements/**'
      - '.github/workflows/compile-test.yml'

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  compile:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v4

    - name: Cache pip dependencies
      uses: actions/cache@v4
      with:
        path: ~/.cache/pip
        key: pip-${{ runner.os }}-xlsx2csv-csv2latex
        restore-keys: |
          pip-${{ runner.os }}-

    - name: Install dependencies
      run: |
        sudo apt-get update
        xargs sudo apt-get install -y < scripts/installation/requirements/system-debian.txt

        # Install yq (Go version)
        sudo wget -qO /usr/local/bin/yq \
          https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64
        sudo chmod +x /usr/local/bin/yq

        # Install Python dependencies
        python3 -m pip install --upgrade pip
        pip install xlsx2csv csv2latex bibtexparser

    - name: Test compilation (full mode)
      run: |
        echo "Testing full compilation..."
        ./compile.sh manuscript

        # Verify PDF was generated
        if [ ! -f "01_manuscript/manuscript.pdf" ]; then
          echo "ERROR: manuscript.pdf not generated"
          exit 1
        fi

        # Verify PDF has reasonable size (> 10KB)
        SIZE=$(stat -f%z "01_manuscript/manuscript.pdf" 2>/dev/null || stat -c%s "01_manuscript/manuscript.pdf")
        if [ "$SIZE" -lt 10240 ]; then
          echo "ERROR: PDF too small ($SIZE bytes), likely corrupted"
          exit 1
        fi

        echo "✓ Full compilation successful: manuscript.pdf ($SIZE bytes)"

    - name: Test compilation (fast mode with --no_diff)
      run: |
        echo "Testing fast compilation mode..."
        ./compile.sh manuscript --no-figs --no-diff

        # Verify PDF was generated
        if [ ! -f "01_manuscript/manuscript.pdf" ]; then
          echo "ERROR: Fast mode PDF not generated"
          exit 1
        fi

        echo "✓ Fast mode compilation successful"

    - name: Test compilation (draft mode)
      run: |
        echo "Testing draft mode..."
        ./compile.sh manuscript --no-figs --no-tables --draft

        # Verify PDF was generated
        if [ ! -f "01_manuscript/manuscript.pdf" ]; then
          echo "ERROR: Draft mode PDF not generated"
          exit 1
        fi

        echo "✓ Draft mode compilation successful"

    - name: Test compilation (dark mode)
      run: |
        echo "Testing dark mode..."
        ./compile.sh manuscript --no-figs --no-tables --no-diff --dark-mode

        # Verify PDF was generated
        if [ ! -f "01_manuscript/manuscript.pdf" ]; then
          echo "ERROR: Dark mode PDF not generated"
          exit 1
        fi

        # Verify dark mode was injected
        if ! grep -q "dark_mode.tex" "01_manuscript/manuscript.tex"; then
          echo "ERROR: Dark mode styling not injected"
          exit 1
        fi

        echo "✓ Dark mode compilation successful"

    - name: Test supplementary compilation
      run: |
        echo "Testing supplementary compilation..."
        ./compile.sh supplementary --no-figs --no-diff

        # Verify PDF was generated
        if [ ! -f "02_supplementary/supplementary.pdf" ]; then
          echo "ERROR: Supplementary PDF not generated"
          exit 1
        fi

        echo "✓ Supplementary compilation successful"

    - name: Test revision compilation
      run: |
        echo "Testing revision compilation..."
        ./compile.sh revision --no-figs --no-tables --draft

        # Verify PDF was generated (or check expected location)
        PDF_EXISTS=false
        for pdf_path in "03_revision/revision.pdf" "03_revision/archive/"*.pdf; do
          if [ -f "$pdf_path" ]; then
            PDF_EXISTS=true
            break
          fi
        done

        if [ "$PDF_EXISTS" = false ]; then
          echo "WARNING: Revision PDF not found (may not have revision content)"
        else
          echo "✓ Revision compilation successful"
        fi

    - name: Upload compiled PDFs
      uses: actions/upload-artifact@v4
      if: success()
      with:
        name: compiled-pdfs
        path: |
          01_manuscript/manuscript.pdf
          01_manuscript/manuscript_diff.pdf
          02_supplementary/supplementary.pdf
          03_revision/revision.pdf
        retention-days: 30
        if-no-files-found: warn