run.sh 9.1 KB
Newer Older
1 2 3 4
#!/bin/bash
set +xe


B
Benjamin Sago 已提交
5 6 7 8 9
# The exa binary
exa_binary="$HOME/target/debug/exa"

# The exa command that ends up being run
exa="$exa_binary --colour=always"
10 11

# Directory containing our awkward testcase files
B
Benjamin Sago 已提交
12
testcases="/testcases"
13 14

# Directory containing existing test results to compare against
B
Benjamin Sago 已提交
15
results="/vagrant/xtests"
16 17


18 19 20 21 22
# We want to use strict mode here. It’s important that no combination of
# testing flags happens to work by accident!
export EXA_STRICT=1


23 24 25
# Check that no files were created more than a year ago.
# Files not from the current year use a different date format, meaning
# that tests will fail until the VM gets re-provisioned.
26 27
# (Ignore the folder that deliberately has dates in the past)
sudo find $testcases -mtime +365 -not -path "*/dates/*" -printf "File %p has not been modified since %TY! Consider re-provisioning; tests will probably fail.\n"
28

29

30
# Long view tests
B
oops  
Benjamin Sago 已提交
31
$exa $testcases/files -l   | diff -q - $results/files_l     || exit 1
32 33 34
$exa $testcases/files -lh  | diff -q - $results/files_lh    || exit 1
$exa $testcases/files -lhb | diff -q - $results/files_lhb   || exit 1
$exa $testcases/files -lhB | diff -q - $results/files_lhb2  || exit 1
B
Benjamin Sago 已提交
35
$exa $testcases/attributes/dirs/no-xattrs_empty -lh | diff -q - $results/empty  || exit 1
36

B
Benjamin Sago 已提交
37
$exa --color-scale         $testcases/files -l | diff -q - $results/files_l_scale  || exit 1
B
Benjamin Sago 已提交
38

39

40 41 42 43 44 45 46
# Grid view tests
COLUMNS=40  $exa $testcases/files | diff -q - $results/files_40   || exit 1
COLUMNS=80  $exa $testcases/files | diff -q - $results/files_80   || exit 1
COLUMNS=120 $exa $testcases/files | diff -q - $results/files_120  || exit 1
COLUMNS=160 $exa $testcases/files | diff -q - $results/files_160  || exit 1
COLUMNS=200 $exa $testcases/files | diff -q - $results/files_200  || exit 1

