Mélanie Chauvel fe11b9d319 Fix panic on non UTF-8 file when using Git 4 năm trước cách đây
..
features 8c34b46a22 Version output changes 4 năm trước cách đây
outputs fe11b9d319 Fix panic on non UTF-8 file when using Git 4 năm trước cách đây
README.md 61c5df7c11 Use Specsheet for the extended tests 5 năm trước cách đây
attributes.toml 61c5df7c11 Use Specsheet for the extended tests 5 năm trước cách đây
colour-term.toml 61c5df7c11 Use Specsheet for the extended tests 5 năm trước cách đây
debug-logging.toml 61c5df7c11 Use Specsheet for the extended tests 5 năm trước cách đây
details-view-dates.toml f673e018b5 Add a test checking that date of the current year follows locale 4 năm trước cách đây
details-view-filesizes.toml d19d66d57a Fix device IDs test so it works every time 4 năm trước cách đây
details-view-passwd.toml 61c5df7c11 Use Specsheet for the extended tests 5 năm trước cách đây
details-view-permissions.toml 61c5df7c11 Use Specsheet for the extended tests 5 năm trước cách đây
details-view.toml dbd11d3804 Add classify char to symlink targets 4 năm trước cách đây
dotfiles.toml 61c5df7c11 Use Specsheet for the extended tests 5 năm trước cách đây
errors.toml b1c49341c0 Add tests for common command-line errors 4 năm trước cách đây
git-ignore.toml 06c899cac0 More git-ignore xtests 5 năm trước cách đây
git.toml fe11b9d319 Fix panic on non UTF-8 file when using Git 4 năm trước cách đây
grid-details-view.toml beaf561086 Add xtests for EXA_GRID_ROWS 4 năm trước cách đây
grid-view.toml da171c405f Fix argument sorting in test outputs 4 năm trước cách đây
help.toml 701a2e60e5 Add 'exa: ' before all command-line errors 4 năm trước cách đây
icons.toml 51be9f4c43 Introduce EXA_ICON_SPACING environment variable 5 năm trước cách đây
ignore-glob.toml 61c5df7c11 Use Specsheet for the extended tests 5 năm trước cách đây
input-options.toml 61c5df7c11 Use Specsheet for the extended tests 5 năm trước cách đây
lines-view.toml 61c5df7c11 Use Specsheet for the extended tests 5 năm trước cách đây
run.sh 5d13a65e4f Justfile improvements 4 năm trước cách đây
sorting.toml cfa00bf4b2 Fix new tests 5 năm trước cách đây
themes.toml 61c5df7c11 Use Specsheet for the extended tests 5 năm trước cách đây
tree-view.toml 61c5df7c11 Use Specsheet for the extended tests 5 năm trước cách đây

README.md

exa › xtests

These are the extended tests. They are integration tests: they run the exa binary with select configurations of parameters and environment variables, and assert that the program prints the correct text to standard output and error, and exits with the correct status code.

They test things like:

  • broken symlinks
  • extended attributes
  • file names with weird stuff like newlines or escapes in
  • invalid UTF-8
  • missing users and groups
  • nested Git repositories

They are intended to be run from the Vagrant VM that has already had its environment set up — see the devtools/dev-create-test-filesystem.sh script for how the files are generated.

Anatomy of the tests

The tests are run using Specsheet. The TOML files define the tests, and the files in output/ contain the output that exa should produce.

For example, let’s look at one of the tests in lines-view.toml. This test checks that running exa does the right thing when running with the -1 argument, and a directory full of files:

[[cmd]]
name = "‘exa -1’ displays file names, one on each line"
shell = "exa -1 /testcases/file-names"
stdout = { file = "outputs/names_lines.ansitxt" }
stderr = { empty = true }
status = 0
tags = [ 'oneline' ]

Here’s an explanation of each line:

  1. The [[cmd]] line marks this test as a cmd check, which can run arbitrary commands. In this case, the commad is exa with some arguments.

  2. The name field is a human-readable description of the feature of exa that’s under test. It gets printed to the screen as tests are run.

  3. The shell field contains the shell script to execute. It should have exa in there somewhere.

  4. The stdout field describes the content that exa should print to standard output. In this case, the test asserts that the output of running the program should be identical to the contents of the file.

  5. The stderr field describes the content of standard error. In this case, it asserts that nothing is printed to stderr.

  6. The status field asserts that exa should exit with a status code of 0.

  7. The tags field does not change the test at all, but can be used to filter which tests are run, instead of running all of them each time.