# The first Git repo: additions and modifications

[[cmd]]
name = "‘exa --git -l’ shows a Git status column"
shell = "exa --git -l /testcases/git"
stdout = { file = "outputs/git1_long.ansitxt" }
stderr = { empty = true }
status = 0
tags = [ 'long', 'git' ]

[[cmd]]
name = "‘exa --git -lR’ shows a Git status column in every table"
shell = "exa --git -lR /testcases/git"
stdout = { file = "outputs/git1_long_recurse.ansitxt" }
stderr = { empty = true }
status = 0
tags = [ 'long', 'git' ]

[[cmd]]
name = "‘exa --git -lT’ shows a Git status column alongside the tree"
shell = "exa --git -lT /testcases/git"
stdout = { file = "outputs/git1_long_tree.ansitxt" }
stderr = { empty = true }
status = 0
tags = [ 'long', 'git' ]

[[cmd]]
name = "‘exa --git -l’ with a directory argument shows the combined Git status column"
shell = "exa --git -l /testcases/git/moves/thither"
stdout = { file = "outputs/git1_long_moves.ansitxt" }
stderr = { empty = true }
status = 0
tags = [ 'long', 'git' ]

[[cmd]]
name = "‘exa --git -l’ shows a Git status column containing new files"
shell = "exa --git -l /testcases/git/additions"
stdout = { file = "outputs/git1_long_additions.ansitxt" }
stderr = { empty = true }
status = 0
tags = [ 'long', 'git' ]

[[cmd]]
name = "‘exa --git -l’ shows a Git status column containing modified files"
shell = "exa --git -l /testcases/git/edits"
stdout = { file = "outputs/git1_long_edits.ansitxt" }
stderr = { empty = true }
status = 0
tags = [ 'long', 'git' ]

[[cmd]]
name = "‘exa --git -l’ shows a Git status column containing multiple statuses"
shell = "exa --git -l /testcases/git/{additions,edits}"
stdout = { file = "outputs/git1_long_multiple.ansitxt" }
stderr = { empty = true }
status = 0
tags = [ 'long', 'git' ]

[[cmd]]
name = "‘exa --git -lGd’ with file arguments shows a Git status column"
shell = "exa --git -lGd /testcases/git/**/* /testcases"
environment = { COLUMNS = "150" }
stdout = { file = "outputs/git1_paths_long_grid.ansitxt" }
stderr = { empty = true }
status = 0
tags = [ 'long', 'grid', 'git', 'list-dirs' ]


# The second Git repo: nested repositories and file ignoring

[[cmd]]
name = "‘exa --git -l’ shows a Git status column with ignored statuses"
shell = "exa --git -l /testcases/git2"
stdout = { file = "outputs/git2_long.ansitxt" }
stderr = { empty = true }
status = 0
tags = [ 'long', 'git' ]

[[cmd]]
name = "‘exa --git -lR’ shows a Git status column in every table, handling ignored files and nested repositories"
shell = "exa --git -lR /testcases/git2"
stdout = { file = "outputs/git2_long_recurse.ansitxt" }
stderr = { empty = true }
status = 0
tags = [ 'long', 'git' ]

[[cmd]]
name = "‘exa --git -lT’ shows a Git status column alongside the tree, handling ignored files and nested repositories"
shell = "exa --git -lT /testcases/git2"
stdout = { file = "outputs/git2_long_tree.ansitxt" }
stderr = { empty = true }
status = 0
tags = [ 'long', 'git' ]

[[cmd]]
name = "‘exa --git -l’ with a directory argument shows ignored flags inside a directory"
shell = "exa --git -l /testcases/git2/ignoreds"
stdout = { file = "outputs/git2_long_ignorednested.ansitxt" }
stderr = { empty = true }
status = 0
tags = [ 'long', 'git' ]

[[cmd]]
name = "‘exa --git -l’ with an ignored directory argument flags the contents as ignored"
shell = "exa --git -l /testcases/git2/target"
stdout = { file = "outputs/git2_long_ignoreddir.ansitxt" }
stderr = { empty = true }
status = 0
tags = [ 'long', 'git' ]

[[cmd]]
name = "‘exa --git -l --list-dirs’ with a directory argument doesn’t flag it as ignored if only the content is"
shell = "exa --git -l --list-dirs /testcases/git2/ignoreds/nested2"
stdout = { file = "outputs/git2_long_ignoredcontent.ansitxt" }
stderr = { empty = true }
status = 0
tags = [ 'long', 'git' ]

[[cmd]]
name = "‘exa --git -l’ with a nested repository argument uses the sub-repository rules"
shell = "exa --git -l /testcases/git2/deeply/nested/repository"
stdout = { file = "outputs/git2_long_nested.ansitxt" }
stderr = { empty = true }
status = 0
tags = [ 'long', 'git' ]

[[cmd]]
name = "‘exa --git -l’ with multiple directory arguments still gets the flags correct"
shell = "exa --git -l /testcases/git2/{deeply,ignoreds,target}"
stdout = { file = "outputs/git2_long_multiple.ansitxt" }
stderr = { empty = true }
status = 0
tags = [ 'long', 'git' ]


# The third Git repo: broken symlinks

[[cmd]]
name = "‘exa --git -l’ handles broken symlinks in Git repositories"
shell = "exa --git -l /testcases/git3"
stdout = { file = "outputs/git3_long.ansitxt" }
stderr = { empty = true }
status = 0
tags = [ 'long', 'git' ]



# The forth Git repo: non UTF-8 file

[[cmd]]
name = "‘exa --git -l’ handles non UTF8 file in Git repositories"
shell = "exa --git -l /testcases/git4"
stdout = { file = "outputs/git4_long.ansitxt" }
stderr = { empty = true }
status = 0
tags = [ 'long', 'git' ]


# Both repositories 1 and 2 at once

[[cmd]]
name = "‘exa --git -l’ shows a Git status column for multiple repositories"
shell = "exa --git -l /testcases/git /testcases/git2"
stdout = { file = "outputs/git1+2_long.ansitxt" }
stderr = { empty = true }
status = 0
tags = [ 'long', 'git' ]

[[cmd]]
name = "‘exa --git -l’ shows a Git status column for multiple repositories across multiple directories"
shell = "exa --git -l /testcases/{git/additions,git2/deeply,git/edits,git2/deeply/nested}"
stdout = { file = "outputs/git1+2_long_directories.ansitxt" }
stderr = { empty = true }
status = 0
tags = [ 'long', 'git' ]

[[cmd]]
name = "‘exa --git -l’ shows a Git status column for multiple repositories across multiple directories 2"
shell = "exa --git -l /testcases/{git2/deeply/nested/directory,git/edits,git2/target,git2/deeply,git}"
stdout = { file = "outputs/git1+2_long_nested.ansitxt" }
stderr = { empty = true }
status = 0
tags = [ 'long', 'git' ]


# No repository present

[[cmd]]
name = "‘exa --git -l’ shows an empty status for no repository"
shell = "exa --git -l /testcases/files"
stdout = { file = "outputs/files_long.ansitxt" }
stderr = { empty = true }
status = 0
tags = [ 'long', 'git' ]

[[cmd]]
name = "‘exa --git -lG’ shows an empty status for no repository"
shell = "exa --git -lG /testcases/files"
environment = { COLUMNS = "40" }
stdout = { file = "outputs/files_long_grid_1col.ansitxt" }
stderr = { empty = true }
status = 0
tags = [ 'env', 'long', 'grid', 'git' ]