B
Benjamin Sago 已提交
47
COLUMNS=100 $exa $testcases/files/* | diff -q - $results/files_star_100  || exit 1
48 49 50
COLUMNS=150 $exa $testcases/files/* | diff -q - $results/files_star_150  || exit 1
COLUMNS=200 $exa $testcases/files/* | diff -q - $results/files_star_200  || exit 1

51

52 53 54 55 56 57 58
# Long grid view tests
COLUMNS=40  $exa $testcases/files -lG | diff -q - $results/files_lG_40   || exit 1
COLUMNS=80  $exa $testcases/files -lG | diff -q - $results/files_lG_80   || exit 1
COLUMNS=120 $exa $testcases/files -lG | diff -q - $results/files_lG_120  || exit 1
COLUMNS=160 $exa $testcases/files -lG | diff -q - $results/files_lG_160  || exit 1
COLUMNS=200 $exa $testcases/files -lG | diff -q - $results/files_lG_200  || exit 1

59 60 61 62
COLUMNS=100 $exa $testcases/files/* -lG | diff -q - $results/files_star_lG_100  || exit 1
COLUMNS=150 $exa $testcases/files/* -lG | diff -q - $results/files_star_lG_150  || exit 1
COLUMNS=200 $exa $testcases/files/* -lG | diff -q - $results/files_star_lG_200  || exit 1

63

64 65 66 67 68 69 70 71
# File size tests
$exa $testcases/files -l --binary | diff -q - $results/files_l_binary  || exit 1
$exa $testcases/files -l --bytes  | diff -q - $results/files_l_bytes   || exit 1

EXA_STRICT= $exa $testcases/files -l --bytes --binary   | diff -q - $results/files_l_binary  || exit 1
EXA_STRICT= $exa $testcases/files -l --binary --bytes   | diff -q - $results/files_l_bytes   || exit 1


72
# Attributes
73 74 75 76
# (there are many tests, but they’re all done in one go)
$exa $testcases/attributes  -l@T | diff -q - $results/attributes        || exit 1
$exa $testcases/attributes   -@T | diff -q - $results/attributes_dir    || exit 1
$exa $testcases/attributes/* -@T | diff -q - $results/attributes_files  || exit 1
77

78

79 80 81
# UIDs and GIDs
$exa $testcases/passwd -lgh | diff -q - $results/passwd  || exit 1

82 83 84 85 86

# Permissions, and current users and groups
sudo -u cassowary $exa $testcases/permissions -lghR 2>&1 | diff -q - $results/permissions_sudo  || exit 1
                  $exa $testcases/permissions -lghR 2>&1 | diff -q - $results/permissions       || exit 1

87
# File names
88
# (Mostly escaping control characters in file names)
89 90
COLUMNS=80 $exa $testcases/file-names    2>&1 | diff -q - $results/file_names   || exit 1
COLUMNS=80 $exa $testcases/file-names -x 2>&1 | diff -q - $results/file_names_x || exit 1
91
COLUMNS=80 $exa $testcases/file-names -R 2>&1 | diff -q - $results/file_names_R || exit 1
92
           $exa $testcases/file-names -1 2>&1 | diff -q - $results/file_names_1 || exit 1
93
           $exa $testcases/file-names -T 2>&1 | diff -q - $results/file_names_T || exit 1
94

95
# At least make sure it handles invalid UTF-8 arguments without crashing
B
Benjamin Sago 已提交
96
$exa $testcases/file-names/* >/dev/null || exit 1
97 98


99 100 101 102 103 104
# Sorting and extension file types
$exa $testcases/file-names-exts -1 2>&1 --sort=Name | diff -q - $results/file-names-exts           || exit 1
$exa $testcases/file-names-exts -1 2>&1 --sort=name | diff -q - $results/file-names-exts-case      || exit 1
$exa $testcases/file-names-exts -1 2>&1 --sort=Ext  | diff -q - $results/file-names-exts-ext       || exit 1
$exa $testcases/file-names-exts -1 2>&1 --sort=ext  | diff -q - $results/file-names-exts-ext-case  || exit 1

B
Benjamin Sago 已提交
105 106 107 108
# Pass multiple input arguments because there aren’t enough of different types
# in one directory already
$exa $testcases/links -1 --sort=type 2>&1 | diff -q - $results/sort-by-type  || exit 1

B
Benjamin Sago 已提交
109 110 111 112
# We can’t guarantee inode numbers, but we can at least check that they’re in
# order. The inode column is the leftmost one, so sort works for this.
$exa $testcases/file-names-exts --long --inode --sort=inode | sort --check  || exit 1

113 114

# Other file types
B
Benjamin Sago 已提交
115 116 117
$exa $testcases/specials             -l 2>&1 | diff -q - $results/specials       || exit 1
$exa $testcases/specials          -F -l 2>&1 | diff -q - $results/specials_F     || exit 1
$exa $testcases/specials --sort=type -1 2>&1 | diff -q - $results/specials_sort  || exit 1
B
Ben S 已提交
118

119

B
Ben S 已提交
120
# Ignores
121 122
$exa $testcases/file-names-exts/music.* -I "*.OGG"       -1 2>&1 | diff -q - $results/ignores_ogg  || exit 1
$exa $testcases/file-names-exts/music.* -I "*.OGG|*.mp3" -1 2>&1 | diff -q - $results/empty        || exit 1
B
Ben S 已提交
123

B
Ben S 已提交
124

125 126 127
# Dates and times
$exa $testcases/dates -lh --accessed --sort=accessed 2>&1 | diff -q - $results/dates_accessed  || exit 1
$exa $testcases/dates -lh            --sort=modified 2>&1 | diff -q - $results/dates_modified  || exit 1
128
$exa $testcases/dates -l       --time-style=long-iso 2>&1 | diff -q - $results/dates_long_iso  || exit 1
B
Benjamin Sago 已提交
129
$exa $testcases/dates -l       --time-style=full-iso 2>&1 | diff -q - $results/dates_full_iso  || exit 1
B
Benjamin Sago 已提交
130
$exa $testcases/dates -l            --time-style=iso 2>&1 | diff -q - $results/dates_iso       || exit 1
131

132 133 134 135 136 137
# Locales
# These two are used in particular because they have 5-long and 4-long
# month names respectively
env LANG=fr_FR.UTF-8  $exa $testcases/dates -l | diff -q - $results/dates_fr  || exit 1
env LANG=ja_JP.UTF-8  $exa $testcases/dates -l | diff -q - $results/dates_jp  || exit 1

138

B
Benjamin Sago 已提交
139 140 141 142
# Paths and directories
# These directories are created in the VM user’s home directory (the default
# location) when a Cargo build is done.
(cd; $exa -1d target target/debug target/debug/build | diff -q - $results/dir_paths) || exit 1
143
     $exa -1d . .. /                                 | diff -q - $results/dirs       || exit 1
B
Benjamin Sago 已提交
144 145


146 147 148 149 150
# Links
COLUMNS=80 $exa $testcases/links    2>&1 | diff -q - $results/links        || exit 1
           $exa $testcases/links -1 2>&1 | diff -q - $results/links_1      || exit 1
           $exa $testcases/links -T 2>&1 | diff -q - $results/links_T      || exit 1
           $exa /proc/1/root     -T 2>&1 | diff -q - $results/proc_1_root  || exit 1
151

152 153 154 155
# There’ve been bugs where the target file wasn’t printed properly when the
# symlink file was specified on the command-line directly.
$exa $testcases/links/* -1 | diff -q - $results/links_1_files || exit 1

156

157 158 159 160 161 162 163 164
# Colours and terminals
# Just because COLUMNS is present, doesn’t mean output is to a terminal
COLUMNS=80 $exa_binary                    $testcases/files -l | diff -q - $results/files_l_bw  || exit 1
COLUMNS=80 $exa_binary --colour=always    $testcases/files -l | diff -q - $results/files_l     || exit 1
COLUMNS=80 $exa_binary --colour=never     $testcases/files -l | diff -q - $results/files_l_bw  || exit 1
COLUMNS=80 $exa_binary --colour=automatic $testcases/files -l | diff -q - $results/files_l_bw  || exit 1


165 166 167 168
# Git
$exa $testcases/git/additions -l --git 2>&1 | diff -q - $results/git_additions  || exit 1
$exa $testcases/git/edits     -l --git 2>&1 | diff -q - $results/git_edits      || exit 1

B
Benjamin Sago 已提交
169 170 171 172 173 174 175 176 177 178 179

# Hidden files
COLUMNS=80 $exa $testcases/hiddens     2>&1 | diff -q - $results/hiddens     || exit 1
COLUMNS=80 $exa $testcases/hiddens -a  2>&1 | diff -q - $results/hiddens_a   || exit 1
COLUMNS=80 $exa $testcases/hiddens -aa 2>&1 | diff -q - $results/hiddens_aa  || exit 1

$exa $testcases/hiddens -l     2>&1 | diff -q - $results/hiddens_l    || exit 1
$exa $testcases/hiddens -l -a  2>&1 | diff -q - $results/hiddens_la   || exit 1
$exa $testcases/hiddens -l -aa 2>&1 | diff -q - $results/hiddens_laa  || exit 1


180
# Errors
181 182 183 184 185
$exa --binary     2>&1 | diff -q - $results/error_useless    || exit 1
$exa --ternary    2>&1 | diff -q - $results/error_long       || exit 1
$exa -4           2>&1 | diff -q - $results/error_short      || exit 1
$exa --time       2>&1 | diff -q - $results/error_value      || exit 1
$exa --long=time  2>&1 | diff -q - $results/error_overvalued || exit 1
186 187


B
Benjamin Sago 已提交
188
# And finally...
189 190
$exa --help        | diff -q - $results/help      || exit 1
$exa --help --long | diff -q - $results/help_long || exit 1
191

B
Benjamin Sago 已提交
192

193
echo "All the tests passed!"