Commits

ccd7ddb12ef683e86410cdf911f1c95d3ed59445
Switch branches/tags
All users
All time
April 2026
Su Mo Tu We Th Fr Sa
29 30 31 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 1 2
3 4 5 6 7 8 9

Commits on April 5, 2026

  1. replace inline FORTSH_RC_FILE with RC_DISABLE_ENV
    POSIX scripts that prepended FORTSH_RC_FILE=/dev/null now use
    env \$RC_DISABLE_ENV — set by the profile system to the appropriate
    rc-disable mechanism for each shell.
    
    Also clean FORTSH_PATH -> RESOLVED_SHELL in run_posix_tests.sh.
    espadonne committed
  2. generalize error normalization and rename fortsh references
    - normalize_shell_name() now catches any *sh: prefix, not just bash/fortsh
    - Debug output labels: 'fortsh:' -> 'shell:'
    - Variable names: fortsh_file -> shell_file, fortsh_code -> shell_code, etc.
    - Temp file paths: /tmp/fortsh_* -> /tmp/bensch_*
    - Comments and descriptions: 'for fortsh' -> generic
    espadonne committed
  3. replace FORTSH_BIN with SHELL_BIN across all shell scripts
    39 files updated. SHELL_BIN is now required (no default path).
    Scripts that previously defaulted to ../bin/fortsh now error
    with "SHELL_BIN must be set" if the variable is unset.
    espadonne committed
  4. extract builtin test runner
    Source: fortsh/tests/builtins/run_builtin_tests.sh
    espadonne committed
  5. extract integration tests
    12 cross-feature integration tests: expansion, redirection, builtin
    cross-interaction, control flow, error handling, functions, pipelines,
    scope/env, subshells, job control, signals/traps.
    
    Source: fortsh/tests/builtins/integration/
    espadonne committed
  6. extract fortsh-specific builtin tests
    test_abbr, test_defun, test_config, test_memory, test_perf, test_help
    These test builtins unique to fortsh (abbreviations, function syntax,
    memory pool stats, performance counters).
    
    Source: fortsh/tests/builtins/
    espadonne committed
  7. extract extended builtin tests (bash/zsh features)
    test_complete_compgen.sh, test_coproc.sh, test_let.sh — bash extensions
    not part of POSIX but supported by bash, zsh, ksh, fortsh.
    
    Source: fortsh/tests/builtins/
    espadonne committed
  8. extract portable builtin tests
    32 shell-agnostic builtin test scripts using compare_output against
    BASH_REF. Covers alias, arithmetic, arrays, cd/pwd, declare, echo,
    eval, exec, export/unset, fc, flow control, getopts, hash, history,
    jobs/fg/bg, kill/wait, local, printf, pushd/popd, read, readonly,
    set/shopt, shift, source, stress, test, times, trap, type/command,
    ulimit, umask, variable ops.
    
    Source: fortsh/tests/builtins/
    espadonne committed
  9. extract POSIX compliance shell scripts
    17 posix_compliance_*.sh + 8 posix_gaps_*.sh + run_posix_tests.sh
    ~19,450 lines, ~3800 test assertions.
    
    Verbatim copies. FORTSH_BIN references will be replaced in Phase 4.
    
    Source: fortsh/tests/posix_*.sh, fortsh/tests/run_posix_tests.sh
    espadonne committed
  10. extract interactive specs: prompt, stress, auto-generated POSIX
    prompt_display.yaml -> suites/interactive/posix/
    stress.yaml -> suites/interactive/stress/
    7 posix_*_auto.yaml files -> suites/interactive/posix/
    
    Verbatim copies. 4254 lines, ~692 test cases.
    
    Source: fortsh/tests/interactive/test_specs/
    espadonne committed
  11. extract interactive specs: completion, signals, vi_mode
    completion.yaml -> suites/interactive/completion/
    signals_jobs.yaml -> suites/interactive/signals/
    vi_mode.yaml -> suites/interactive/editing/
    
    Verbatim copies. 1360 lines, ~102 test cases.
    
    Source: fortsh/tests/interactive/test_specs/
    espadonne committed
  12. extract core interactive YAML specs
    posix.yaml -> suites/interactive/posix/posix_core.yaml
    line_editing.yaml -> suites/interactive/editing/
    history.yaml -> suites/interactive/history/
    
    Verbatim copies. 1690 lines, ~220 test cases.
    
    Source: fortsh/tests/interactive/test_specs/
    espadonne committed
  13. extract shared test harness for shell script tests
    Rename FORTSH_BIN -> SHELL_BIN (now required, no default path).
    Keep BASH_REF as-is — semantically correct as reference shell.
    Rename temp file prefix fortsh_timeout -> bensch_timeout.
    
    Source: fortsh/tests/builtins/test_harness.sh
    espadonne committed
  14. extract pytest configuration
    Rename fixtures: fortsh -> shell, fortsh_path -> shell_path,
    fortsh_with_rc -> shell_with_rc, fortsh_factory -> shell_factory
    
    Source: fortsh/tests/interactive/conftest.py
    espadonne committed
  15. extract python dependencies
    pexpect, PyYAML, pytest, pytest-html, colorama — all shell-agnostic.
    
    Source: fortsh/tests/interactive/requirements.txt
    espadonne committed
  16. extract utility modules
    keys.py — 60+ VT100/xterm key definitions (100% shell-agnostic)
    matchers.py — output matching library (exact, regex, contains, etc.)
    
    Verbatim copies, no changes needed.
    
    Source: fortsh/tests/interactive/utils/
    espadonne committed
  17. extract test runner from fortsh
    Verbatim copy of run_tests.py with identifier renames:
      FortshPTY -> ShellPTY, fortsh_path -> shell_path
      --fortsh -> --shell, find_fortsh_binary -> find_shell_binary
      Local variable fortsh -> shell throughout
    
    Removed hardcoded fortsh binary search paths — bensch requires
    explicit --shell argument.
    
    Source: fortsh/tests/interactive/run_tests.py
    espadonne committed
  18. extract PTY engine from fortsh
    Verbatim copy of fortsh_pty.py with identifier renames:
      FortshPTY -> ShellPTY
      FortshTestSession -> ShellTestSession
      fortsh_path -> shell_path
      ___FORTSH_CMD_END___ -> ___BENSCH_CMD_END___
    
    Shell-specific env vars (FORTSH_MINIMAL_ECHO, FORTSH_TEST_MODE,
    FORTSH_RC_FILE) retained — will be profile-driven in Phase 4.
    
    Source: fortsh/tests/interactive/fortsh_pty.py
    espadonne committed