This commit is contained in:
2026-01-21 11:27:51 -05:00
commit f70af9b185
50 changed files with 17166 additions and 0 deletions
@@ -0,0 +1,15 @@
# VHS tape for lazygit - Classic 4:3 aspect ratio (1024x768)
Output lazygit-classic-4-3.gif
Set Shell "bash"
Set Width 1024
Set Height 768
Set FontSize 14
Set Framerate 10
Type "cd /home/ajet/repos/lazygitclj && lazygit"
Enter
Sleep 5s
Screenshot lazygit-classic-4-3.png
Type "q"
Sleep 500ms
@@ -0,0 +1,15 @@
# VHS tape for lazygit - Standard 16:9 aspect ratio (1280x720)
Output lazygit-standard-16-9.gif
Set Shell "bash"
Set Width 1280
Set Height 720
Set FontSize 14
Set Framerate 10
Type "cd /home/ajet/repos/lazygitclj && lazygit"
Enter
Sleep 5s
Screenshot lazygit-standard-16-9.png
Type "q"
Sleep 500ms
@@ -0,0 +1,15 @@
# VHS tape for lazygit - Tall 9:16 aspect ratio (600x1000)
Output lazygit-tall-9-16.gif
Set Shell "bash"
Set Width 600
Set Height 1000
Set FontSize 14
Set Framerate 10
Type "cd /home/ajet/repos/lazygitclj && lazygit"
Enter
Sleep 5s
Screenshot lazygit-tall-9-16.png
Type "q"
Sleep 500ms
@@ -0,0 +1,15 @@
# VHS tape for lazygit - Ultrawide 32:9 aspect ratio (1600x450)
Output lazygit-ultrawide-32-9.gif
Set Shell "bash"
Set Width 1600
Set Height 450
Set FontSize 14
Set Framerate 10
Type "cd /home/ajet/repos/lazygitclj && lazygit"
Enter
Sleep 5s
Screenshot lazygit-ultrawide-32-9.png
Type "q"
Sleep 500ms
@@ -0,0 +1,15 @@
# VHS tape for lazygit - Wide 21:9 aspect ratio (1400x600)
Output lazygit-wide-21-9.gif
Set Shell "bash"
Set Width 1400
Set Height 600
Set FontSize 14
Set Framerate 10
Type "cd /home/ajet/repos/lazygitclj && lazygit"
Enter
Sleep 5s
Screenshot lazygit-wide-21-9.png
Type "q"
Sleep 500ms
@@ -0,0 +1,17 @@
# VHS tape for lazygitclj - Classic 4:3 aspect ratio (1024x768)
Output lazygitclj-classic-4-3.gif
Require bb
Set Shell "bash"
Set Width 1024
Set Height 768
Set FontSize 14
Set Framerate 10
Type "./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-ar && cd /tmp/lazygitclj-e2e-ar && bb --config /home/ajet/repos/lazygitclj/bb.edn start"
Enter
Sleep 3s
Screenshot lazygitclj-classic-4-3.png
Type "q"
Sleep 500ms
@@ -0,0 +1,17 @@
# VHS tape for lazygitclj - Standard 16:9 aspect ratio (1280x720)
Output lazygitclj-standard-16-9.gif
Require bb
Set Shell "bash"
Set Width 1280
Set Height 720
Set FontSize 14
Set Framerate 10
Type "./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-ar && cd /tmp/lazygitclj-e2e-ar && bb --config /home/ajet/repos/lazygitclj/bb.edn start"
Enter
Sleep 3s
Screenshot lazygitclj-standard-16-9.png
Type "q"
Sleep 500ms
@@ -0,0 +1,17 @@
# VHS tape for lazygitclj - Tall 9:16 aspect ratio (600x1000)
Output lazygitclj-tall-9-16.gif
Require bb
Set Shell "bash"
Set Width 600
Set Height 1000
Set FontSize 14
Set Framerate 10
Type "./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-ar && cd /tmp/lazygitclj-e2e-ar && bb --config /home/ajet/repos/lazygitclj/bb.edn start"
Enter
Sleep 3s
Screenshot lazygitclj-tall-9-16.png
Type "q"
Sleep 500ms
@@ -0,0 +1,17 @@
# VHS tape for lazygitclj - Ultrawide 32:9 aspect ratio (1600x450)
Output lazygitclj-ultrawide-32-9.gif
Require bb
Set Shell "bash"
Set Width 1600
Set Height 450
Set FontSize 14
Set Framerate 10
Type "./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-ar && cd /tmp/lazygitclj-e2e-ar && bb --config /home/ajet/repos/lazygitclj/bb.edn start"
Enter
Sleep 3s
Screenshot lazygitclj-ultrawide-32-9.png
Type "q"
Sleep 500ms
@@ -0,0 +1,17 @@
# VHS tape for lazygitclj - Wide 21:9 aspect ratio (1400x600)
Output lazygitclj-wide-21-9.gif
Require bb
Set Shell "bash"
Set Width 1400
Set Height 600
Set FontSize 14
Set Framerate 10
Type "./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-ar && cd /tmp/lazygitclj-e2e-ar && bb --config /home/ajet/repos/lazygitclj/bb.edn start"
Enter
Sleep 3s
Screenshot lazygitclj-wide-21-9.png
Type "q"
Sleep 500ms
+68
View File
@@ -0,0 +1,68 @@
# VHS E2E test for lazygitclj - Branch operations
# Tests branch create, delete, rename, merge, checkout
Output test/e2e/output/branch-operations.gif
Output test/e2e/output/branch-operations.ascii
Require bb
Set Shell "bash"
Set FontSize 14
Set Width 1000
Set Height 600
Set Framerate 10
# Setup test repo and run lazygitclj
Type "./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-branch-ops && cd /tmp/lazygitclj-e2e-branch-ops && bb --config /home/ajet/repos/lazygitclj/bb.edn start"
Enter
Sleep 2s
# First, clean up working tree by stashing
Type "s"
Sleep 500ms
# Switch to branches panel
Type "3"
Sleep 500ms
# Create new branch with 'n'
Type "n"
Sleep 500ms
Set TypingSpeed 50ms
Type "test-branch"
Enter
Sleep 1s
# Should have created and switched to test-branch
# Go back to main - select main first
Type "j"
Sleep 300ms
Type "j"
Sleep 300ms
# Enter to checkout main
Enter
Sleep 1s
# Navigate to test-branch and delete it with 'd'
Type "k"
Sleep 300ms
Type "d"
Sleep 1s
# Branch should be deleted
# Merge feature-branch into main
# Navigate to feature-branch
Type "k"
Sleep 300ms
# Merge with 'M'
Type "M"
Sleep 1s
# Should show merge message
# Quit
Type "q"
Sleep 1s
+48
View File
@@ -0,0 +1,48 @@
# VHS E2E test for lazygitclj - Branches panel tabs
# Tests tab switching between Local, Remotes, and Tags ([ and ] keys)
Output test/e2e/output/branches-tabs.gif
Output test/e2e/output/branches-tabs.ascii
Require bb
Set Shell "bash"
Set FontSize 14
Set Width 1000
Set Height 600
Set Framerate 10
# Setup test repo with tags and run lazygitclj
Type "./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-branches-tabs && cd /tmp/lazygitclj-e2e-branches-tabs && git tag v1.0.0 && bb --config /home/ajet/repos/lazygitclj/bb.edn start"
Enter
Sleep 2s
# Switch to branches panel with '3'
Type "3"
Sleep 500ms
# Should show [Local] | Remotes | Tags tab indicator
# Switch to Remotes tab with ']'
Type "]"
Sleep 500ms
# Should show Local | [Remotes] | Tags
# Note: No remote branches in test repo, so empty
# Switch to Tags with ']' again
Type "]"
Sleep 500ms
# Should show Local | Remotes | [Tags] with v1.0.0 tag
Type "j"
Sleep 500ms
# Switch back to Local with '['
Type "["
Sleep 500ms
Type "["
Sleep 500ms
# Should be back on Local tab
# Quit
Type "q"
Sleep 1s
+39
View File
@@ -0,0 +1,39 @@
# VHS E2E test for lazygitclj - Branch operations
# Tests branch checkout (like lazygit's Enter key on branches)
Output test/e2e/output/branches.gif
Output test/e2e/output/branches.ascii
Require bb
Set Shell "bash"
Set FontSize 14
Set Width 1000
Set Height 600
Set Framerate 10
# Setup test repo (clean working tree) and run lazygitclj
Type "cd /tmp && rm -rf lazygitclj-e2e-branch && git clone /tmp/lazygitclj-e2e-nav lazygitclj-e2e-branch 2>/dev/null && cd lazygitclj-e2e-branch && git checkout main && bb --config /home/ajet/repos/lazygitclj/bb.edn start"
Enter
Sleep 2s
# Switch to Branches panel with '3' (like lazygit number shortcuts)
Type "3"
Sleep 500ms
# Navigate to feature-branch
Type "j"
Sleep 500ms
# Checkout branch with Enter
Enter
Sleep 1s
# Should now be on feature-branch (shown in status bar)
# Switch back to Files panel to verify
Type "1"
Sleep 500ms
# Quit
Type "q"
Sleep 1s
+85
View File
@@ -0,0 +1,85 @@
# VHS E2E test for lazygitclj - Commit workflow with git verification
# Tests the full commit workflow: stage files, open commit modal, type message, commit
# Verifies the commit was actually made using git CLI
Output test/e2e/output/commit-verify.gif
Output test/e2e/output/commit-verify.ascii
Require bb
Set Shell "bash"
Set FontSize 14
Set Width 1000
Set Height 600
Set Framerate 10
# Setup: Create a fresh test repo
Type "rm -rf /tmp/lazygitclj-e2e-commit-verify && mkdir -p /tmp/lazygitclj-e2e-commit-verify && cd /tmp/lazygitclj-e2e-commit-verify"
Enter
Sleep 500ms
# Initialize git repo
Type "git init -b main && git config user.email 'test@example.com' && git config user.name 'Test User'"
Enter
Sleep 500ms
# Create initial commit
Type "echo 'initial' > README.md && git add . && git commit -m 'Initial commit'"
Enter
Sleep 500ms
# Create a new file to commit with lazygitclj
Type "echo 'test content for commit' > test-file.txt"
Enter
Sleep 500ms
# Show the file exists
Type "ls -la"
Enter
Sleep 500ms
# Run lazygitclj
Type "bb --config /home/ajet/repos/lazygitclj/bb.edn start"
Enter
Sleep 2s
# Stage the file with 'a' (stage all)
Type "a"
Sleep 500ms
# Press 'c' to open commit modal
Type "c"
Sleep 1s
# Type commit message
Set TypingSpeed 50ms
Type "Add test file via lazygitclj"
Sleep 500ms
# Press Enter to commit
Enter
Sleep 1s
# Should see "Committed!" message
# Navigate to commits panel to see the new commit
Type "4"
Sleep 500ms
# Quit lazygitclj
Type "q"
Sleep 1s
# Verify the commit was made using git CLI
Type "git log --oneline -2"
Enter
Sleep 500ms
# Show that the file is tracked
Type "git status"
Enter
Sleep 500ms
# Show commit details
Type "git show --stat HEAD"
Enter
Sleep 1s
+50
View File
@@ -0,0 +1,50 @@
# VHS E2E test for lazygitclj - Commit workflow
# Tests committing staged files (like lazygit's c key)
Output test/e2e/output/commit.gif
Output test/e2e/output/commit.ascii
Require bb
Set Shell "bash"
Set FontSize 14
Set Width 1000
Set Height 600
Set Framerate 10
# Setup test repo and run lazygitclj
Type "./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-commit && cd /tmp/lazygitclj-e2e-commit && bb --config /home/ajet/repos/lazygitclj/bb.edn start"
Enter
Sleep 2s
# Stage all files first
Type "a"
Sleep 500ms
# Press 'c' to start commit (like lazygit)
Type "c"
Sleep 500ms
# Type commit message (with typing speed set)
Set TypingSpeed 50ms
Type "Add test changes"
Sleep 500ms
# Press Enter to commit
Enter
Sleep 1s
# Should see "Committed!" message and files should be cleared
# Check commits panel to verify
Type "2"
Sleep 500ms
# Navigate commits to see new commit
Type "j"
Sleep 500ms
Type "k"
Sleep 500ms
# Quit
Type "q"
Sleep 1s
+46
View File
@@ -0,0 +1,46 @@
# VHS E2E test for lazygitclj - Commits panel tabs
# Tests tab switching between Commits and Reflog ([ and ] keys)
Output test/e2e/output/commits-tabs.gif
Output test/e2e/output/commits-tabs.ascii
Require bb
Set Shell "bash"
Set FontSize 14
Set Width 1000
Set Height 600
Set Framerate 10
# Setup test repo and run lazygitclj
Type "./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-commits-tabs && cd /tmp/lazygitclj-e2e-commits-tabs && bb --config /home/ajet/repos/lazygitclj/bb.edn start"
Enter
Sleep 2s
# Switch to commits panel with '2'
Type "2"
Sleep 500ms
# Should show [Commits] | Reflog tab indicator
# Switch to Reflog tab with ']'
Type "]"
Sleep 500ms
# Should now show Commits | [Reflog] tab indicator
# Navigate reflog entries
Type "j"
Sleep 500ms
Type "k"
Sleep 500ms
# Switch back to Commits with '['
Type "["
Sleep 500ms
# Should be back on Commits tab
Type "j"
Sleep 500ms
# Quit
Type "q"
Sleep 1s
+31
View File
@@ -0,0 +1,31 @@
# VHS debug test - check git status and lazygitclj display
Output test/e2e/output/debug.gif
Output test/e2e/output/debug.ascii
Require bb
Set Shell "bash"
Set FontSize 14
Set Width 1000
Set Height 600
Set Framerate 10
# Setup test repo
Type "./test/e2e/setup-test-repo.sh /tmp/lazygitclj-debug"
Enter
Sleep 2s
# Show git status
Type "cd /tmp/lazygitclj-debug && git status --porcelain"
Enter
Sleep 1s
# Run lazygitclj
Type "bb --config /home/ajet/repos/lazygitclj/bb.edn start"
Enter
Sleep 2s
# Quit
Type "q"
Sleep 1s
View File
+50
View File
@@ -0,0 +1,50 @@
# VHS E2E test for lazygitclj - Help panel
# Tests help display (? key shows keybindings)
Output test/e2e/output/help-panel.gif
Output test/e2e/output/help-panel.ascii
Require bb
Set Shell "bash"
Set FontSize 14
Set Width 1000
Set Height 600
Set Framerate 10
# Setup test repo and run lazygitclj
Type "./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-help && cd /tmp/lazygitclj-e2e-help && bb --config /home/ajet/repos/lazygitclj/bb.edn start"
Enter
Sleep 2s
# Open help panel with '?'
Type "?"
Sleep 2s
# Help panel should show keybindings for:
# - Global keys (q, r, tab, 1-4, j/k, z/Z, p, P, ?, D)
# - Files panel (space, a, c, d, s, S)
# - Commits panel ([/], space, g, C, t, r, y)
# - Branches panel ([/], enter, n, d, R, M, f)
# - Stash panel (space, g, d, n)
# Close help with escape
Escape
Sleep 500ms
# Verify we're back to normal view
Type "j"
Sleep 500ms
# Open help again with '?'
Type "?"
Sleep 1s
# Close with 'q' (also works)
Type "q"
Sleep 500ms
# Should be back to normal view
# Quit the app
Type "q"
Sleep 1s
+73
View File
@@ -0,0 +1,73 @@
# VHS E2E test for lazygitclj - Basic navigation
# Tests panel switching and cursor movement (like lazygit)
Output test/e2e/output/navigation.gif
Output test/e2e/output/navigation.ascii
Require bb
Set Shell "bash"
Set FontSize 14
Set Width 1000
Set Height 600
Set Framerate 10
# Setup test repo and run lazygitclj
Type "./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-nav && cd /tmp/lazygitclj-e2e-nav && bb --config /home/ajet/repos/lazygitclj/bb.edn start"
Enter
Sleep 2s
# Should start on Files panel (panel 1)
# Navigate down with j (vim style like lazygit)
Type "j"
Sleep 500ms
Type "j"
Sleep 500ms
# Navigate up with k
Type "k"
Sleep 500ms
# Switch to Commits panel with Tab
Tab
Sleep 500ms
# Navigate commits
Type "j"
Sleep 500ms
Type "k"
Sleep 500ms
# Switch to Branches panel with Tab
Tab
Sleep 500ms
# Navigate branches
Type "j"
Sleep 500ms
# Switch back to Files using number key (like lazygit)
Type "1"
Sleep 500ms
# Switch to Commits with number key
Type "2"
Sleep 500ms
# Switch to Branches with number key
Type "3"
Sleep 500ms
# Test arrow keys too
Up
Sleep 300ms
Down
Sleep 300ms
# Refresh with r
Type "r"
Sleep 500ms
# Quit with q
Type "q"
Sleep 1s
+57
View File
@@ -0,0 +1,57 @@
# VHS E2E test for lazygitclj - Reset options menu
# Tests reset options (D key opens reset menu)
Output test/e2e/output/reset-menu.gif
Output test/e2e/output/reset-menu.ascii
Require bb
Set Shell "bash"
Set FontSize 14
Set Width 1000
Set Height 600
Set Framerate 10
# Setup test repo with changes and run lazygitclj
Type "./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-reset && cd /tmp/lazygitclj-e2e-reset && bb --config /home/ajet/repos/lazygitclj/bb.edn start"
Enter
Sleep 2s
# Open reset options menu with 'D'
Type "D"
Sleep 1s
# Menu should show:
# s - Soft reset (uncommit, keep staged)
# m - Mixed reset (uncommit, unstage)
# h - Hard reset (discard all)
# u - Unstage all staged changes
# d - Discard all unstaged changes
# c - Clean untracked files
# Cancel with escape
Escape
Sleep 500ms
# Open menu again and unstage all with 'u'
Type "D"
Sleep 500ms
Type "u"
Sleep 1s
# All staged files should now be unstaged
# Verify in files panel
Type "j"
Sleep 500ms
# Open reset menu again to discard unstaged
Type "D"
Sleep 500ms
Type "d"
Sleep 1s
# Modified files should be clean now (only untracked remain)
# Quit
Type "q"
Sleep 1s
+54
View File
@@ -0,0 +1,54 @@
#!/bin/bash
# Run all VHS e2e tests
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$SCRIPT_DIR"
echo "Running lazygitclj VHS e2e tests..."
echo "================================="
# List of test tapes
TESTS=(
"debug.tape"
"navigation.tape"
"staging.tape"
"commit.tape"
"commit-verify.tape"
"branches.tape"
"branch-operations.tape"
"stash-operations.tape"
"stash-menu.tape"
"help-panel.tape"
"reset-menu.tape"
"commits-tabs.tape"
"branches-tabs.tape"
"undo-redo.tape"
)
PASSED=0
FAILED=0
for tape in "${TESTS[@]}"; do
echo ""
echo "Running: $tape"
echo "---"
if timeout 60 vhs "$tape" 2>&1; then
echo "PASSED: $tape"
((PASSED++))
else
echo "FAILED: $tape"
((FAILED++))
fi
done
echo ""
echo "================================="
echo "Results: $PASSED passed, $FAILED failed"
echo "================================="
if [ $FAILED -gt 0 ]; then
exit 1
fi
+47
View File
@@ -0,0 +1,47 @@
#!/bin/bash
# Setup a test git repository for e2e testing
set -e
TEST_REPO="${1:-/tmp/lazygitclj-test-repo}"
# Clean up if exists
rm -rf "$TEST_REPO"
mkdir -p "$TEST_REPO"
cd "$TEST_REPO"
# Initialize git repo
git init -b main
git config user.email "test@example.com"
git config user.name "Test User"
# Create initial files and commit
echo "# Test Project" > README.md
echo "line1" > file1.txt
echo "line1" > file2.txt
git add .
git commit -m "Initial commit"
# Create a feature branch
git checkout -b feature-branch
echo "feature work" >> file1.txt
git add .
git commit -m "Feature work"
git checkout main
# Create some unstaged changes
echo "modified" >> file1.txt
# Create untracked file
echo "new file content" > newfile.txt
# Stage one file
echo "staged content" >> file2.txt
git add file2.txt
echo "Test repo created at $TEST_REPO"
echo " - main branch with 1 commit"
echo " - feature-branch with 1 extra commit"
echo " - 1 staged file (file2.txt)"
echo " - 1 unstaged file (file1.txt)"
echo " - 1 untracked file (newfile.txt)"
+45
View File
@@ -0,0 +1,45 @@
# VHS E2E test for lazygitclj - File staging/unstaging
# Tests staging and unstaging files (like lazygit's space key)
Output test/e2e/output/staging.gif
Output test/e2e/output/staging.ascii
Require bb
Set Shell "bash"
Set FontSize 14
Set Width 1000
Set Height 600
Set Framerate 10
# Setup test repo and run lazygitclj
Type "./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-stage && cd /tmp/lazygitclj-e2e-stage && bb --config /home/ajet/repos/lazygitclj/bb.edn start"
Enter
Sleep 2s
# Should be on Files panel with some staged and unstaged files
# Move to the staged file and unstage it with space
Type " "
Sleep 500ms
# Move down to an unstaged file
Type "j"
Sleep 500ms
# Stage it with space
Type " "
Sleep 500ms
# Stage all with 'a' (like lazygit)
Type "a"
Sleep 500ms
# Move to a file and discard changes with 'd'
Type "j"
Sleep 500ms
Type "d"
Sleep 500ms
# Quit
Type "q"
Sleep 1s
+50
View File
@@ -0,0 +1,50 @@
# VHS E2E test for lazygitclj - Stash menu options
# Tests stash options menu (S key opens menu)
Output test/e2e/output/stash-menu.gif
Output test/e2e/output/stash-menu.ascii
Require bb
Set Shell "bash"
Set FontSize 14
Set Width 1000
Set Height 600
Set Framerate 10
# Setup test repo with changes and run lazygitclj
Type "./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-stash-menu && cd /tmp/lazygitclj-e2e-stash-menu && bb --config /home/ajet/repos/lazygitclj/bb.edn start"
Enter
Sleep 2s
# Open stash options menu with 'S'
Type "S"
Sleep 1s
# Menu should be visible showing options:
# a - Stash all changes
# i - Stash all and keep index
# U - Stash including untracked
# s - Stash staged only
# u - Stash unstaged only
# Cancel with escape first
Escape
Sleep 500ms
# Open menu again
Type "S"
Sleep 500ms
# Stash all with 'a'
Type "a"
Sleep 1s
# Files should be clean now
# Check stash panel
Type "4"
Sleep 500ms
# Quit
Type "q"
Sleep 1s
+52
View File
@@ -0,0 +1,52 @@
# VHS E2E test for lazygitclj - Stash operations
# Tests stash functionality (s for quick stash, S for stash menu)
Output test/e2e/output/stash-operations.gif
Output test/e2e/output/stash-operations.ascii
Require bb
Set Shell "bash"
Set FontSize 14
Set Width 1000
Set Height 600
Set Framerate 10
# Setup test repo with changes and run lazygitclj
Type "./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-stash && cd /tmp/lazygitclj-e2e-stash && bb --config /home/ajet/repos/lazygitclj/bb.edn start"
Enter
Sleep 2s
# Should be on Files panel with staged and unstaged files
# Quick stash all changes with 's'
Type "s"
Sleep 1s
# Files panel should now be clean, check stash panel
Type "4"
Sleep 500ms
# Should see one stash entry
# Navigate to stash and apply it with space
Type " "
Sleep 1s
# Go back to files panel - should see changes restored
Type "1"
Sleep 500ms
# Stash again with 's'
Type "s"
Sleep 1s
# Go to stash panel
Type "4"
Sleep 500ms
# Pop the stash with 'g' (apply and remove)
Type "g"
Sleep 1s
# Quit
Type "q"
Sleep 1s
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,816 @@
>
────────────────────────────────────────────────────────────────────────────────
>
────────────────────────────────────────────────────────────────────────────────
>
────────────────────────────────────────────────────────────────────────────────
>
────────────────────────────────────────────────────────────────────────────────
>
────────────────────────────────────────────────────────────────────────────────
>
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-branches-tabs && cd /tmp/lazygitclj-e2e-bra
nches-tabs && git tag v1.0.0 && bb --config /home/ajet/repos/lazygitclj/bb.edn start
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-branches-tabs && cd /tmp/lazygitclj-e2e-bra
nches-tabs && git tag v1.0.0 && bb --config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
>
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-branches-tabs && cd /tmp/lazygitclj-e2e-bra
nches-tabs && git tag v1.0.0 && bb --config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
>
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-branches-tabs && cd /tmp/lazygitclj-e2e-bra
nches-tabs && git tag v1.0.0 && bb --config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> 3
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-branches-tabs && cd /tmp/lazygitclj-e2e-bra
nches-tabs && git tag v1.0.0 && bb --config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> 3
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-branches-tabs && cd /tmp/lazygitclj-e2e-bra
nches-tabs && git tag v1.0.0 && bb --config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> 3]
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-branches-tabs && cd /tmp/lazygitclj-e2e-bra
nches-tabs && git tag v1.0.0 && bb --config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> 3]
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-branches-tabs && cd /tmp/lazygitclj-e2e-bra
nches-tabs && git tag v1.0.0 && bb --config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> 3]]
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-branches-tabs && cd /tmp/lazygitclj-e2e-bra
nches-tabs && git tag v1.0.0 && bb --config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> 3]]
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-branches-tabs && cd /tmp/lazygitclj-e2e-bra
nches-tabs && git tag v1.0.0 && bb --config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> 3]]j
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-branches-tabs && cd /tmp/lazygitclj-e2e-bra
nches-tabs && git tag v1.0.0 && bb --config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> 3]]j
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-branches-tabs && cd /tmp/lazygitclj-e2e-bra
nches-tabs && git tag v1.0.0 && bb --config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> 3]]j[
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-branches-tabs && cd /tmp/lazygitclj-e2e-bra
nches-tabs && git tag v1.0.0 && bb --config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> 3]]j[
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-branches-tabs && cd /tmp/lazygitclj-e2e-bra
nches-tabs && git tag v1.0.0 && bb --config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> 3]]j[[
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-branches-tabs && cd /tmp/lazygitclj-e2e-bra
nches-tabs && git tag v1.0.0 && bb --config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> 3]]j[[
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-branches-tabs && cd /tmp/lazygitclj-e2e-bra
nches-tabs && git tag v1.0.0 && bb --config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> 3]]j[[q
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-branches-tabs && cd /tmp/lazygitclj-e2e-bra
nches-tabs && git tag v1.0.0 && bb --config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> 3]]j[[q
────────────────────────────────────────────────────────────────────────────────
+696
View File
@@ -0,0 +1,696 @@
>
────────────────────────────────────────────────────────────────────────────────
>
────────────────────────────────────────────────────────────────────────────────
>
────────────────────────────────────────────────────────────────────────────────
>
────────────────────────────────────────────────────────────────────────────────
>
────────────────────────────────────────────────────────────────────────────────
>
────────────────────────────────────────────────────────────────────────────────
> cd /tmp && rm -rf lazygitclj-e2e-branch && git clone /tmp/lazygitclj-e2e-nav lazygitclj-e2e-b
ranch 2>/dev/null && cd lazygitclj-e2e-branch && git checkout main && bb --config /home/ajet/re
pos/lazygitclj/bb.edn start
────────────────────────────────────────────────────────────────────────────────
> cd /tmp && rm -rf lazygitclj-e2e-branch && git clone /tmp/lazygitclj-e2e-nav lazygitclj-e2e-b
ranch 2>/dev/null && cd lazygitclj-e2e-branch && git checkout main && bb --config /home/ajet/re
pos/lazygitclj/bb.edn start
>
────────────────────────────────────────────────────────────────────────────────
> cd /tmp && rm -rf lazygitclj-e2e-branch && git clone /tmp/lazygitclj-e2e-nav lazygitclj-e2e-b
ranch 2>/dev/null && cd lazygitclj-e2e-branch && git checkout main && bb --config /home/ajet/re
pos/lazygitclj/bb.edn start
>
────────────────────────────────────────────────────────────────────────────────
> cd /tmp && rm -rf lazygitclj-e2e-branch && git clone /tmp/lazygitclj-e2e-nav lazygitclj-e2e-b
ranch 2>/dev/null && cd lazygitclj-e2e-branch && git checkout main && bb --config /home/ajet/re
pos/lazygitclj/bb.edn start
> 3
────────────────────────────────────────────────────────────────────────────────
> cd /tmp && rm -rf lazygitclj-e2e-branch && git clone /tmp/lazygitclj-e2e-nav lazygitclj-e2e-b
ranch 2>/dev/null && cd lazygitclj-e2e-branch && git checkout main && bb --config /home/ajet/re
pos/lazygitclj/bb.edn start
> 3
────────────────────────────────────────────────────────────────────────────────
> cd /tmp && rm -rf lazygitclj-e2e-branch && git clone /tmp/lazygitclj-e2e-nav lazygitclj-e2e-b
ranch 2>/dev/null && cd lazygitclj-e2e-branch && git checkout main && bb --config /home/ajet/re
pos/lazygitclj/bb.edn start
> 3j
────────────────────────────────────────────────────────────────────────────────
> cd /tmp && rm -rf lazygitclj-e2e-branch && git clone /tmp/lazygitclj-e2e-nav lazygitclj-e2e-b
ranch 2>/dev/null && cd lazygitclj-e2e-branch && git checkout main && bb --config /home/ajet/re
pos/lazygitclj/bb.edn start
> 3j
────────────────────────────────────────────────────────────────────────────────
> cd /tmp && rm -rf lazygitclj-e2e-branch && git clone /tmp/lazygitclj-e2e-nav lazygitclj-e2e-b
ranch 2>/dev/null && cd lazygitclj-e2e-branch && git checkout main && bb --config /home/ajet/re
pos/lazygitclj/bb.edn start
> 3j
bash: 3j: command not found
>
────────────────────────────────────────────────────────────────────────────────
> cd /tmp && rm -rf lazygitclj-e2e-branch && git clone /tmp/lazygitclj-e2e-nav lazygitclj-e2e-b
ranch 2>/dev/null && cd lazygitclj-e2e-branch && git checkout main && bb --config /home/ajet/re
pos/lazygitclj/bb.edn start
> 3j
bash: 3j: command not found
>
────────────────────────────────────────────────────────────────────────────────
> cd /tmp && rm -rf lazygitclj-e2e-branch && git clone /tmp/lazygitclj-e2e-nav lazygitclj-e2e-b
ranch 2>/dev/null && cd lazygitclj-e2e-branch && git checkout main && bb --config /home/ajet/re
pos/lazygitclj/bb.edn start
> 3j
bash: 3j: command not found
> 1
────────────────────────────────────────────────────────────────────────────────
> cd /tmp && rm -rf lazygitclj-e2e-branch && git clone /tmp/lazygitclj-e2e-nav lazygitclj-e2e-b
ranch 2>/dev/null && cd lazygitclj-e2e-branch && git checkout main && bb --config /home/ajet/re
pos/lazygitclj/bb.edn start
> 3j
bash: 3j: command not found
> 1
────────────────────────────────────────────────────────────────────────────────
> cd /tmp && rm -rf lazygitclj-e2e-branch && git clone /tmp/lazygitclj-e2e-nav lazygitclj-e2e-b
ranch 2>/dev/null && cd lazygitclj-e2e-branch && git checkout main && bb --config /home/ajet/re
pos/lazygitclj/bb.edn start
> 3j
bash: 3j: command not found
> 1q
────────────────────────────────────────────────────────────────────────────────
> cd /tmp && rm -rf lazygitclj-e2e-branch && git clone /tmp/lazygitclj-e2e-nav lazygitclj-e2e-b
ranch 2>/dev/null && cd lazygitclj-e2e-branch && git checkout main && bb --config /home/ajet/re
pos/lazygitclj/bb.edn start
> 3j
bash: 3j: command not found
> 1q
────────────────────────────────────────────────────────────────────────────────
File diff suppressed because it is too large Load Diff
+906
View File
@@ -0,0 +1,906 @@
>
────────────────────────────────────────────────────────────────────────────────
>
────────────────────────────────────────────────────────────────────────────────
>
────────────────────────────────────────────────────────────────────────────────
>
────────────────────────────────────────────────────────────────────────────────
>
────────────────────────────────────────────────────────────────────────────────
>
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-commit && cd /tmp/lazygitclj-e2e-commit &&
bb --config /home/ajet/repos/lazygitclj/bb.edn start
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-commit && cd /tmp/lazygitclj-e2e-commit &&
bb --config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
>
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-commit && cd /tmp/lazygitclj-e2e-commit &&
bb --config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
>
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-commit && cd /tmp/lazygitclj-e2e-commit &&
bb --config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> a
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-commit && cd /tmp/lazygitclj-e2e-commit &&
bb --config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> a
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-commit && cd /tmp/lazygitclj-e2e-commit &&
bb --config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> ac
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-commit && cd /tmp/lazygitclj-e2e-commit &&
bb --config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> ac
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-commit && cd /tmp/lazygitclj-e2e-commit &&
bb --config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> ac
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-commit && cd /tmp/lazygitclj-e2e-commit &&
bb --config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> acAdd test changes
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-commit && cd /tmp/lazygitclj-e2e-commit &&
bb --config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> acAdd test changes
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-commit && cd /tmp/lazygitclj-e2e-commit &&
bb --config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> acAdd test changes
bash: acAdd: command not found
>
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-commit && cd /tmp/lazygitclj-e2e-commit &&
bb --config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> acAdd test changes
bash: acAdd: command not found
>
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-commit && cd /tmp/lazygitclj-e2e-commit &&
bb --config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> acAdd test changes
bash: acAdd: command not found
> 2
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-commit && cd /tmp/lazygitclj-e2e-commit &&
bb --config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> acAdd test changes
bash: acAdd: command not found
> 2
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-commit && cd /tmp/lazygitclj-e2e-commit &&
bb --config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> acAdd test changes
bash: acAdd: command not found
> 2j
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-commit && cd /tmp/lazygitclj-e2e-commit &&
bb --config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> acAdd test changes
bash: acAdd: command not found
> 2j
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-commit && cd /tmp/lazygitclj-e2e-commit &&
bb --config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> acAdd test changes
bash: acAdd: command not found
> 2jk
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-commit && cd /tmp/lazygitclj-e2e-commit &&
bb --config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> acAdd test changes
bash: acAdd: command not found
> 2jk
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-commit && cd /tmp/lazygitclj-e2e-commit &&
bb --config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> acAdd test changes
bash: acAdd: command not found
> 2jkq
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-commit && cd /tmp/lazygitclj-e2e-commit &&
bb --config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> acAdd test changes
bash: acAdd: command not found
> 2jkq
────────────────────────────────────────────────────────────────────────────────
+816
View File
@@ -0,0 +1,816 @@
>
────────────────────────────────────────────────────────────────────────────────
>
────────────────────────────────────────────────────────────────────────────────
>
────────────────────────────────────────────────────────────────────────────────
>
────────────────────────────────────────────────────────────────────────────────
>
────────────────────────────────────────────────────────────────────────────────
>
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-commits-tabs && cd /tmp/lazygitclj-e2e-comm
its-tabs && bb --config /home/ajet/repos/lazygitclj/bb.edn start
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-commits-tabs && cd /tmp/lazygitclj-e2e-comm
its-tabs && bb --config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
>
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-commits-tabs && cd /tmp/lazygitclj-e2e-comm
its-tabs && bb --config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
>
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-commits-tabs && cd /tmp/lazygitclj-e2e-comm
its-tabs && bb --config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> 2
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-commits-tabs && cd /tmp/lazygitclj-e2e-comm
its-tabs && bb --config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> 2
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-commits-tabs && cd /tmp/lazygitclj-e2e-comm
its-tabs && bb --config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> 2]
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-commits-tabs && cd /tmp/lazygitclj-e2e-comm
its-tabs && bb --config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> 2]
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-commits-tabs && cd /tmp/lazygitclj-e2e-comm
its-tabs && bb --config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> 2]j
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-commits-tabs && cd /tmp/lazygitclj-e2e-comm
its-tabs && bb --config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> 2]j
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-commits-tabs && cd /tmp/lazygitclj-e2e-comm
its-tabs && bb --config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> 2]jk
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-commits-tabs && cd /tmp/lazygitclj-e2e-comm
its-tabs && bb --config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> 2]jk
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-commits-tabs && cd /tmp/lazygitclj-e2e-comm
its-tabs && bb --config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> 2]jk[
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-commits-tabs && cd /tmp/lazygitclj-e2e-comm
its-tabs && bb --config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> 2]jk[
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-commits-tabs && cd /tmp/lazygitclj-e2e-comm
its-tabs && bb --config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> 2]jk[j
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-commits-tabs && cd /tmp/lazygitclj-e2e-comm
its-tabs && bb --config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> 2]jk[j
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-commits-tabs && cd /tmp/lazygitclj-e2e-comm
its-tabs && bb --config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> 2]jk[jq
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-commits-tabs && cd /tmp/lazygitclj-e2e-comm
its-tabs && bb --config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> 2]jk[jq
────────────────────────────────────────────────────────────────────────────────
+636
View File
@@ -0,0 +1,636 @@
>
────────────────────────────────────────────────────────────────────────────────
>
────────────────────────────────────────────────────────────────────────────────
>
────────────────────────────────────────────────────────────────────────────────
>
────────────────────────────────────────────────────────────────────────────────
>
────────────────────────────────────────────────────────────────────────────────
>
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-debug
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-debug
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
>
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-debug
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
>
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-debug
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> cd /tmp/lazygitclj-debug && git status --porcelain
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-debug
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> cd /tmp/lazygitclj-debug && git status --porcelain
bash: cd: /tmp/lazygitclj-debug: No such file or directory
>
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-debug
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> cd /tmp/lazygitclj-debug && git status --porcelain
bash: cd: /tmp/lazygitclj-debug: No such file or directory
>
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-debug
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> cd /tmp/lazygitclj-debug && git status --porcelain
bash: cd: /tmp/lazygitclj-debug: No such file or directory
> bb --config /home/ajet/repos/lazygitclj/bb.edn start
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-debug
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> cd /tmp/lazygitclj-debug && git status --porcelain
bash: cd: /tmp/lazygitclj-debug: No such file or directory
> bb --config /home/ajet/repos/lazygitclj/bb.edn start
Starting lazygitclj...
────────────────────────────────────────────────────────────────────────────────
┌─ 1 Status ─────────────────┐ ┌─ 0 Main ─────────────────────────────────────────────────────┐
│ master → 8b44d40 │ │ │
└────────────────────────────┘ │ │
╔═ 2 Files (44) ═════════════╗ │ │
║ M .gitignore ║ │ │
║ A CLAUDE.md ║ │ │
║ A PRD.md ║ │ │
║ M bb.edn ║ │ │
╚════════════════════════════╝ │ │
┌─ 3 Branches [L] R T ───────┐ │ │
│ * master │ │ │
│ new-feature │ │ │
│ │ │ │
│ │ │ │
└────────────────────────────┘ │ │
┌─ 4 Commits [C] R ──────────┐ │ │
│ 8b44d40 Fix syntax err... │ │ │
│ 5a8629b Initial clajyg... │ │ │
│ │ │ │
│ │ │ │
└────────────────────────────┘ │ │
┌─ 5 Stash (0) ──────────────┐ │ │
│ No stashes │ │ │
│ │ └──────────────────────────────────────────────────────────────┘
│ │ ┌─ Command Log ────────────────────────────────────────────────┐
│ │ │ │
└────────────────────────────┘ │ │
└──────────────────────────────────────────────────────────────┘
q:quit ?:help h/l:panels j/k:nav spc:stage a:all c:commit p/P:pull/push
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-debug
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> cd /tmp/lazygitclj-debug && git status --porcelain
bash: cd: /tmp/lazygitclj-debug: No such file or directory
> bb --config /home/ajet/repos/lazygitclj/bb.edn start
Starting lazygitclj...
Goodbye!
>
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-debug
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> cd /tmp/lazygitclj-debug && git status --porcelain
bash: cd: /tmp/lazygitclj-debug: No such file or directory
> bb --config /home/ajet/repos/lazygitclj/bb.edn start
Starting lazygitclj...
Goodbye!
>
────────────────────────────────────────────────────────────────────────────────
+756
View File
@@ -0,0 +1,756 @@
>
────────────────────────────────────────────────────────────────────────────────
>
────────────────────────────────────────────────────────────────────────────────
>
────────────────────────────────────────────────────────────────────────────────
>
────────────────────────────────────────────────────────────────────────────────
>
────────────────────────────────────────────────────────────────────────────────
>
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-help && cd /tmp/lazygitclj-e2e-help && bb -
-config /home/ajet/repos/lazygitclj/bb.edn start
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-help && cd /tmp/lazygitclj-e2e-help && bb -
-config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
>
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-help && cd /tmp/lazygitclj-e2e-help && bb -
-config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
>
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-help && cd /tmp/lazygitclj-e2e-help && bb -
-config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> ?
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-help && cd /tmp/lazygitclj-e2e-help && bb -
-config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> ?
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-help && cd /tmp/lazygitclj-e2e-help && bb -
-config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> ?
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-help && cd /tmp/lazygitclj-e2e-help && bb -
-config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> ?
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-help && cd /tmp/lazygitclj-e2e-help && bb -
-config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> ?
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-help && cd /tmp/lazygitclj-e2e-help && bb -
-config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> ?
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-help && cd /tmp/lazygitclj-e2e-help && bb -
-config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> ??
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-help && cd /tmp/lazygitclj-e2e-help && bb -
-config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> ??
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-help && cd /tmp/lazygitclj-e2e-help && bb -
-config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> ??q
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-help && cd /tmp/lazygitclj-e2e-help && bb -
-config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> ??q
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-help && cd /tmp/lazygitclj-e2e-help && bb -
-config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> ??qq
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-help && cd /tmp/lazygitclj-e2e-help && bb -
-config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> ??qq
────────────────────────────────────────────────────────────────────────────────
File diff suppressed because it is too large Load Diff
+876
View File
@@ -0,0 +1,876 @@
>
────────────────────────────────────────────────────────────────────────────────
>
────────────────────────────────────────────────────────────────────────────────
>
────────────────────────────────────────────────────────────────────────────────
>
────────────────────────────────────────────────────────────────────────────────
>
────────────────────────────────────────────────────────────────────────────────
>
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-reset && cd /tmp/lazygitclj-e2e-reset && bb
--config /home/ajet/repos/lazygitclj/bb.edn start
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-reset && cd /tmp/lazygitclj-e2e-reset && bb
--config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
>
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-reset && cd /tmp/lazygitclj-e2e-reset && bb
--config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
>
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-reset && cd /tmp/lazygitclj-e2e-reset && bb
--config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> D
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-reset && cd /tmp/lazygitclj-e2e-reset && bb
--config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> D
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-reset && cd /tmp/lazygitclj-e2e-reset && bb
--config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> D
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-reset && cd /tmp/lazygitclj-e2e-reset && bb
--config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> D
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-reset && cd /tmp/lazygitclj-e2e-reset && bb
--config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> D
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-reset && cd /tmp/lazygitclj-e2e-reset && bb
--config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> D
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-reset && cd /tmp/lazygitclj-e2e-reset && bb
--config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> Du
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-reset && cd /tmp/lazygitclj-e2e-reset && bb
--config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> Du
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-reset && cd /tmp/lazygitclj-e2e-reset && bb
--config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> Duj
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-reset && cd /tmp/lazygitclj-e2e-reset && bb
--config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> Duj
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-reset && cd /tmp/lazygitclj-e2e-reset && bb
--config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> DujD
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-reset && cd /tmp/lazygitclj-e2e-reset && bb
--config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> DujD
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-reset && cd /tmp/lazygitclj-e2e-reset && bb
--config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> DujDd
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-reset && cd /tmp/lazygitclj-e2e-reset && bb
--config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> DujDd
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-reset && cd /tmp/lazygitclj-e2e-reset && bb
--config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> DujDdq
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-reset && cd /tmp/lazygitclj-e2e-reset && bb
--config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> DujDdq
────────────────────────────────────────────────────────────────────────────────
+816
View File
@@ -0,0 +1,816 @@
>
────────────────────────────────────────────────────────────────────────────────
>
────────────────────────────────────────────────────────────────────────────────
>
────────────────────────────────────────────────────────────────────────────────
>
────────────────────────────────────────────────────────────────────────────────
>
────────────────────────────────────────────────────────────────────────────────
>
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-stage && cd /tmp/lazygitclj-e2e-stage && bb
--config /home/ajet/repos/lazygitclj/bb.edn start
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-stage && cd /tmp/lazygitclj-e2e-stage && bb
--config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
>
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-stage && cd /tmp/lazygitclj-e2e-stage && bb
--config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
>
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-stage && cd /tmp/lazygitclj-e2e-stage && bb
--config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
>
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-stage && cd /tmp/lazygitclj-e2e-stage && bb
--config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
>
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-stage && cd /tmp/lazygitclj-e2e-stage && bb
--config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> j
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-stage && cd /tmp/lazygitclj-e2e-stage && bb
--config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> j
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-stage && cd /tmp/lazygitclj-e2e-stage && bb
--config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> j
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-stage && cd /tmp/lazygitclj-e2e-stage && bb
--config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> j
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-stage && cd /tmp/lazygitclj-e2e-stage && bb
--config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> j a
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-stage && cd /tmp/lazygitclj-e2e-stage && bb
--config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> j a
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-stage && cd /tmp/lazygitclj-e2e-stage && bb
--config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> j aj
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-stage && cd /tmp/lazygitclj-e2e-stage && bb
--config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> j aj
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-stage && cd /tmp/lazygitclj-e2e-stage && bb
--config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> j ajd
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-stage && cd /tmp/lazygitclj-e2e-stage && bb
--config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> j ajd
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-stage && cd /tmp/lazygitclj-e2e-stage && bb
--config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> j ajdq
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-stage && cd /tmp/lazygitclj-e2e-stage && bb
--config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> j ajdq
────────────────────────────────────────────────────────────────────────────────
+756
View File
@@ -0,0 +1,756 @@
>
────────────────────────────────────────────────────────────────────────────────
>
────────────────────────────────────────────────────────────────────────────────
>
────────────────────────────────────────────────────────────────────────────────
>
────────────────────────────────────────────────────────────────────────────────
>
────────────────────────────────────────────────────────────────────────────────
>
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-stash-menu && cd /tmp/lazygitclj-e2e-stash-
menu && bb --config /home/ajet/repos/lazygitclj/bb.edn start
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-stash-menu && cd /tmp/lazygitclj-e2e-stash-
menu && bb --config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
>
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-stash-menu && cd /tmp/lazygitclj-e2e-stash-
menu && bb --config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
>
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-stash-menu && cd /tmp/lazygitclj-e2e-stash-
menu && bb --config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> S
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-stash-menu && cd /tmp/lazygitclj-e2e-stash-
menu && bb --config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> S
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-stash-menu && cd /tmp/lazygitclj-e2e-stash-
menu && bb --config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> S
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-stash-menu && cd /tmp/lazygitclj-e2e-stash-
menu && bb --config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> S
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-stash-menu && cd /tmp/lazygitclj-e2e-stash-
menu && bb --config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> S
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-stash-menu && cd /tmp/lazygitclj-e2e-stash-
menu && bb --config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> S
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-stash-menu && cd /tmp/lazygitclj-e2e-stash-
menu && bb --config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> Sa
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-stash-menu && cd /tmp/lazygitclj-e2e-stash-
menu && bb --config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> Sa
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-stash-menu && cd /tmp/lazygitclj-e2e-stash-
menu && bb --config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> Sa4
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-stash-menu && cd /tmp/lazygitclj-e2e-stash-
menu && bb --config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> Sa4
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-stash-menu && cd /tmp/lazygitclj-e2e-stash-
menu && bb --config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> Sa4q
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-stash-menu && cd /tmp/lazygitclj-e2e-stash-
menu && bb --config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> Sa4q
────────────────────────────────────────────────────────────────────────────────
@@ -0,0 +1,876 @@
>
────────────────────────────────────────────────────────────────────────────────
>
────────────────────────────────────────────────────────────────────────────────
>
────────────────────────────────────────────────────────────────────────────────
>
────────────────────────────────────────────────────────────────────────────────
>
────────────────────────────────────────────────────────────────────────────────
>
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-stash && cd /tmp/lazygitclj-e2e-stash && bb
--config /home/ajet/repos/lazygitclj/bb.edn start
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-stash && cd /tmp/lazygitclj-e2e-stash && bb
--config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
>
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-stash && cd /tmp/lazygitclj-e2e-stash && bb
--config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
>
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-stash && cd /tmp/lazygitclj-e2e-stash && bb
--config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> s
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-stash && cd /tmp/lazygitclj-e2e-stash && bb
--config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> s
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-stash && cd /tmp/lazygitclj-e2e-stash && bb
--config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> s4
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-stash && cd /tmp/lazygitclj-e2e-stash && bb
--config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> s4
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-stash && cd /tmp/lazygitclj-e2e-stash && bb
--config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> s4
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-stash && cd /tmp/lazygitclj-e2e-stash && bb
--config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> s4
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-stash && cd /tmp/lazygitclj-e2e-stash && bb
--config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> s4 1
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-stash && cd /tmp/lazygitclj-e2e-stash && bb
--config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> s4 1
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-stash && cd /tmp/lazygitclj-e2e-stash && bb
--config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> s4 1s
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-stash && cd /tmp/lazygitclj-e2e-stash && bb
--config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> s4 1s
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-stash && cd /tmp/lazygitclj-e2e-stash && bb
--config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> s4 1s4
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-stash && cd /tmp/lazygitclj-e2e-stash && bb
--config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> s4 1s4
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-stash && cd /tmp/lazygitclj-e2e-stash && bb
--config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> s4 1s4g
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-stash && cd /tmp/lazygitclj-e2e-stash && bb
--config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> s4 1s4g
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-stash && cd /tmp/lazygitclj-e2e-stash && bb
--config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> s4 1s4gq
────────────────────────────────────────────────────────────────────────────────
> ./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-stash && cd /tmp/lazygitclj-e2e-stash && bb
--config /home/ajet/repos/lazygitclj/bb.edn start
bash: ./test/e2e/setup-test-repo.sh: No such file or directory
> s4 1s4gq
────────────────────────────────────────────────────────────────────────────────
File diff suppressed because it is too large Load Diff
+59
View File
@@ -0,0 +1,59 @@
# VHS E2E test for lazygitclj - Undo/Redo operations
# Tests undo (z) and redo (Z) via reflog navigation
Output test/e2e/output/undo-redo.gif
Output test/e2e/output/undo-redo.ascii
Require bb
Set Shell "bash"
Set FontSize 14
Set Width 1000
Set Height 600
Set Framerate 10
# Setup test repo and make some changes
Type "./test/e2e/setup-test-repo.sh /tmp/lazygitclj-e2e-undo && cd /tmp/lazygitclj-e2e-undo && bb --config /home/ajet/repos/lazygitclj/bb.edn start"
Enter
Sleep 2s
# Stage all and commit
Type "a"
Sleep 500ms
Type "c"
Sleep 500ms
Set TypingSpeed 50ms
Type "First commit message"
Enter
Sleep 1s
# Create another change
# Exit and modify file
Type "q"
Sleep 500ms
Type "echo 'more changes' >> file1.txt && bb --config /home/ajet/repos/lazygitclj/bb.edn start"
Enter
Sleep 2s
# Stage and commit again
Type "a"
Sleep 500ms
Type "c"
Sleep 500ms
Type "Second commit"
Enter
Sleep 1s
# Now undo with 'z' - should reset to previous state
Type "z"
Sleep 1s
# Status bar should show undo message
# Redo with 'Z'
Type "Z"
Sleep 1s
# Should be back to latest state
# Quit
Type "q"
Sleep 1s
+288
View File
@@ -0,0 +1,288 @@
(ns lazygitclj.core-test
"Unit tests for lazygitclj.core namespace - model and update functions"
(:require [clojure.test :refer [deftest testing is]]
[lazygitclj.core :as core]
[tui.simple :as tui]))
;; Helper to create key messages in the format the TUI library uses
(defn key-msg [k]
(cond
(char? k) [:key {:char k}]
(keyword? k) [:key k]
(and (vector? k) (= :ctrl (first k))) [:key {:ctrl true :char (second k)}]
:else [:key k]))
;; === Model Tests ===
(deftest test-file-items
(testing "combines staged and unstaged files"
(let [model {:staged [{:path "a.txt"} {:path "b.txt"}]
:unstaged [{:path "c.txt"}]}
items (core/file-items model)]
(is (= 3 (count items)))
(is (= :staged (:type (first items))))
(is (= :unstaged (:type (last items))))))
(testing "returns empty vector when no files"
(let [model {:staged [] :unstaged []}]
(is (= [] (core/file-items model))))))
(deftest test-current-items
(testing "returns file items for files panel"
(let [model {:panel :files
:staged [{:path "a.txt"}]
:unstaged [{:path "b.txt"}]}]
(is (= 2 (count (core/current-items model))))))
(testing "returns commits for commits panel"
(let [model {:panel :commits
:commits-tab :commits
:commits [{:sha "abc123"}]
:reflog []}]
(is (= 1 (count (core/current-items model))))))
(testing "returns reflog for commits panel with reflog tab"
(let [model {:panel :commits
:commits-tab :reflog
:commits []
:reflog [{:sha "def456"} {:sha "ghi789"}]}]
(is (= 2 (count (core/current-items model))))))
(testing "returns branches for branches panel"
(let [model {:panel :branches
:branches-tab :local
:branches ["main" "feature"]}]
(is (= 2 (count (core/current-items model))))))
(testing "returns remote branches for branches panel with remotes tab"
(let [model {:panel :branches
:branches-tab :remotes
:remote-branches ["origin/main"]}]
(is (= 1 (count (core/current-items model))))))
(testing "returns tags for branches panel with tags tab"
(let [model {:panel :branches
:branches-tab :tags
:tags ["v1.0.0" "v2.0.0"]}]
(is (= 2 (count (core/current-items model))))))
(testing "returns stashes for stash panel"
(let [model {:panel :stash
:stashes [{:ref "stash@{0}"}]}]
(is (= 1 (count (core/current-items model)))))))
(deftest test-clamp-cursor
(testing "clamps cursor to valid range"
(let [model {:panel :files
:cursor 10
:staged [{:path "a.txt"}]
:unstaged []}
clamped (core/clamp-cursor model)]
(is (= 0 (:cursor clamped)))))
(testing "keeps cursor at valid position"
(let [model {:panel :files
:cursor 1
:staged [{:path "a.txt"} {:path "b.txt"}]
:unstaged []}
clamped (core/clamp-cursor model)]
(is (= 1 (:cursor clamped)))))
(testing "handles empty lists"
(let [model {:panel :files
:cursor 5
:staged []
:unstaged []}
clamped (core/clamp-cursor model)]
(is (= 0 (:cursor clamped))))))
(deftest test-truncate
(testing "truncates long strings"
(is (= "hello..." (core/truncate "hello world" 5))))
(testing "keeps short strings"
(is (= "hi" (core/truncate "hi" 10))))
(testing "handles nil"
(is (nil? (core/truncate nil 10)))))
;; === Update Tests ===
(deftest test-update-model-quit
(testing "q returns quit command"
(let [[model cmd] (core/update-model {} (key-msg \q))]
(is (= [:quit] cmd))))
(testing "ctrl-c returns quit command"
(let [[model cmd] (core/update-model {} [:key {:ctrl true :char \c}])]
(is (= [:quit] cmd)))))
(deftest test-update-model-panel-switch
(testing "number keys switch panels (2-5 matching lazygit)"
(let [[model _] (core/update-model {:panel :commits :cursor 0
:staged [] :unstaged []} (key-msg \2))]
(is (= :files (:panel model))))
(let [[model _] (core/update-model {:panel :files :cursor 0
:branches-tab :local
:branches [] :remote-branches []
:tags []} (key-msg \3))]
(is (= :branches (:panel model))))
(let [[model _] (core/update-model {:panel :files :cursor 0
:commits-tab :commits
:commits [] :reflog []} (key-msg \4))]
(is (= :commits (:panel model))))
(let [[model _] (core/update-model {:panel :files :cursor 0
:stashes []} (key-msg \5))]
(is (= :stash (:panel model)))))
(testing "l key cycles panels right (files → branches → commits → stash → files)"
(let [[model _] (core/update-model {:panel :files :cursor 0
:branches-tab :local
:branches [] :remote-branches []
:tags []} (key-msg \l))]
(is (= :branches (:panel model))))
(let [[model _] (core/update-model {:panel :branches :cursor 0
:commits-tab :commits
:commits [] :reflog []} (key-msg \l))]
(is (= :commits (:panel model))))
(let [[model _] (core/update-model {:panel :commits :cursor 0
:stashes []} (key-msg \l))]
(is (= :stash (:panel model))))
(let [[model _] (core/update-model {:panel :stash :cursor 0
:staged [] :unstaged []} (key-msg \l))]
(is (= :files (:panel model))))))
(deftest test-update-model-cursor-movement
(testing "j moves cursor down"
(let [[model _] (core/update-model {:panel :files :cursor 0
:staged [{:path "a"} {:path "b"}]
:unstaged []} (key-msg \j))]
(is (= 1 (:cursor model)))))
(testing "k moves cursor up"
(let [[model _] (core/update-model {:panel :files :cursor 1
:staged [{:path "a"} {:path "b"}]
:unstaged []} (key-msg \k))]
(is (= 0 (:cursor model)))))
(testing "down arrow moves cursor down"
(let [[model _] (core/update-model {:panel :files :cursor 0
:staged [{:path "a"} {:path "b"}]
:unstaged []} (key-msg :down))]
(is (= 1 (:cursor model)))))
(testing "up arrow moves cursor up"
(let [[model _] (core/update-model {:panel :files :cursor 1
:staged [{:path "a"} {:path "b"}]
:unstaged []} (key-msg :up))]
(is (= 0 (:cursor model))))))
(deftest test-update-model-help-menu
(testing "? opens help menu"
(let [[model _] (core/update-model {:menu-mode nil} (key-msg \?))]
(is (= :help (:menu-mode model))))))
(deftest test-update-model-reset-menu
(testing "D opens reset options menu"
(let [[model _] (core/update-model {:menu-mode nil} (key-msg \D))]
(is (= :reset-options (:menu-mode model))))))
(deftest test-update-model-input-mode
(testing "c in files panel opens commit input when staged files exist"
(let [[model _] (core/update-model {:panel :files
:staged [{:path "a.txt"}]
:unstaged []} (key-msg \c))]
(is (= :commit (:input-mode model)))))
(testing "c in files panel shows message when no staged files"
(let [[model _] (core/update-model {:panel :files
:staged []
:unstaged []} (key-msg \c))]
(is (= "Nothing staged to commit" (:message model))))))
(deftest test-update-input-mode
(testing "escape cancels input mode"
(let [[model _] (core/update-input-mode {:input-mode :commit
:input-buffer "test"
:input-context nil} (key-msg :escape))]
(is (nil? (:input-mode model)))
(is (= "" (:input-buffer model)))))
(testing "backspace removes last character"
(let [[model _] (core/update-input-mode {:input-mode :commit
:input-buffer "abc"
:input-context nil} (key-msg :backspace))]
(is (= "ab" (:input-buffer model))))))
(deftest test-update-commits-tabs
(testing "] switches to reflog tab in commits panel"
(let [[model _] (core/update-model {:panel :commits
:commits-tab :commits
:cursor 0
:commits []
:reflog []} (key-msg \]))]
(is (= :reflog (:commits-tab model)))))
(testing "[ switches to commits tab in commits panel"
(let [[model _] (core/update-model {:panel :commits
:commits-tab :reflog
:cursor 0
:commits []
:reflog []} (key-msg \[))]
(is (= :commits (:commits-tab model))))))
(deftest test-update-branches-tabs
(testing "] cycles branches tabs forward"
(let [[model _] (core/update-branches {:branches-tab :local
:cursor 0
:branches []} (key-msg \]))]
(is (= :remotes (:branches-tab model))))
(let [[model _] (core/update-branches {:branches-tab :remotes
:cursor 0
:remote-branches []} (key-msg \]))]
(is (= :tags (:branches-tab model))))
(let [[model _] (core/update-branches {:branches-tab :tags
:cursor 0
:tags []} (key-msg \]))]
(is (= :local (:branches-tab model)))))
(testing "[ cycles branches tabs backward"
(let [[model _] (core/update-branches {:branches-tab :local
:cursor 0
:tags []} (key-msg \[))]
(is (= :tags (:branches-tab model))))))
(deftest test-update-stash-menu
(testing "escape closes stash menu"
(let [[model _] (core/update-stash-menu {:menu-mode :stash-options} (key-msg :escape))]
(is (nil? (:menu-mode model))))))
(deftest test-update-reset-menu
(testing "escape closes reset menu"
(let [[model _] (core/update-reset-menu {:menu-mode :reset-options} (key-msg :escape))]
(is (nil? (:menu-mode model))))))
(deftest test-update-help
(testing "escape closes help"
(let [[model _] (core/update-help {:menu-mode :help} (key-msg :escape))]
(is (nil? (:menu-mode model)))))
(testing "q closes help"
(let [[model _] (core/update-help {:menu-mode :help} (key-msg \q))]
(is (nil? (:menu-mode model)))))
(testing "? closes help"
(let [[model _] (core/update-help {:menu-mode :help} (key-msg \?))]
(is (nil? (:menu-mode model))))))
;; Run tests when executed directly
(defn -main [& args]
(clojure.test/run-tests 'lazygitclj.core-test))
+323
View File
@@ -0,0 +1,323 @@
(ns lazygitclj.git-test
"Unit tests for lazygitclj.git namespace"
(:require [clojure.test :refer [deftest testing is use-fixtures]]
[lazygitclj.git :as git]
[clojure.string :as str]
[babashka.process :refer [shell]]))
;; === Test Fixtures ===
(def ^:dynamic *test-repo* nil)
(defn- sh [& args]
(try
(-> (apply shell {:out :string :err :string :dir *test-repo*} args)
:out
str/trim-newline)
(catch Exception _ nil)))
(defn create-test-repo []
(let [repo-dir (str "/tmp/lazygitclj-unit-test-" (System/currentTimeMillis))]
(shell "mkdir" "-p" repo-dir)
(shell {:dir repo-dir} "git" "init" "-b" "main")
(shell {:dir repo-dir} "git" "config" "user.email" "test@example.com")
(shell {:dir repo-dir} "git" "config" "user.name" "Test User")
;; Create initial files
(spit (str repo-dir "/README.md") "# Test Project\n")
(spit (str repo-dir "/file1.txt") "line1\n")
(shell {:dir repo-dir} "git" "add" ".")
(shell {:dir repo-dir} "git" "commit" "-m" "Initial commit")
repo-dir))
(defn delete-test-repo [repo-dir]
(shell "rm" "-rf" repo-dir))
(defn with-test-repo [f]
(let [repo-dir (create-test-repo)]
(try
(binding [*test-repo* repo-dir]
;; Change to test repo for git commands
(let [original-dir (System/getProperty "user.dir")]
(System/setProperty "user.dir" repo-dir)
(try
(f)
(finally
(System/setProperty "user.dir" original-dir)))))
(finally
(delete-test-repo repo-dir)))))
(use-fixtures :each with-test-repo)
;; === Status Tests ===
(deftest test-current-branch
(testing "returns current branch name"
(is (= "main" (sh "git" "branch" "--show-current")))))
(deftest test-head-sha
(testing "returns short SHA of HEAD"
(let [sha (sh "git" "rev-parse" "--short" "HEAD")]
(is (string? sha))
(is (>= (count sha) 7)))))
(deftest test-repo-root
(testing "returns repo root directory"
(let [root (sh "git" "rev-parse" "--show-toplevel")]
(is (string? root))
(is (str/starts-with? root "/tmp/lazygitclj-unit-test-")))))
;; === File Status Tests ===
(deftest test-staged-files
(testing "returns empty list when nothing staged"
;; Modify file but don't stage
(spit (str *test-repo* "/file1.txt") "modified\n")
(let [staged (git/staged-files)]
(is (empty? staged))))
(testing "returns staged files after git add"
(spit (str *test-repo* "/file1.txt") "modified\n")
(sh "git" "add" "file1.txt")
(let [staged (git/staged-files)]
(is (= 1 (count staged)))
(is (= "file1.txt" (:path (first staged)))))))
(deftest test-unstaged-files
(testing "returns modified unstaged files"
(spit (str *test-repo* "/file1.txt") "modified\n")
(let [unstaged (git/unstaged-files)]
(is (= 1 (count unstaged)))
(is (= "file1.txt" (:path (first unstaged))))))
(testing "returns untracked files"
(spit (str *test-repo* "/newfile.txt") "new content\n")
(let [unstaged (git/unstaged-files)]
(is (some #(= "newfile.txt" (:path %)) unstaged)))))
;; === Branch Tests ===
(deftest test-branches
(testing "returns list of local branches"
(let [branches (git/branches)]
(is (vector? branches))
(is (some #(= "main" %) branches))))
(testing "includes newly created branches"
(sh "git" "branch" "feature-branch")
(let [branches (git/branches)]
(is (some #(= "feature-branch" %) branches)))))
(deftest test-create-branch
(testing "creates a new branch and switches to it"
(git/create-branch "new-feature")
(is (= "new-feature" (sh "git" "branch" "--show-current")))))
(deftest test-checkout-branch
(testing "switches to existing branch"
(sh "git" "branch" "other-branch")
(git/checkout-branch "other-branch")
(is (= "other-branch" (sh "git" "branch" "--show-current")))))
(deftest test-delete-branch
(testing "deletes a branch"
(sh "git" "branch" "to-delete")
(git/delete-branch "to-delete")
(let [branches (git/branches)]
(is (not (some #(= "to-delete" %) branches))))))
(deftest test-rename-branch
(testing "renames a branch"
(sh "git" "branch" "old-name")
(git/rename-branch "old-name" "new-name")
(let [branches (git/branches)]
(is (some #(= "new-name" %) branches))
(is (not (some #(= "old-name" %) branches))))))
;; === Staging Tests ===
(deftest test-stage-file
(testing "stages a modified file"
(spit (str *test-repo* "/file1.txt") "modified\n")
(git/stage-file "file1.txt")
(let [staged (git/staged-files)]
(is (= 1 (count staged))))))
(deftest test-unstage-file
(testing "unstages a staged file"
(spit (str *test-repo* "/file1.txt") "modified\n")
(sh "git" "add" "file1.txt")
(git/unstage-file "file1.txt")
(let [staged (git/staged-files)]
(is (empty? staged)))))
(deftest test-stage-all
(testing "stages all changed files"
(spit (str *test-repo* "/file1.txt") "modified\n")
(spit (str *test-repo* "/newfile.txt") "new\n")
(git/stage-all)
(let [staged (git/staged-files)]
(is (= 2 (count staged))))))
;; === Commit Tests ===
(deftest test-commit
(testing "creates a commit with message"
(spit (str *test-repo* "/file1.txt") "modified\n")
(sh "git" "add" ".")
(git/commit "Test commit message")
(let [log (sh "git" "log" "--oneline" "-1")]
(is (str/includes? log "Test commit message")))))
(deftest test-recent-commits
(testing "returns recent commits"
(let [commits (git/recent-commits 5)]
(is (seq commits))
(is (= "Initial commit" (:subject (first commits)))))))
;; === Stash Tests ===
(deftest test-stash-all
(testing "stashes all changes"
(spit (str *test-repo* "/file1.txt") "modified\n")
(git/stash-all)
(let [stashes (git/stash-list)]
(is (= 1 (count stashes))))
;; Working tree should be clean
(let [unstaged (git/unstaged-files)]
(is (empty? unstaged)))))
(deftest test-stash-pop
(testing "pops stash and removes it from list"
(spit (str *test-repo* "/file1.txt") "modified\n")
(git/stash-all)
(git/stash-pop)
(let [stashes (git/stash-list)
unstaged (git/unstaged-files)]
(is (empty? stashes))
(is (= 1 (count unstaged))))))
(deftest test-stash-apply
(testing "applies stash but keeps it in list"
(spit (str *test-repo* "/file1.txt") "modified\n")
(git/stash-all)
(git/stash-apply)
(let [stashes (git/stash-list)
unstaged (git/unstaged-files)]
(is (= 1 (count stashes)))
(is (= 1 (count unstaged))))))
(deftest test-stash-drop
(testing "drops stash from list"
(spit (str *test-repo* "/file1.txt") "modified\n")
(git/stash-all)
(git/stash-drop)
(let [stashes (git/stash-list)]
(is (empty? stashes)))))
;; === Reset Tests ===
(deftest test-discard-file
(testing "discards unstaged changes to a file"
(spit (str *test-repo* "/file1.txt") "modified\n")
(git/discard-file "file1.txt")
(let [content (slurp (str *test-repo* "/file1.txt"))]
(is (= "line1\n" content)))))
(deftest test-discard-all-unstaged
(testing "discards all unstaged changes"
(spit (str *test-repo* "/file1.txt") "modified\n")
(git/discard-all-unstaged)
(let [unstaged (git/unstaged-files)]
(is (empty? unstaged)))))
(deftest test-reset-staged
(testing "unstages all staged files"
(spit (str *test-repo* "/file1.txt") "modified\n")
(sh "git" "add" ".")
(git/reset-staged)
(let [staged (git/staged-files)]
(is (empty? staged)))))
;; === Tag Tests ===
(deftest test-list-tags
(testing "returns empty list when no tags"
(let [tags (git/list-tags)]
(is (empty? tags))))
(testing "returns tags after creating one"
(sh "git" "tag" "v1.0.0")
(let [tags (git/list-tags)]
(is (some #(= "v1.0.0" %) tags)))))
(deftest test-create-tag
(testing "creates a tag"
(git/create-tag "v2.0.0")
(let [tags (git/list-tags)]
(is (some #(= "v2.0.0" %) tags)))))
(deftest test-delete-tag
(testing "deletes a tag"
(sh "git" "tag" "to-delete")
(git/delete-tag "to-delete")
(let [tags (git/list-tags)]
(is (not (some #(= "to-delete" %) tags))))))
;; === Reflog Tests ===
(deftest test-reflog
(testing "returns reflog entries"
(let [reflog (git/reflog 10)]
(is (seq reflog))
(is (every? :sha reflog))
(is (every? :ref reflog)))))
;; === Cherry-pick and Revert Tests ===
(deftest test-cherry-pick-commit
(testing "cherry-picks a commit"
;; Create a branch with a commit
(sh "git" "checkout" "-b" "feature")
(spit (str *test-repo* "/feature.txt") "feature content\n")
(sh "git" "add" ".")
(sh "git" "commit" "-m" "Feature commit")
(let [feature-sha (sh "git" "rev-parse" "--short" "HEAD")]
;; Go back to main
(sh "git" "checkout" "main")
;; Cherry-pick
(git/cherry-pick-commit feature-sha)
;; Verify file exists
(is (.exists (java.io.File. (str *test-repo* "/feature.txt")))))))
(deftest test-revert-commit
(testing "reverts a commit"
;; Make a change and commit
(spit (str *test-repo* "/file1.txt") "modified\n")
(sh "git" "add" ".")
(sh "git" "commit" "-m" "Change to revert")
(let [sha (sh "git" "rev-parse" "--short" "HEAD")]
;; Revert it
(git/revert-commit sha)
;; Verify content is back to original
(let [content (slurp (str *test-repo* "/file1.txt"))]
(is (= "line1\n" content))))))
;; === Merge Tests ===
(deftest test-merge-branch
(testing "merges a branch into current"
;; Create feature branch with changes
(sh "git" "checkout" "-b" "to-merge")
(spit (str *test-repo* "/merged.txt") "merged content\n")
(sh "git" "add" ".")
(sh "git" "commit" "-m" "Merge commit")
;; Go back to main
(sh "git" "checkout" "main")
;; Merge
(git/merge-branch "to-merge")
;; Verify file exists on main
(is (.exists (java.io.File. (str *test-repo* "/merged.txt"))))))
;; Run tests when executed directly
(defn -main [& args]
(clojure.test/run-tests 'lazygitclj.git-test))
+22
View File
@@ -0,0 +1,22 @@
#!/usr/bin/env bb
;; Run all unit tests for lazygitclj
(require '[clojure.test :as t])
;; Add test path
(require '[babashka.classpath :refer [add-classpath]])
(add-classpath "test")
;; Load test namespaces
(require 'lazygitclj.core-test)
(println "")
(println "Running lazygitclj unit tests...")
(println "================================")
(let [summary (t/run-tests 'lazygitclj.core-test)]
(println "")
(println "================================")
(when (or (pos? (:fail summary))
(pos? (:error summary)))
(System/exit 1)))