name: Comprehensive Tests on: push: branches: [ main, develop ] pull_request: branches: [ main, develop ] workflow_dispatch: concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: test-compilation: name: Test Compilation & PDF Generation runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Install system 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 tectonic (for tectonic integration tests) curl -fsSL https://drop-sh.fullyjustified.net | sh sudo mv tectonic /usr/local/bin/ # Install Python dependencies python3 -m pip install --upgrade pip pip install xlsx2csv csv2latex bibtexparser - name: Run shell script tests run: | echo "==========================================" echo "Running Shell Script Tests" echo "==========================================" ./tests/scripts/run_all_tests.sh - name: Test manuscript compilation (full mode) run: | echo "==========================================" echo "Test 1: Full Manuscript Compilation" echo "==========================================" ./compile.sh manuscript # Verify PDF generated if [ ! -f "01_manuscript/manuscript.pdf" ]; then echo "✗ ERROR: manuscript.pdf not generated" exit 1 fi # Check PDF size SIZE=$(stat -c%s "01_manuscript/manuscript.pdf") if [ "$SIZE" -lt 10240 ]; then echo "✗ ERROR: PDF too small ($SIZE bytes)" exit 1 fi # Check diff PDF (optional - won't exist in fresh clones without archive history) if [ -f "01_manuscript/manuscript_diff.pdf" ]; then echo "✓ Diff PDF generated" else echo "⚠ Diff PDF not generated (normal for fresh clones without archive history)" fi echo "✓ Full mode: PDF generated ($SIZE bytes)" - name: Test manuscript compilation (fast mode) run: | echo "==========================================" echo "Test 2: Fast Mode (--no_figs --no_diff)" echo "==========================================" ./compile.sh manuscript --no-figs --no-diff if [ ! -f "01_manuscript/manuscript.pdf" ]; then echo "✗ ERROR: Fast mode PDF not generated" exit 1 fi SIZE=$(stat -c%s "01_manuscript/manuscript.pdf") echo "✓ Fast mode: PDF generated ($SIZE bytes)" - name: Test manuscript compilation (ultra-fast mode) run: | echo "==========================================" echo "Test 3: Ultra-Fast Mode (all speed flags)" echo "==========================================" ./compile.sh manuscript --no-figs --no-tables --no-diff --draft if [ ! -f "01_manuscript/manuscript.pdf" ]; then echo "✗ ERROR: Ultra-fast mode PDF not generated" exit 1 fi SIZE=$(stat -c%s "01_manuscript/manuscript.pdf") echo "✓ Ultra-fast mode: PDF generated ($SIZE bytes)" - name: Test dark mode compilation run: | echo "==========================================" echo "Test 4: Dark Mode" echo "==========================================" ./compile.sh manuscript --no-figs --no-tables --no-diff --dark-mode # Verify PDF generated if [ ! -f "01_manuscript/manuscript.pdf" ]; then echo "✗ ERROR: Dark mode PDF not generated" exit 1 fi # Verify dark mode styling was injected if ! grep -q "dark_mode.tex" "01_manuscript/manuscript.tex"; then echo "✗ ERROR: Dark mode not injected into compiled tex" exit 1 fi SIZE=$(stat -c%s "01_manuscript/manuscript.pdf") echo "✓ Dark mode: PDF generated with dark styling ($SIZE bytes)" - name: Test supplementary compilation run: | echo "==========================================" echo "Test 5: Supplementary Document" echo "==========================================" ./compile.sh supplementary --no-figs --no-diff if [ ! -f "02_supplementary/supplementary.pdf" ]; then echo "✗ ERROR: Supplementary PDF not generated" exit 1 fi SIZE=$(stat -c%s "02_supplementary/supplementary.pdf") echo "✓ Supplementary: PDF generated ($SIZE bytes)" - name: Test option name flexibility run: | echo "==========================================" echo "Test 6: Option Name Flexibility (hyphens vs underscores)" echo "==========================================" # Test with hyphens ./compile.sh manuscript --no-figs --no-tables --no-diff --draft # Test with underscores ./compile.sh manuscript --no_figs --no_tables --no_diff --draft echo "✓ Both hyphen and underscore formats work" - name: Upload test PDFs uses: actions/upload-artifact@v4 if: always() with: name: test-pdfs-${{ github.run_number }} path: | 01_manuscript/*.pdf 02_supplementary/*.pdf 03_revision/*.pdf retention-days: 7 if-no-files-found: warn - name: Test summary if: success() run: | echo "==========================================" echo "✓ All Compilation Tests Passed!" echo "==========================================" echo " ✓ Shell script tests (30 tests)" echo " ✓ Full compilation with PDF validation" echo " ✓ Fast mode compilation" echo " ✓ Ultra-fast mode compilation" echo " ✓ Dark mode compilation" echo " ✓ Supplementary compilation" echo " ✓ Option name flexibility" echo "==========================================" # EOF