#!/bin/bash
# -*- coding: utf-8 -*-
# Test file for: compile_3pass.sh
THIS_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
ROOT_DIR="$(realpath "$THIS_DIR/../..")"
# Test counter
TESTS_RUN=0
TESTS_PASSED=0
TESTS_FAILED=0
# Colors
GREEN='\033[0;32m'
RED='\033[0;31m'
NC='\033[0m'
assert_success() {
local cmd="$1"
local desc="${2:-$cmd}"
((TESTS_RUN++))
if eval "$cmd" > /dev/null 2>&1; then
echo -e "${GREEN}✓${NC} $desc"
((TESTS_PASSED++))
else
echo -e "${RED}✗${NC} $desc"
((TESTS_FAILED++))
fi
}
assert_file_exists() {
local file="$1"
((TESTS_RUN++))
if [ -f "$file" ]; then
echo -e "${GREEN}✓${NC} File exists: $file"
((TESTS_PASSED++))
else
echo -e "${RED}✗${NC} File missing: $file"
((TESTS_FAILED++))
fi
}
# Add your tests here
test_placeholder() {
echo "TODO: Add tests for compile_3pass.sh"
}
# Run tests
main() {
echo "Testing: compile_3pass.sh"
echo "========================================"
test_placeholder
echo "========================================"
echo "Results: $TESTS_PASSED/$TESTS_RUN passed"
[ $TESTS_FAILED -gt 0 ] && exit 1
exit 0
}
main "$@"
# --------------------------------------------------------------------------------
# Start of Source Code from: /home/ywatanabe/proj/scitex-writer/scripts/shell/modules/engines/compile_3pass.sh
# --------------------------------------------------------------------------------
# #!/bin/bash
# # -*- coding: utf-8 -*-
# # Timestamp: "2025-11-11 23:16:00 (ywatanabe)"
# # File: ./scripts/shell/modules/engines/compile_3pass.sh
# # 3-pass compilation engine (most compatible)
#
# THIS_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
#
# # Source command switching for command detection
# source "${THIS_DIR}/../command_switching.src"
#
# compile_with_3pass() {
# local tex_file="$1"
# local pdf_file="${tex_file%.tex}.pdf"
#
# echo_info " Using 3-pass engine"
#
# # Get commands
# local pdf_cmd=$(get_cmd_pdflatex)
# local bib_cmd=$(get_cmd_bibtex)
#
# if [ -z "$pdf_cmd" ] || [ -z "$bib_cmd" ]; then
# echo_error " No LaTeX installation found (native, module, or container)"
# return 1
# fi
#
# # Add compilation options (use configured LOG_DIR for clean separation)
# pdf_cmd="$pdf_cmd -output-directory=$LOG_DIR -shell-escape -interaction=nonstopmode -file-line-error"
#
# # Helper function for timed execution
# run_pass() {
# local cmd="$1"
# local verbose="$2"
# local desc="$3"
#
# echo_info " $desc"
# local start=$(date +%s)
#
# if [ "$verbose" = "true" ]; then
# eval "$cmd" 2>&1 | grep -v "gocryptfs not found"
# local ret=${PIPESTATUS[0]}
# else
# eval "$cmd" >/dev/null 2>&1
# local ret=$?
# fi
#
# local end=$(date +%s)
# echo_info " ($(($end - $start))s)"
#
# return $ret
# }
#
# # Main compilation sequence
# local total_start=$(date +%s)
# local tex_basename=$(basename "${tex_file%.tex}")
# local aux_file="${LOG_DIR}/${tex_basename}.aux"
# local bib_base="${LOG_DIR}/${tex_basename}"
#
# # Check draft mode
# if [ "$SCITEX_WRITER_DRAFT_MODE" = "true" ]; then
# # Draft: single pass only
# run_pass "$pdf_cmd $tex_file" "$SCITEX_WRITER_VERBOSE_PDFLATEX" "Single pass (draft mode)"
# else
# # Full: 3-pass compilation
# run_pass "$pdf_cmd $tex_file" "${SCITEX_WRITER_VERBOSE_PDFLATEX:-false}" "Pass 1/3: Initial"
#
# # Process bibliography if needed
# if [ -f "$aux_file" ]; then
# if grep -q "\\citation\|\\bibdata\|\\bibstyle" "$aux_file" 2>/dev/null; then
# run_pass "$bib_cmd $bib_base" "${SCITEX_WRITER_VERBOSE_BIBTEX:-false}" "Processing bibliography"
# fi
# fi
#
# run_pass "$pdf_cmd $tex_file" "${SCITEX_WRITER_VERBOSE_PDFLATEX:-false}" "Pass 2/3: Bibliography"
# run_pass "$pdf_cmd $tex_file" "${SCITEX_WRITER_VERBOSE_PDFLATEX:-false}" "Pass 3/3: Final"
# fi
#
# local total_end=$(date +%s)
# echo_success " 3-pass compilation: $(($total_end - $total_start))s"
#
# return 0
# }
#
# # Export function
# export -f compile_with_3pass
#
# # EOF
# --------------------------------------------------------------------------------
# End of Source Code from: /home/ywatanabe/proj/scitex-writer/scripts/shell/modules/engines/compile_3pass.sh
# --------------------------------------------------------------------------------