-
Start test containers:
docker compose up -d
-
Setup SSH keys and config:
# Generate test SSH key ./docker/setup-keys.sh # Add SSH config entries cat >> ~/.ssh/config << 'EOF' Host tramp-zsh HostName localhost Port 2222 User testuser IdentityFile ~/.ssh/tramp-term-test StrictHostKeyChecking no UserKnownHostsFile /dev/null Host tramp-tcsh HostName localhost Port 2223 User testuser IdentityFile ~/.ssh/tramp-term-test StrictHostKeyChecking no UserKnownHostsFile /dev/null Host tramp-fish HostName localhost Port 2224 User testuser IdentityFile ~/.ssh/tramp-term-test StrictHostKeyChecking no UserKnownHostsFile /dev/null Host tramp-bash HostName localhost Port 2225 User testuser IdentityFile ~/.ssh/tramp-term-test StrictHostKeyChecking no UserKnownHostsFile /dev/null EOF
-
Test in Emacs:
M-x tramp-term RET tramp-zsh RET
(No password required with SSH key authentication)
For each shell (zsh, tcsh, fish, bash):
- Pre-check: Verify clean environment with
./scripts/test-runner.sh - Connect:
M-x tramp-term RET tramp-{shell} RET - Verify injection: Look for shell configuration being applied
- Navigate:
cd test-files - Verify tracking: Check that
default-directoryupdates in Emacs - Test TRAMP:
C-x C-fshould show correct remote path - Create/edit files: Test file operations work seamlessly
- Test oh-my-zsh compatibility if installed
- Verify precmd function doesn't conflict
- Test completion and prompt customization
- Test alias-based tracking works
- Verify prompt formatting
- Test variable expansion in aliases
- Test function-based prompt
- Verify fish-specific syntax works
- Test completion system compatibility
- Baseline comparison for other shells
- Test standard PROMPT_COMMAND approach
- Multiple sessions: Open multiple terminals to same host
- Directory changes: Test nested directories and symlinks
- Error handling: Test with invalid paths
- Reconnection: Test after network interruption
- File operations: Create, edit, save files via TRAMP
Before tramp-term connection:
- Clean shell environments with no AnSiT sequences
- Default shell prompts and configurations
After tramp-term connection:
tramp-term--initializeshould inject appropriate shell configuration- Directory changes reflected in Emacs
default-directory - TRAMP file operations use correct remote paths
- AnSiT escape sequences visible in terminal output
Common issues:
- Shell configuration injection may fail for unsupported shells
- Prompt detection may need adjustment for custom prompts
- Shell-specific syntax variations in escape sequences
- Check AnSiT sequences: Look for
\033AnSiTcin terminal output - Monitor variables: Check
default-directoryvalue - TRAMP debug:
(setq tramp-verbose 6)for detailed logging
docker compose down
docker system prune -f