yazi
The atago project wrote these specs on its own initiative and runs them in its own CI, to exercise atago against a real program. They are not yazi’s official test suite, and the yazi project is not affiliated with atago.
Summary #
7 suites · 160 scenarios
Contents #
- yazi (third-party terminal file manager) / chooser selection — 15 scenarios
- chooser-file writes a space-selected file instead of the hovered file
- chooser-file writes a space-selected directory instead of the hovered directory
- chooser-file writes space-selected spaced directories
- chooser-file writes a visual-selected file range
- chooser-file writes a visual-selected directory range
- chooser-file writes a visual-selected spaced file range
- chooser-file writes a visual-selected spaced directory range
- chooser-file writes ctrl-a selected directories
- chooser-file writes ctrl-a selected spaced files
- inverse selection with one chosen directory writes the other two
- inverse selection with one spaced file writes the other two
- toggling the same directory twice removes the explicit selection
- toggling the same spaced directory twice removes the explicit selection
- ctrl-a then esc on files restores enter to the hovered file
- ctrl-a then esc on spaced directories restores enter to the hovered directory
- yazi (third-party terminal file manager) / entry args — 13 scenarios
- starting on an explicit directory writes that cwd on quit
- starting on an explicit file can choose that file immediately
- starting on an explicit file writes its parent cwd on q
- starting on an explicit file can leave to its parent and choose a sibling
- starting on a spaced directory writes that cwd on quit
- starting on a spaced file can choose that file immediately
- starting with a spaced file writes its parent cwd on q
- starting on a hidden directory writes that cwd on quit
- starting on a nested file lets q write its parent cwd
- starting with two explicit directories opens the second as another tab
- starting with a directory and a file lets numeric switching choose the file tab
- starting with two explicit files lets next-tab choose the second file tab
- starting with three explicit directories can switch to the third tab
- yazi (third-party terminal file manager) / links and overwrite — 8 scenarios
- uppercase X cancels a cut before pasting
- uppercase Y cancels a copy before pasting
- uppercase P overwrites an existing spaced file during copy
- uppercase P overwrites an existing spaced file during move
- uppercase P overwrites an existing directory subtree during copy
- uppercase P overwrites an existing directory subtree during move
- ctrl-hyphen hardlinks a hovered file into a sibling directory
- ctrl-minus hardlinks a spaced file into a sibling directory
- yazi (third-party terminal file manager) / navigation and tabs — 11 scenarios
- down arrow moves to the second file before choosing
- up arrow returns from the third file to the second before choosing
- right arrow enters the hovered directory before choosing a file
- left arrow leaves the entered directory and q writes the parent cwd
- right arrow enters a spaced directory before choosing a file
- down arrow reaches a spaced filename before choosing
- swap-left reorders two directory tabs for numeric switching
- swap-right reorders two directory tabs for numeric switching
- swap-left reorders two file tabs for numeric switching
- tt twice creates a third tab that 3 can activate
- closing the third tab with ctrl-c returns to the second tab
- yazi (third-party terminal file manager) / search and tabs — 4 scenarios
- yazi (third-party terminal file manager) / selection matrix — 9 scenarios
- space-selected file is moved even when the cursor moves away
- space-selected directory is copied even when the cursor moves away
- space-selected directory is moved even when the cursor moves away
- space-selected spaced directory is moved even when the cursor moves away
- visual mode selects a file range and moves both files
- visual mode selects a file range and permanently deletes both files
- visual mode selects a directory range and copies both directories
- visual mode selects a directory range and moves both directories
- visual mode selects spaced directories and moves both
- yazi (third-party terminal file manager) — 100 scenarios
- version prints a semantic version banner
- hidden files stay hidden by default
- dot toggles hidden files into view
- filter narrows the visible file list
- create makes a new file
- create with a trailing slash makes a directory
- rename changes the hovered file name and nothing else
- yank then paste copies a file into a sibling directory
- select-all then yank copies multiple files into a sibling directory
- cut then paste moves a file into a sibling directory
- uppercase D permanently deletes the hovered file after confirmation
- canceling permanent delete returns to the file list and keeps the file
- canceling a yank leaves nothing to paste
- canceling a cut leaves nothing to paste
- select-all then cut moves multiple files into a sibling directory
- select-all then permanent delete removes multiple files
- trash moves the hovered file into sandbox home trash
- trashing selected files moves both into sandbox home trash
- canceling trash returns to the file list and keeps the file
- space-selected file is copied even when the cursor moves away
- visual mode selects a range and copies both files
- lowercase p copies to item_1 when the destination already exists
- lowercase p moves to item_1 when the destination already exists
- uppercase P overwrites an existing file during copy
- uppercase P overwrites an existing file during move
- alphabetical sort puts a then b then c at the cursor
- reverse alphabetical sort puts c then b then a at the cursor
- extension sort puts log then md then txt at the cursor
- reverse extension sort puts txt then md then log at the cursor
- size sort puts one then two then three at the cursor
- reverse size sort puts three then two then one at the cursor
- natural sort puts 3 then 20 then 100 at the cursor
- natural sort is visible on the rendered file list before quitting
- reverse natural sort puts 100 then 20 then 3 at the cursor
- reverse natural sort is visible on the rendered file list before quitting
- chooser-file writes the hovered path and exits on enter
- chooser-file writes all selected paths on enter
- chooser-file remains absent when quitting with uppercase Q
- uppercase G moves to the bottom item before choosing
- gg moves to the top item before choosing
- quitting immediately writes the initial cwd to cwd-file
- quitting after entering a directory writes the final cwd
- leaving a directory then quitting writes the parent cwd
- tabs preserve per-tab cwd and q writes the active tab cwd
- closing the current tab returns to the previous tab cwd
- previous and next tab navigation preserve each tab cwd
- uppercase Q exits without writing the cwd file
- create accepts filenames with spaces
- create accepts directory names with spaces
- rename accepts spaces in filenames
- rename accepts spaces in directory names
- yank then dash creates an absolute symlink in the sibling directory
- yank then underscore creates a relative symlink in the sibling directory
- yanked directory can be absolute-symlinked into a sibling directory
- yanked directory can be relative-symlinked into a sibling directory
- modified time sort reorders the rendered list
- reverse modified time sort reorders the rendered list
- modified time sort chooses the oldest file first
- reverse modified time sort chooses the newest file first
- toggling the same file twice removes the explicit selection
- inverse selection flips one picked file into the other two
- direct tab switching with 1 and 2 preserves per-tab cwd
- block shell command creates a file and returns to the browser
- filter can be cleared after confirming it
- yank then paste copies a directory subtree into a sibling directory
- cut then paste moves a directory subtree into a sibling directory
- lowercase p copies a directory to name_1 when the destination exists
- lowercase p moves a directory to name_1 when the destination exists
- uppercase D permanently deletes a directory subtree after confirmation
- canceling uppercase D keeps a directory subtree intact
- trash moves a directory subtree into sandbox home trash
- canceling trash keeps a directory subtree intact
- canceling trash for selected directories keeps both subtrees
- yank then paste copies a spaced filename into a sibling directory
- cut then paste moves a spaced filename into a sibling directory
- yank then paste copies a spaced directory subtree into a sibling directory
- dash symlinks a spaced filename with an absolute target
- underscore symlinks a spaced filename with a relative target
- dash symlinks a spaced directory with an absolute target
- underscore symlinks a spaced directory with a relative target
- hidden toggle can be turned back off
- block shell command creates a directory and returns to the browser
- block shell command can rename a file in place
- block shell command creates a spaced filename
- block shell command creates a spaced directory
- block shell command deletes the hovered file
- block shell command copies the hovered file to a new name
- block shell command runs inside the entered directory
- block shell command can create nested files inside a new directory
- block shell command moves a file into a new directory
- block shell command renames a directory
- block shell command appends to the hovered file content
- block shell command can create a hidden file that dot then reveals
- block shell command deletes a directory subtree
- block shell command copies a directory subtree to a new name
- block shell command creates a symlink to a file
- block shell command creates a symlink to a directory
- block shell command renames a spaced filename
- block shell command creates a symlink to a spaced filename
- block shell command creates a symlink to a spaced directory
yazi (third-party terminal file manager) / chooser selection #
Used as a file chooser, yazi’s job is to hand a shell script the paths the user picked. The rule that matters — and the one easiest to get wrong — is that an explicit selection beats whatever the cursor happens to be sitting on. A user who selects three files and then moves the cursor elsewhere must still get those three.
Every way of selecting is put through that test: pressing space on individual entries, sweeping a range in visual mode, selecting everything at once, and inverting a selection. Toggling the same entry twice must clear it, not select it again.
Files and directories are covered separately, and so are names containing spaces — the classic point where a path list gets silently split into the wrong number of entries.
Source: test/e2e/thirdparty/yazi/chooser_selection.atago.yaml
Scenario: chooser-file writes a space-selected file instead of the hovered file #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
a.txtis created. - Fixture file
b.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture a.txt:
a
Fixture b.txt:
b
When #
# interactive (pty): yazi --chooser-file ${workdir}/chosen.txt .
Then #
- file
chosen.txtcontains/b.txt
Scenario: chooser-file writes a space-selected directory instead of the hovered directory #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
a-dir/a.txtis created. - Fixture file
b-dir/b.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture a-dir/a.txt:
a
Fixture b-dir/b.txt:
b
When #
# interactive (pty): yazi --chooser-file ${workdir}/chosen.txt .
Then #
- file
chosen.txtcontains/b-dir
Scenario: chooser-file writes space-selected spaced directories #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
a one/a.txtis created. - Fixture file
b two/b.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture a one/a.txt:
a
Fixture b two/b.txt:
b
When #
# interactive (pty): yazi --chooser-file ${workdir}/chosen.txt .
Then #
- file
chosen.txtcontains/b two
Scenario: chooser-file writes a visual-selected file range #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
a.txtis created. - Fixture file
b.txtis created. - Fixture file
c.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture a.txt:
a
Fixture b.txt:
b
Fixture c.txt:
c
When #
# interactive (pty): yazi --chooser-file ${workdir}/chosen.txt .
Then #
- file
chosen.txtcontains/a.txt,/b.txt
Scenario: chooser-file writes a visual-selected directory range #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
a-dir/a.txtis created. - Fixture file
b-dir/b.txtis created. - Fixture file
c-dir/c.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture a-dir/a.txt:
a
Fixture b-dir/b.txt:
b
Fixture c-dir/c.txt:
c
When #
# interactive (pty): yazi --chooser-file ${workdir}/chosen.txt .
Then #
- file
chosen.txtcontains/a-dir,/b-dir
Scenario: chooser-file writes a visual-selected spaced file range #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
a one.txtis created. - Fixture file
b two.txtis created. - Fixture file
c three.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture a one.txt:
a
Fixture b two.txt:
b
Fixture c three.txt:
c
When #
# interactive (pty): yazi --chooser-file ${workdir}/chosen.txt .
Then #
- file
chosen.txtcontains/a one.txt,/b two.txt
Scenario: chooser-file writes a visual-selected spaced directory range #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
a one/a.txtis created. - Fixture file
b two/b.txtis created. - Fixture file
c three/c.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture a one/a.txt:
a
Fixture b two/b.txt:
b
Fixture c three/c.txt:
c
When #
# interactive (pty): yazi --chooser-file ${workdir}/chosen.txt .
Then #
- file
chosen.txtcontains/a one,/b two
Scenario: chooser-file writes ctrl-a selected directories #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
a-dir/a.txtis created. - Fixture file
b-dir/b.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture a-dir/a.txt:
a
Fixture b-dir/b.txt:
b
When #
# interactive (pty): yazi --chooser-file ${workdir}/chosen.txt .
Then #
- file
chosen.txtcontains/a-dir,/b-dir
Scenario: chooser-file writes ctrl-a selected spaced files #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
a one.txtis created. - Fixture file
b two.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture a one.txt:
a
Fixture b two.txt:
b
When #
# interactive (pty): yazi --chooser-file ${workdir}/chosen.txt .
Then #
- file
chosen.txtcontains/a one.txt,/b two.txt
Scenario: inverse selection with one chosen directory writes the other two #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
a-dir/a.txtis created. - Fixture file
b-dir/b.txtis created. - Fixture file
c-dir/c.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture a-dir/a.txt:
a
Fixture b-dir/b.txt:
b
Fixture c-dir/c.txt:
c
When #
# interactive (pty): yazi --chooser-file ${workdir}/chosen.txt .
cat chosen.txt
Then #
- stdout matches
/(?m)^.*/b-dir\n.*/c-dir\n?$/
Scenario: inverse selection with one spaced file writes the other two #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
a one.txtis created. - Fixture file
b two.txtis created. - Fixture file
c three.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture a one.txt:
a
Fixture b two.txt:
b
Fixture c three.txt:
c
When #
# interactive (pty): yazi --chooser-file ${workdir}/chosen.txt .
cat chosen.txt
Then #
- stdout matches
/(?m)^.*/b two\.txt\n.*/c three\.txt\n?$/
Scenario: toggling the same directory twice removes the explicit selection #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
a-dir/a.txtis created. - Fixture file
b-dir/b.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture a-dir/a.txt:
a
Fixture b-dir/b.txt:
b
When #
# interactive (pty): yazi --chooser-file ${workdir}/chosen.txt .
Then #
- file
chosen.txtcontains/b-dir
Scenario: toggling the same spaced directory twice removes the explicit selection #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
a one/a.txtis created. - Fixture file
b two/b.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture a one/a.txt:
a
Fixture b two/b.txt:
b
When #
# interactive (pty): yazi --chooser-file ${workdir}/chosen.txt .
Then #
- file
chosen.txtcontains/b two
Scenario: ctrl-a then esc on files restores enter to the hovered file #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
a.txtis created. - Fixture file
b.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture a.txt:
a
Fixture b.txt:
b
When #
# interactive (pty): yazi --chooser-file ${workdir}/chosen.txt .
Then #
- file
chosen.txtcontains/b.txt
Scenario: ctrl-a then esc on spaced directories restores enter to the hovered directory #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
a one/a.txtis created. - Fixture file
b two/b.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture a one/a.txt:
a
Fixture b two/b.txt:
b
When #
# interactive (pty): yazi --chooser-file ${workdir}/chosen.txt .
Then #
- file
chosen.txtcontains/b two
yazi (third-party terminal file manager) / entry args #
Where yazi starts depends on what you pass it, and the two cases differ: a directory argument opens that directory, while a file argument opens its parent with the file already hovered — so it can be chosen immediately, or left behind for a sibling.
Quitting must then report the right working directory. A shell wrapper uses that value to cd, so reporting the file’s own path, or the directory the user started in rather than the one they navigated to, sends the caller to the wrong place.
Several arguments open several tabs, and this suite checks that they land in the given order and that switching between them by number, or by stepping to the next one, selects from the tab actually in front of the user.
Spaced, hidden, and nested paths are covered throughout, since those are where argument handling usually breaks.
Source: test/e2e/thirdparty/yazi/entry_args.atago.yaml
Scenario: starting on an explicit directory writes that cwd on quit #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
target/a.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture target/a.txt:
a
When #
# interactive (pty): yazi --cwd-file ${workdir}/cwd.txt target
Then #
- file
cwd.txtcontains/target
Scenario: starting on an explicit file can choose that file immediately #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
target/a.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture target/a.txt:
a
When #
# interactive (pty): yazi --chooser-file ${workdir}/chosen.txt target/a.txt
Then #
- file
chosen.txtcontains/target/a.txt
Scenario: starting on an explicit file writes its parent cwd on q #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
target/a.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture target/a.txt:
a
When #
# interactive (pty): yazi --cwd-file ${workdir}/cwd.txt target/a.txt
Then #
- file
cwd.txtcontains/target
Scenario: starting on an explicit file can leave to its parent and choose a sibling #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
target/a.txtis created. - Fixture file
target/b.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture target/a.txt:
a
Fixture target/b.txt:
b
When #
# interactive (pty): yazi --chooser-file ${workdir}/chosen.txt target/a.txt
Then #
- file
chosen.txtcontains/target/b.txt
Scenario: starting on a spaced directory writes that cwd on quit #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
two words/a.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture two words/a.txt:
a
When #
# interactive (pty): yazi --cwd-file ${workdir}/cwd.txt "two words"
Then #
- file
cwd.txtcontains/two words
Scenario: starting on a spaced file can choose that file immediately #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
two words/a file.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture two words/a file.txt:
a
When #
# interactive (pty): yazi --chooser-file ${workdir}/chosen.txt "two words/a file.txt"
Then #
- file
chosen.txtcontains/two words/a file.txt
Scenario: starting with a spaced file writes its parent cwd on q #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
two words/a file.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture two words/a file.txt:
a
When #
# interactive (pty): yazi --cwd-file ${workdir}/cwd.txt "two words/a file.txt"
Then #
- file
cwd.txtcontains/two words
Scenario: starting on a hidden directory writes that cwd on quit #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
.hidden/a.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture .hidden/a.txt:
a
When #
# interactive (pty): yazi --cwd-file ${workdir}/cwd.txt .hidden
Then #
- file
cwd.txtcontains/.hidden
Scenario: starting on a nested file lets q write its parent cwd #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
nested/deeper/file.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture nested/deeper/file.txt:
a
When #
# interactive (pty): yazi --cwd-file ${workdir}/cwd.txt nested/deeper/file.txt
Then #
- file
cwd.txtcontains/nested/deeper
Scenario: starting with two explicit directories opens the second as another tab #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
one/a.txtis created. - Fixture file
two/b.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture one/a.txt:
a
Fixture two/b.txt:
b
When #
# interactive (pty): yazi --cwd-file ${workdir}/cwd.txt one two
Then #
- file
cwd.txtcontains/two
Scenario: starting with a directory and a file lets numeric switching choose the file tab #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
one/a.txtis created. - Fixture file
two/b.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture one/a.txt:
a
Fixture two/b.txt:
b
When #
# interactive (pty): yazi --chooser-file ${workdir}/chosen.txt one two/b.txt
Then #
- file
chosen.txtcontains/two/b.txt
Scenario: starting with two explicit files lets next-tab choose the second file tab #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
one/a.txtis created. - Fixture file
two/b.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture one/a.txt:
a
Fixture two/b.txt:
b
When #
# interactive (pty): yazi --chooser-file ${workdir}/chosen.txt one/a.txt two/b.txt
Then #
- file
chosen.txtcontains/two/b.txt
Scenario: starting with three explicit directories can switch to the third tab #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
one/a.txtis created. - Fixture file
two/b.txtis created. - Fixture file
three/c.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture one/a.txt:
a
Fixture two/b.txt:
b
Fixture three/c.txt:
c
When #
# interactive (pty): yazi --cwd-file ${workdir}/cwd.txt one two three
Then #
- file
cwd.txtcontains/three
yazi (third-party terminal file manager) / links and overwrite #
The operations here are the ones that can lose data, so each is pinned in both directions.
Cancelling a pending cut or copy must really cancel it: a later paste must do nothing, rather than quietly completing the operation the user thought they had abandoned.
Overwriting must really overwrite. When the destination already exists, the forced paste has to replace it — for a file and for a whole directory subtree, under both copy and move — and the result on disk is checked afterwards, not just the absence of an error.
Hardlinking is covered as its own case, since a hardlink that silently degrades into a copy looks identical until something writes through it.
Spaced names run through all of it, being where path handling tends to fail.
Source: test/e2e/thirdparty/yazi/links_and_overwrite.atago.yaml
Scenario: uppercase X cancels a cut before pasting #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
src/move-me.txtis created. - Fixture file
dst/keep.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture src/move-me.txt:
keep
Fixture dst/keep.txt:
keep
When #
# interactive (pty): yazi src
Then #
- file
src/move-me.txtcontainskeep - file
dst/move-me.txtdoes not exist - file
dst/keep.txtcontainskeep
Scenario: uppercase Y cancels a copy before pasting #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
src/copy-me.txtis created. - Fixture file
dst/keep.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture src/copy-me.txt:
keep
Fixture dst/keep.txt:
keep
When #
# interactive (pty): yazi src
Then #
- file
src/copy-me.txtcontainskeep - file
dst/copy-me.txtdoes not exist - file
dst/keep.txtcontainskeep
Scenario: uppercase P overwrites an existing spaced file during copy #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
src/two words.txtis created. - Fixture file
dst/two words.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture src/two words.txt:
src
Fixture dst/two words.txt:
dst
When #
# interactive (pty): yazi src
Then #
- file
dst/two words.txtcontainssrc
Scenario: uppercase P overwrites an existing spaced file during move #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
src/two words.txtis created. - Fixture file
dst/two words.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture src/two words.txt:
src
Fixture dst/two words.txt:
dst
When #
# interactive (pty): yazi src
Then #
- file
dst/two words.txtcontainssrc - file
src/two words.txtdoes not exist
Scenario: uppercase P overwrites an existing directory subtree during copy #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
src/sub/a.txtis created. - Fixture file
dst/src/sub/a.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture src/sub/a.txt:
src
Fixture dst/src/sub/a.txt:
dst
When #
# interactive (pty): yazi .
Then #
- file
dst/src/sub/a.txtcontainssrc
Scenario: uppercase P overwrites an existing directory subtree during move #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
src/sub/a.txtis created. - Fixture file
dst/src/sub/a.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture src/sub/a.txt:
src
Fixture dst/src/sub/a.txt:
dst
When #
# interactive (pty): yazi .
Then #
- file
dst/src/sub/a.txtcontainssrc - dir
srcdoes not exist
Scenario: ctrl-hyphen hardlinks a hovered file into a sibling directory #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
src/alpha.txtis created. - Fixture file
dst/keep.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture src/alpha.txt:
alpha
Fixture dst/keep.txt:
keep
When #
# interactive (pty): yazi src
stat -c '%h' src/alpha.txt
Then #
- file
dst/alpha.txtcontainsalpha - stdout equals an exact value
Scenario: ctrl-minus hardlinks a spaced file into a sibling directory #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
src/two words.txtis created. - Fixture file
dst/keep.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture src/two words.txt:
alpha
Fixture dst/keep.txt:
keep
When #
# interactive (pty): yazi src
stat -c '%h' 'src/two words.txt'
Then #
- file
dst/two words.txtcontainsalpha - stdout equals an exact value
yazi (third-party terminal file manager) / navigation and tabs #
Moving around is what a file manager does between operations, and it has to put the cursor exactly where the user believes it is — because the next keystroke acts on whatever is hovered.
Arrow-key movement is therefore checked by its consequence: after moving, the entry that gets chosen must be the one the user moved to. Entering and leaving directories is checked the same way, including the working directory reported on quit after stepping back out.
Tabs get the same treatment. Opening new tabs, switching by number, closing one and returning to the previous, and reordering tabs — after which the numbers must follow the new order, not the original one.
Spaced names appear throughout.
Source: test/e2e/thirdparty/yazi/navigation_tabs.atago.yaml
Scenario: down arrow moves to the second file before choosing #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
a.txtis created. - Fixture file
b.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture a.txt:
a
Fixture b.txt:
b
When #
# interactive (pty): yazi --chooser-file ${workdir}/chosen.txt .
Then #
- file
chosen.txtcontains/b.txt
Scenario: up arrow returns from the third file to the second before choosing #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
a.txtis created. - Fixture file
b.txtis created. - Fixture file
c.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture a.txt:
a
Fixture b.txt:
b
Fixture c.txt:
c
When #
# interactive (pty): yazi --chooser-file ${workdir}/chosen.txt .
Then #
- file
chosen.txtcontains/b.txt
Scenario: right arrow enters the hovered directory before choosing a file #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
sub/inside.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture sub/inside.txt:
inside
When #
# interactive (pty): yazi --chooser-file ${workdir}/chosen.txt .
Then #
- file
chosen.txtcontains/sub/inside.txt
Scenario: left arrow leaves the entered directory and q writes the parent cwd #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
sub/inside.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture sub/inside.txt:
inside
When #
# interactive (pty): yazi --cwd-file ${workdir}/cwd.txt .
Then #
- file
cwd.txtdoes not contain/sub
Scenario: right arrow enters a spaced directory before choosing a file #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
two words/inside.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture two words/inside.txt:
inside
When #
# interactive (pty): yazi --chooser-file ${workdir}/chosen.txt .
Then #
- file
chosen.txtcontains/two words/inside.txt
Scenario: down arrow reaches a spaced filename before choosing #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
a.txtis created. - Fixture file
two words.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture a.txt:
a
Fixture two words.txt:
b
When #
# interactive (pty): yazi --chooser-file ${workdir}/chosen.txt .
Then #
- file
chosen.txtcontains/two words.txt
Scenario: swap-left reorders two directory tabs for numeric switching #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
one/a.txtis created. - Fixture file
two/b.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture one/a.txt:
a
Fixture two/b.txt:
b
When #
# interactive (pty): yazi --cwd-file ${workdir}/cwd.txt one two
Then #
- file
cwd.txtcontains/two
Scenario: swap-right reorders two directory tabs for numeric switching #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
one/a.txtis created. - Fixture file
two/b.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture one/a.txt:
a
Fixture two/b.txt:
b
When #
# interactive (pty): yazi --cwd-file ${workdir}/cwd.txt one two
Then #
- file
cwd.txtcontains/one
Scenario: swap-left reorders two file tabs for numeric switching #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
one/a.txtis created. - Fixture file
two/b.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture one/a.txt:
a
Fixture two/b.txt:
b
When #
# interactive (pty): yazi --chooser-file ${workdir}/chosen.txt one/a.txt two/b.txt
Then #
- file
chosen.txtcontains/two/b.txt
Scenario: tt twice creates a third tab that 3 can activate #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
alpha.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture alpha.txt:
a
When #
# interactive (pty): yazi --cwd-file ${workdir}/cwd.txt .
Then #
- file
cwd.txtcontains${workdir}
Scenario: closing the third tab with ctrl-c returns to the second tab #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
alpha.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture alpha.txt:
a
When #
# interactive (pty): yazi --cwd-file ${workdir}/cwd.txt .
Then #
- file
cwd.txtcontains${workdir}
yazi (third-party terminal file manager) / search and tabs #
Two things a file manager offers beyond moving files: finding them, and keeping more than one place open at a time.
Content search must locate a file by what is inside it, not by its name, and leave the user positioned on the match. The information panel must describe the entry currently hovered — the wrong entry’s details is a subtle bug, since the panel still looks right.
Tabs are checked as a pair of operations that must undo each other: opening a tab roots it at the current directory, and closing it returns to the directory the previous tab was showing.
Source: test/e2e/thirdparty/yazi/search_tabs.atago.yaml
Scenario: uppercase S content search finds the matching file #
only when rg --version succeeds · skipped on Windows
Given #
- Fixture file
alpha.txtis created. - Fixture file
beta.txtis created. - Fixture file
gamma.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture alpha.txt:
alpha
Fixture beta.txt:
needle
Fixture gamma.txt:
gamma
When #
# interactive (pty): yazi --chooser-file ${workdir}/chosen.txt .
Then #
- file
chosen.txtcontainsbeta.txt
Scenario: tab shows file information for the hovered file #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
alpha.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture alpha.txt:
alpha
When #
# interactive (pty): yazi .
Scenario: tt opens a new tab rooted at the current cwd #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
alpha.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture alpha.txt:
a
When #
# interactive (pty): yazi --cwd-file ${workdir}/cwd.txt .
Then #
- file
cwd.txtcontains${workdir}
Scenario: ctrl-c closes the current tab and returns to the previous tab cwd #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
one/a.txtis created. - Fixture file
two/b.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture one/a.txt:
a
Fixture two/b.txt:
b
When #
# interactive (pty): yazi --cwd-file ${workdir}/cwd.txt one two
Then #
- file
cwd.txtcontains/one
yazi (third-party terminal file manager) / selection matrix #
One rule, checked against every combination that could break it: an operation acts on what is selected, not on what the cursor is pointing at.
Select an entry, move the cursor somewhere else, then copy, move, or delete — and the selected entry must be the one affected, while the entry now under the cursor must be left alone. Acting on the hovered file instead is the failure mode that quietly destroys the wrong data.
The matrix runs that rule across files and directories, single entries and visual-mode ranges, and copy, move, and permanent delete — with spaced names included, since a path that splits on a space turns one operation into several wrong ones.
Source: test/e2e/thirdparty/yazi/selection_matrix.atago.yaml
Scenario: space-selected file is moved even when the cursor moves away #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
src/a.txtis created. - Fixture file
src/b.txtis created. - Fixture file
dst/.keepis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture src/a.txt:
a
Fixture src/b.txt:
b
When #
# interactive (pty): yazi src
Then #
- file
dst/b.txtcontainsb - file
src/b.txtdoes not exist - file
dst/a.txtdoes not exist
Scenario: space-selected directory is copied even when the cursor moves away #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
src/a-dir/a.txtis created. - Fixture file
src/b-dir/b.txtis created. - Fixture file
dst/.keepis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture src/a-dir/a.txt:
a
Fixture src/b-dir/b.txt:
b
When #
# interactive (pty): yazi src
Then #
- file
dst/b-dir/b.txtcontainsb - dir
dst/a-dirdoes not exist
Scenario: space-selected directory is moved even when the cursor moves away #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
src/a-dir/a.txtis created. - Fixture file
src/b-dir/b.txtis created. - Fixture file
dst/.keepis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture src/a-dir/a.txt:
a
Fixture src/b-dir/b.txt:
b
When #
# interactive (pty): yazi src
Then #
- file
dst/b-dir/b.txtcontainsb - dir
src/b-dirdoes not exist - dir
dst/a-dirdoes not exist
Scenario: space-selected spaced directory is moved even when the cursor moves away #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
src/a-dir/a.txtis created. - Fixture file
src/two words/b.txtis created. - Fixture file
dst/.keepis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture src/a-dir/a.txt:
a
Fixture src/two words/b.txt:
b
When #
# interactive (pty): yazi src
Then #
- file
dst/two words/b.txtcontainsb - dir
src/two wordsdoes not exist - dir
dst/a-dirdoes not exist
Scenario: visual mode selects a file range and moves both files #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
src/a.txtis created. - Fixture file
src/b.txtis created. - Fixture file
src/c.txtis created. - Fixture file
dst/.keepis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture src/a.txt:
a
Fixture src/b.txt:
b
Fixture src/c.txt:
c
When #
# interactive (pty): yazi src
Then #
- file
dst/a.txtcontainsa - file
dst/b.txtcontainsb - file
src/c.txtcontainsc - file
src/a.txtdoes not exist
Scenario: visual mode selects a file range and permanently deletes both files #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
a.txtis created. - Fixture file
b.txtis created. - Fixture file
c.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture a.txt:
a
Fixture b.txt:
b
Fixture c.txt:
c
When #
# interactive (pty): yazi .
Then #
- file
a.txtdoes not exist - file
b.txtdoes not exist - file
c.txtcontainsc
Scenario: visual mode selects a directory range and copies both directories #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
src/a-dir/a.txtis created. - Fixture file
src/b-dir/b.txtis created. - Fixture file
src/c-dir/c.txtis created. - Fixture file
dst/.keepis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture src/a-dir/a.txt:
a
Fixture src/b-dir/b.txt:
b
Fixture src/c-dir/c.txt:
c
When #
# interactive (pty): yazi src
Then #
- file
dst/a-dir/a.txtcontainsa - file
dst/b-dir/b.txtcontainsb - dir
dst/c-dirdoes not exist
Scenario: visual mode selects a directory range and moves both directories #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
src/a-dir/a.txtis created. - Fixture file
src/b-dir/b.txtis created. - Fixture file
src/c-dir/c.txtis created. - Fixture file
dst/.keepis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture src/a-dir/a.txt:
a
Fixture src/b-dir/b.txt:
b
Fixture src/c-dir/c.txt:
c
When #
# interactive (pty): yazi src
Then #
- file
dst/a-dir/a.txtcontainsa - file
dst/b-dir/b.txtcontainsb - dir
src/a-dirdoes not exist - file
src/c-dir/c.txtcontainsc
Scenario: visual mode selects spaced directories and moves both #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
src/a one/a.txtis created. - Fixture file
src/b two/b.txtis created. - Fixture file
src/c three/c.txtis created. - Fixture file
dst/.keepis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture src/a one/a.txt:
a
Fixture src/b two/b.txt:
b
Fixture src/c three/c.txt:
c
When #
# interactive (pty): yazi src
Then #
- file
dst/a one/a.txtcontainsa - file
dst/b two/b.txtcontainsb - dir
src/a onedoes not exist - file
src/c three/c.txtcontainsc
yazi (third-party terminal file manager) #
yazi is a file manager, so every keystroke is a potential file operation. A test that only checked the screen would pass on a version that draws a successful copy it never performed — and on a file manager, that class of bug destroys data.
So both are asserted throughout: what the terminal displays, and what actually happened on disk afterwards.
This suite covers the core interactions — hidden files staying hidden until toggled, live filtering narrowing the list, creating files and directories, renaming exactly one entry and nothing else, yank/paste and cut/paste between directories, and permanent deletion including the case where the confirmation is declined and the file must survive.
The remaining yazi suites break out selection semantics, entry arguments, navigation and tabs, search, and hardlinks and overwrites.
Source: test/e2e/thirdparty/yazi/yazi.atago.yaml
Scenario: version prints a semantic version banner #
only when yazi --version succeeds
When #
yazi --version
Then #
- exit code is
0 - stdout matches
/^Yazi [0-9]+\.[0-9]+\.[0-9]+/
Scenario: hidden files stay hidden by default #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
alpha.txtis created. - Fixture file
.secretis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
When #
# interactive (pty): yazi .
Then #
- rendered screen contains
alpha.txt - rendered screen does not contain
.secret
Scenario: dot toggles hidden files into view #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
alpha.txtis created. - Fixture file
.secretis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
When #
# interactive (pty): yazi .
Then #
- rendered screen contains
alpha.txt - rendered screen contains
.secret
Scenario: filter narrows the visible file list #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
alpha.txtis created. - Fixture file
beta.txtis created. - Fixture file
gamma.logis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
When #
# interactive (pty): yazi .
Then #
- rendered screen contains
beta.txt - rendered screen does not contain
alpha.txt - rendered screen does not contain
gamma.log
Scenario: create makes a new file #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
keep.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture keep.txt:
keep
When #
# interactive (pty): yazi ${workdir}
Then #
- exit code is
0 - the step changed exactly created
notes.txt, modified nothing, deleted nothing, ignoring.atago-home/** - file
notes.txtexists
Generated artifacts #
notes.txt
Scenario: create with a trailing slash makes a directory #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
keep.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
When #
# interactive (pty): yazi .
Then #
- exit code is
0 - dir
nestedexists
Scenario: rename changes the hovered file name and nothing else #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
old.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture old.txt:
old
When #
# interactive (pty): yazi .
Then #
- the step changed exactly created
old.bak.txt, modified nothing, deletedold.txt, ignoring.atago-home/** - file
old.txtdoes not exist - file
old.bak.txtcontainsold
Scenario: yank then paste copies a file into a sibling directory #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
src/alpha.txtis created. - Fixture file
dst/.keepis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture src/alpha.txt:
alpha
When #
# interactive (pty): yazi src
Then #
- exit code is
0 - the step changed exactly created
dst/alpha.txt, modified nothing, deleted nothing, ignoring.atago-home/** - file
src/alpha.txtcontainsalpha - file
dst/alpha.txtcontainsalpha
Scenario: select-all then yank copies multiple files into a sibling directory #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
src/a.txtis created. - Fixture file
src/b.txtis created. - Fixture file
dst/.keepis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture src/a.txt:
a
Fixture src/b.txt:
b
When #
# interactive (pty): yazi src
Then #
- exit code is
0 - the step changed exactly created
dst/a.txt,dst/b.txt, modified nothing, deleted nothing, ignoring.atago-home/** - file
dst/a.txtcontainsa - file
dst/b.txtcontainsb
Scenario: cut then paste moves a file into a sibling directory #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
src/beta.txtis created. - Fixture file
dst/.keepis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture src/beta.txt:
beta
When #
# interactive (pty): yazi src
Then #
- exit code is
0 - the step changed exactly created
dst/beta.txt, modified nothing, deletedsrc/beta.txt, ignoring.atago-home/** - file
src/beta.txtdoes not exist - file
dst/beta.txtcontainsbeta
Scenario: uppercase D permanently deletes the hovered file after confirmation #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
doomed.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture doomed.txt:
doomed
When #
# interactive (pty): yazi .
Then #
- exit code is
0 - the step changed exactly created nothing, modified nothing, deleted
doomed.txt, ignoring.atago-home/** - file
doomed.txtdoes not exist
Scenario: canceling permanent delete returns to the file list and keeps the file #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
keep.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture keep.txt:
keep
When #
# interactive (pty): yazi .
Then #
- exit code is
0 - file
keep.txtcontainskeep
Scenario: canceling a yank leaves nothing to paste #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
src/one.txtis created. - Fixture file
dst/.keepis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture src/one.txt:
one
When #
# interactive (pty): yazi src
Then #
- exit code is
0 - the step changed exactly created nothing, modified nothing, deleted nothing, ignoring
.atago-home/**
Scenario: canceling a cut leaves nothing to paste #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
src/one.txtis created. - Fixture file
dst/.keepis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture src/one.txt:
one
When #
# interactive (pty): yazi src
Then #
- exit code is
0 - the step changed exactly created nothing, modified nothing, deleted nothing, ignoring
.atago-home/**
Scenario: select-all then cut moves multiple files into a sibling directory #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
src/a.txtis created. - Fixture file
src/b.txtis created. - Fixture file
dst/.keepis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture src/a.txt:
a
Fixture src/b.txt:
b
When #
# interactive (pty): yazi src
Then #
- exit code is
0 - file
dst/a.txtcontainsa - file
dst/b.txtcontainsb - file
src/a.txtdoes not exist - file
src/b.txtdoes not exist
Scenario: select-all then permanent delete removes multiple files #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
a.txtis created. - Fixture file
b.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture a.txt:
a
Fixture b.txt:
b
When #
# interactive (pty): yazi .
Then #
- exit code is
0 - file
a.txtdoes not exist - file
b.txtdoes not exist
Scenario: trash moves the hovered file into sandbox home trash #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
trashme.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture trashme.txt:
trash
When #
# interactive (pty): yazi .
Then #
- exit code is
0 - file
trashme.txtdoes not exist - file
.atago-home/.local/share/Trash/files/trashme.txtcontainstrash
Scenario: trashing selected files moves both into sandbox home trash #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
a.txtis created. - Fixture file
b.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture a.txt:
a
Fixture b.txt:
b
When #
# interactive (pty): yazi .
Then #
- exit code is
0 - file
a.txtdoes not exist - file
b.txtdoes not exist - file
.atago-home/.local/share/Trash/files/a.txtcontainsa - file
.atago-home/.local/share/Trash/files/b.txtcontainsb
Scenario: canceling trash returns to the file list and keeps the file #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
keep.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture keep.txt:
keep
When #
# interactive (pty): yazi .
Then #
- exit code is
0 - file
keep.txtcontainskeep
Scenario: space-selected file is copied even when the cursor moves away #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
src/a.txtis created. - Fixture file
src/b.txtis created. - Fixture file
dst/.keepis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture src/a.txt:
a
Fixture src/b.txt:
b
When #
# interactive (pty): yazi src
Then #
- exit code is
0 - file
dst/b.txtcontainsb - file
dst/a.txtdoes not exist
Scenario: visual mode selects a range and copies both files #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
src/a.txtis created. - Fixture file
src/b.txtis created. - Fixture file
src/c.txtis created. - Fixture file
dst/.keepis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture src/a.txt:
a
Fixture src/b.txt:
b
Fixture src/c.txt:
c
When #
# interactive (pty): yazi src
Then #
- exit code is
0 - file
dst/a.txtcontainsa - file
dst/b.txtcontainsb - file
dst/c.txtdoes not exist
Scenario: lowercase p copies to item_1 when the destination already exists #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
src/item.txtis created. - Fixture file
dst/item.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture src/item.txt:
new
Fixture dst/item.txt:
old
When #
# interactive (pty): yazi src
Then #
- exit code is
0 - file
src/item.txtcontainsnew - file
dst/item.txtcontainsold - file
dst/item_1.txtcontainsnew
Scenario: lowercase p moves to item_1 when the destination already exists #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
src/item.txtis created. - Fixture file
dst/item.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture src/item.txt:
new
Fixture dst/item.txt:
old
When #
# interactive (pty): yazi src
Then #
- exit code is
0 - file
src/item.txtdoes not exist - file
dst/item.txtcontainsold - file
dst/item_1.txtcontainsnew
Scenario: uppercase P overwrites an existing file during copy #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
src/item.txtis created. - Fixture file
dst/item.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture src/item.txt:
new
Fixture dst/item.txt:
old
When #
# interactive (pty): yazi src
Then #
- exit code is
0 - file
src/item.txtcontainsnew - file
dst/item.txtcontainsnew
Scenario: uppercase P overwrites an existing file during move #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
src/item.txtis created. - Fixture file
dst/item.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture src/item.txt:
new
Fixture dst/item.txt:
old
When #
# interactive (pty): yazi src
Then #
- exit code is
0 - file
src/item.txtdoes not exist - file
dst/item.txtcontainsnew
Scenario: alphabetical sort puts a then b then c at the cursor #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
b.txtis created. - Fixture file
a.txtis created. - Fixture file
c.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
When #
# interactive (pty): yazi .
Then #
- exit code is
0
Scenario: reverse alphabetical sort puts c then b then a at the cursor #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
b.txtis created. - Fixture file
a.txtis created. - Fixture file
c.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
When #
# interactive (pty): yazi .
Then #
- exit code is
0
Scenario: extension sort puts log then md then txt at the cursor #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
b.mdis created. - Fixture file
a.txtis created. - Fixture file
c.logis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
When #
# interactive (pty): yazi .
Then #
- exit code is
0
Scenario: reverse extension sort puts txt then md then log at the cursor #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
b.mdis created. - Fixture file
a.txtis created. - Fixture file
c.logis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
When #
# interactive (pty): yazi .
Then #
- exit code is
0
Scenario: size sort puts one then two then three at the cursor #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
one.txtis created. - Fixture file
three.txtis created. - Fixture file
two.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture one.txt:
1
Fixture three.txt:
333
Fixture two.txt:
22
When #
# interactive (pty): yazi .
Then #
- exit code is
0
Scenario: reverse size sort puts three then two then one at the cursor #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
one.txtis created. - Fixture file
three.txtis created. - Fixture file
two.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture one.txt:
1
Fixture three.txt:
333
Fixture two.txt:
22
When #
# interactive (pty): yazi .
Then #
- exit code is
0
Scenario: natural sort puts 3 then 20 then 100 at the cursor #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
20.txtis created. - Fixture file
3.txtis created. - Fixture file
100.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
When #
# interactive (pty): yazi .
Then #
- exit code is
0
Scenario: natural sort is visible on the rendered file list before quitting #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
20.txtis created. - Fixture file
3.txtis created. - Fixture file
100.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
When #
# interactive (pty): yazi .
Then #
- exit code is
0
Scenario: reverse natural sort puts 100 then 20 then 3 at the cursor #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
20.txtis created. - Fixture file
3.txtis created. - Fixture file
100.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
When #
# interactive (pty): yazi .
Then #
- exit code is
0
Scenario: reverse natural sort is visible on the rendered file list before quitting #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
20.txtis created. - Fixture file
3.txtis created. - Fixture file
100.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
When #
# interactive (pty): yazi .
Then #
- exit code is
0
Scenario: chooser-file writes the hovered path and exits on enter #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
picked.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture picked.txt:
picked
When #
# interactive (pty): yazi --chooser-file ${workdir}/chosen.txt .
Then #
- exit code is
0 - file
chosen.txtcontainspicked.txt
Scenario: chooser-file writes all selected paths on enter #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
a.txtis created. - Fixture file
b.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture a.txt:
a
Fixture b.txt:
b
When #
# interactive (pty): yazi --chooser-file ${workdir}/chosen.txt .
Then #
- exit code is
0 - file
chosen.txtcontainsa.txt,b.txt
Scenario: chooser-file remains absent when quitting with uppercase Q #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
picked.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture picked.txt:
picked
When #
# interactive (pty): yazi --chooser-file ${workdir}/chosen.txt .
Then #
- exit code is
0 - file
chosen.txtdoes not exist
Scenario: uppercase G moves to the bottom item before choosing #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
a.txtis created. - Fixture file
b.txtis created. - Fixture file
z.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
When #
# interactive (pty): yazi --chooser-file ${workdir}/chosen.txt .
Then #
- exit code is
0 - file
chosen.txtcontainsz.txt
Scenario: gg moves to the top item before choosing #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
a.txtis created. - Fixture file
b.txtis created. - Fixture file
z.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
When #
# interactive (pty): yazi --chooser-file ${workdir}/chosen.txt .
Then #
- exit code is
0 - file
chosen.txtcontainsa.txt
Scenario: quitting immediately writes the initial cwd to cwd-file #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
alpha.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
When #
# interactive (pty): yazi --cwd-file ${workdir}/cwd.txt .
Then #
- exit code is
0 - file
cwd.txtcontains/atago-
Scenario: quitting after entering a directory writes the final cwd #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
z-nested/inside.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
When #
# interactive (pty): yazi --cwd-file ${workdir}/cwd.txt .
Then #
- exit code is
0 - file
cwd.txtcontainsz-nested
Scenario: leaving a directory then quitting writes the parent cwd #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
a-dir/a.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
When #
# interactive (pty): yazi --cwd-file ${workdir}/cwd.txt .
Then #
- exit code is
0 - file
cwd.txtdoes not containa-dir
Scenario: tabs preserve per-tab cwd and q writes the active tab cwd #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
a-dir/a.txtis created. - Fixture file
z-dir/z.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
When #
# interactive (pty): yazi --cwd-file ${workdir}/cwd.txt .
Then #
- exit code is
0 - file
cwd.txtcontainsa-dir
Scenario: closing the current tab returns to the previous tab cwd #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
a-dir/a.txtis created. - Fixture file
z-dir/z.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
When #
# interactive (pty): yazi --cwd-file ${workdir}/cwd.txt .
Then #
- exit code is
0 - file
cwd.txtcontainsa-dir
Scenario: previous and next tab navigation preserve each tab cwd #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
a-dir/a.txtis created. - Fixture file
z-dir/z.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
When #
# interactive (pty): yazi --cwd-file ${workdir}/cwd.txt .
Then #
- exit code is
0 - file
cwd.txtcontainsz-dir
Scenario: uppercase Q exits without writing the cwd file #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
z-nested/inside.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
When #
# interactive (pty): yazi --cwd-file ${workdir}/cwd.txt .
Then #
- exit code is
0 - file
cwd.txtdoes not exist
Scenario: create accepts filenames with spaces #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
keep.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture keep.txt:
keep
When #
# interactive (pty): yazi .
Then #
- file
two words.txtexists
Generated artifacts #
two words.txt
Scenario: create accepts directory names with spaces #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
keep.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture keep.txt:
keep
When #
# interactive (pty): yazi .
Then #
- dir
two wordsexists
Scenario: rename accepts spaces in filenames #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
old.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture old.txt:
old
When #
# interactive (pty): yazi .
Then #
- file
old two words.txtcontainsold
Scenario: rename accepts spaces in directory names #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
old-dir/keep.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture old-dir/keep.txt:
keep
When #
# interactive (pty): yazi .
Then #
- file
old-dir two words/keep.txtcontainskeep
Scenario: yank then dash creates an absolute symlink in the sibling directory #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
src/a.txtis created. - Fixture file
dst/.keepis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture src/a.txt:
a
When #
# interactive (pty): yazi .
readlink dst/a.txt
Then #
- stdout matches
/^.+/src/a\.txt ?$/
Scenario: yank then underscore creates a relative symlink in the sibling directory #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
src/a.txtis created. - Fixture file
dst/.keepis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture src/a.txt:
a
When #
# interactive (pty): yazi .
readlink dst/a.txt
Then #
- stdout equals an exact value
Scenario: yanked directory can be absolute-symlinked into a sibling directory #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
src/sub/a.txtis created. - Fixture file
dst/.keepis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture src/sub/a.txt:
a
When #
# interactive (pty): yazi .
readlink dst/sub
Then #
- stdout matches
/^.+/src/sub ?$/
Scenario: yanked directory can be relative-symlinked into a sibling directory #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
src/sub/a.txtis created. - Fixture file
dst/.keepis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture src/sub/a.txt:
a
When #
# interactive (pty): yazi .
readlink dst/sub
Then #
- stdout equals an exact value
Scenario: modified time sort reorders the rendered list #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
oldest.txtis created. - Fixture file
newest.txtis created. - Fixture file
middle.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture oldest.txt:
old
Fixture newest.txt:
new
Fixture middle.txt:
mid
When #
# interactive (pty): yazi .
Scenario: reverse modified time sort reorders the rendered list #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
oldest.txtis created. - Fixture file
newest.txtis created. - Fixture file
middle.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture oldest.txt:
old
Fixture newest.txt:
new
Fixture middle.txt:
mid
When #
# interactive (pty): yazi .
Scenario: modified time sort chooses the oldest file first #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
oldest.txtis created. - Fixture file
newest.txtis created. - Fixture file
middle.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture oldest.txt:
old
Fixture newest.txt:
new
Fixture middle.txt:
mid
When #
# interactive (pty): yazi --chooser-file ${workdir}/chosen.txt .
Then #
- file
chosen.txtcontainsoldest.txt
Scenario: reverse modified time sort chooses the newest file first #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
oldest.txtis created. - Fixture file
newest.txtis created. - Fixture file
middle.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture oldest.txt:
old
Fixture newest.txt:
new
Fixture middle.txt:
mid
When #
# interactive (pty): yazi --chooser-file ${workdir}/chosen.txt .
Then #
- file
chosen.txtcontainsnewest.txt
Scenario: toggling the same file twice removes the explicit selection #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
a.txtis created. - Fixture file
b.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture a.txt:
a
Fixture b.txt:
b
When #
# interactive (pty): yazi --chooser-file ${workdir}/chosen.txt .
Then #
- file
chosen.txtcontains/b.txt
Scenario: inverse selection flips one picked file into the other two #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
a.txtis created. - Fixture file
b.txtis created. - Fixture file
c.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture a.txt:
a
Fixture b.txt:
b
Fixture c.txt:
c
When #
# interactive (pty): yazi --chooser-file ${workdir}/chosen.txt .
cat chosen.txt
Then #
- stdout matches
/(?m)^.*/b\.txt\n.*/c\.txt\n?$/
Scenario: direct tab switching with 1 and 2 preserves per-tab cwd #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
one/a.txtis created. - Fixture file
two/b.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture one/a.txt:
a
Fixture two/b.txt:
b
When #
# interactive (pty): yazi --cwd-file ${workdir}/cwd.txt .
Then #
- file
cwd.txtcontains/two
Scenario: block shell command creates a file and returns to the browser #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
keep.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture keep.txt:
keep
When #
# interactive (pty): yazi .
Then #
- file
shell-created.txtcontainsshell-created
Scenario: filter can be cleared after confirming it #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
alpha.txtis created. - Fixture file
beta.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture alpha.txt:
a
Fixture beta.txt:
b
When #
# interactive (pty): yazi .
Scenario: yank then paste copies a directory subtree into a sibling directory #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
src/sub/a.txtis created. - Fixture file
dst/.keepis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture src/sub/a.txt:
a
When #
# interactive (pty): yazi .
Then #
- file
dst/src/sub/a.txtcontainsa - file
src/sub/a.txtcontainsa
Scenario: cut then paste moves a directory subtree into a sibling directory #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
src/sub/a.txtis created. - Fixture file
dst/.keepis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture src/sub/a.txt:
a
When #
# interactive (pty): yazi .
Then #
- file
dst/src/sub/a.txtcontainsa - dir
srcdoes not exist
Scenario: lowercase p copies a directory to name_1 when the destination exists #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
src/sub/a.txtis created. - Fixture file
dst/src/existing.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture src/sub/a.txt:
src
Fixture dst/src/existing.txt:
dst
When #
# interactive (pty): yazi .
Then #
- file
dst/src/existing.txtcontainsdst - file
dst/src_1/sub/a.txtcontainssrc
Scenario: lowercase p moves a directory to name_1 when the destination exists #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
src/sub/a.txtis created. - Fixture file
dst/src/existing.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture src/sub/a.txt:
src
Fixture dst/src/existing.txt:
dst
When #
# interactive (pty): yazi .
Then #
- file
dst/src/existing.txtcontainsdst - file
dst/src_1/sub/a.txtcontainssrc - dir
srcdoes not exist
Scenario: uppercase D permanently deletes a directory subtree after confirmation #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
doomed/sub/a.txtis created. - Fixture file
keep.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture doomed/sub/a.txt:
a
Fixture keep.txt:
keep
When #
# interactive (pty): yazi .
Then #
- dir
doomeddoes not exist
Scenario: canceling uppercase D keeps a directory subtree intact #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
doomed/sub/a.txtis created. - Fixture file
keep.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture doomed/sub/a.txt:
a
Fixture keep.txt:
keep
When #
# interactive (pty): yazi .
Then #
- file
doomed/sub/a.txtcontainsa
Scenario: trash moves a directory subtree into sandbox home trash #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
doomed/sub/a.txtis created. - Fixture file
keep.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture doomed/sub/a.txt:
a
Fixture keep.txt:
keep
When #
# interactive (pty): yazi .
Then #
- dir
doomeddoes not exist - file
.atago-home/.local/share/Trash/files/doomed/sub/a.txtcontainsa
Scenario: canceling trash keeps a directory subtree intact #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
doomed/sub/a.txtis created. - Fixture file
keep.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture doomed/sub/a.txt:
a
Fixture keep.txt:
keep
When #
# interactive (pty): yazi .
Then #
- file
doomed/sub/a.txtcontainsa
Scenario: canceling trash for selected directories keeps both subtrees #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
alpha-dir/sub/x.txtis created. - Fixture file
beta-dir/sub/y.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture alpha-dir/sub/x.txt:
x
Fixture beta-dir/sub/y.txt:
y
When #
# interactive (pty): yazi .
Then #
- file
alpha-dir/sub/x.txtcontainsx - file
beta-dir/sub/y.txtcontainsy
Scenario: yank then paste copies a spaced filename into a sibling directory #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
src/two words.txtis created. - Fixture file
dst/.keepis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture src/two words.txt:
spaced
When #
# interactive (pty): yazi src
Then #
- file
dst/two words.txtcontainsspaced
Scenario: cut then paste moves a spaced filename into a sibling directory #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
src/two words.txtis created. - Fixture file
dst/.keepis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture src/two words.txt:
spaced
When #
# interactive (pty): yazi src
Then #
- file
dst/two words.txtcontainsspaced - file
src/two words.txtdoes not exist
Scenario: yank then paste copies a spaced directory subtree into a sibling directory #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
src/two words/a.txtis created. - Fixture file
dst/.keepis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture src/two words/a.txt:
spaced
When #
# interactive (pty): yazi src
Then #
- file
dst/two words/a.txtcontainsspaced
Scenario: dash symlinks a spaced filename with an absolute target #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
src/two words.txtis created. - Fixture file
dst/.keepis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture src/two words.txt:
spaced
When #
# interactive (pty): yazi src
readlink "dst/two words.txt"
Then #
- stdout matches
/^.+/src/two words\.txt ?$/
Scenario: underscore symlinks a spaced filename with a relative target #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
src/two words.txtis created. - Fixture file
dst/.keepis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture src/two words.txt:
spaced
When #
# interactive (pty): yazi src
readlink "dst/two words.txt"
Then #
- stdout equals an exact value
Scenario: dash symlinks a spaced directory with an absolute target #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
src/two words/a.txtis created. - Fixture file
dst/.keepis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture src/two words/a.txt:
spaced
When #
# interactive (pty): yazi src
readlink "dst/two words"
Then #
- stdout matches
/^.+/src/two words ?$/
Scenario: underscore symlinks a spaced directory with a relative target #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
src/two words/a.txtis created. - Fixture file
dst/.keepis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture src/two words/a.txt:
spaced
When #
# interactive (pty): yazi src
readlink "dst/two words"
Then #
- stdout equals an exact value
Scenario: hidden toggle can be turned back off #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
alpha.txtis created. - Fixture file
.secretis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
When #
# interactive (pty): yazi --chooser-file ${workdir}/chosen.txt .
Then #
- file
chosen.txtcontainsalpha.txt
Scenario: block shell command creates a directory and returns to the browser #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
keep.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture keep.txt:
keep
When #
# interactive (pty): yazi .
Then #
- dir
shell-direxists
Scenario: block shell command can rename a file in place #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
old.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture old.txt:
old
When #
# interactive (pty): yazi .
Then #
- file
shell-renamed.txtcontainsold
Scenario: block shell command creates a spaced filename #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
keep.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture keep.txt:
keep
When #
# interactive (pty): yazi .
Then #
- file
two words.txtcontainsspaced
Scenario: block shell command creates a spaced directory #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
keep.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture keep.txt:
keep
When #
# interactive (pty): yazi .
Then #
- dir
two wordsexists
Scenario: block shell command deletes the hovered file #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
doomed.txtis created. - Fixture file
keep.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture doomed.txt:
doomed
Fixture keep.txt:
keep
When #
# interactive (pty): yazi .
Then #
- file
doomed.txtdoes not exist
Scenario: block shell command copies the hovered file to a new name #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
old.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture old.txt:
old
When #
# interactive (pty): yazi .
Then #
- file
shell-copy.txtcontainsold
Scenario: block shell command runs inside the entered directory #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
sub/keep.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture sub/keep.txt:
keep
When #
# interactive (pty): yazi .
Then #
- file
sub/inside.txtcontainsinside
Scenario: block shell command can create nested files inside a new directory #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
keep.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture keep.txt:
keep
When #
# interactive (pty): yazi .
Then #
- file
shell-nested/file.txtcontainsnested
Scenario: block shell command moves a file into a new directory #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
move-me.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture move-me.txt:
move
When #
# interactive (pty): yazi .
Then #
- file
moved/move-me.txtcontainsmove
Scenario: block shell command renames a directory #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
old-dir/a.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture old-dir/a.txt:
a
When #
# interactive (pty): yazi .
Then #
- file
shell-dir/a.txtcontainsa
Scenario: block shell command appends to the hovered file content #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
note.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture note.txt:
first
When #
# interactive (pty): yazi .
Then #
- file
note.txtcontainssecond
Scenario: block shell command can create a hidden file that dot then reveals #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
keep.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture keep.txt:
keep
When #
# interactive (pty): yazi .
Then #
- file
.shell-hiddencontainshidden
Scenario: block shell command deletes a directory subtree #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
doomed/a.txtis created. - Fixture file
keep.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture doomed/a.txt:
doomed
Fixture keep.txt:
keep
When #
# interactive (pty): yazi .
Then #
- dir
doomeddoes not exist
Scenario: block shell command copies a directory subtree to a new name #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
src/a.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture src/a.txt:
a
When #
# interactive (pty): yazi .
Then #
- file
shell-copy-dir/a.txtcontainsa
Scenario: block shell command creates a symlink to a file #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
target.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture target.txt:
target
When #
# interactive (pty): yazi .
readlink linked.txt
Then #
- stdout equals an exact value
Scenario: block shell command creates a symlink to a directory #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
target-dir/a.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture target-dir/a.txt:
a
When #
# interactive (pty): yazi .
readlink linked-dir
Then #
- stdout equals an exact value
Scenario: block shell command renames a spaced filename #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
old name.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture old name.txt:
old
When #
# interactive (pty): yazi .
Then #
- file
new name.txtcontainsold
Scenario: block shell command creates a symlink to a spaced filename #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
target file.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture target file.txt:
target
When #
# interactive (pty): yazi .
readlink "linked file.txt"
Then #
- stdout equals an exact value
Scenario: block shell command creates a symlink to a spaced directory #
only when yazi --version succeeds · skipped on Windows
Given #
- Fixture file
target dir/a.txtis created. - The command runs with a cleared environment (passing through: PATH).
- The command runs with an isolated home under
${workdir}/.atago-home(HOME/XDG or APPDATA redirected).
Inputs #
Fixture target dir/a.txt:
a
When #
# interactive (pty): yazi .
readlink "linked dir"
Then #
- stdout equals an exact value