Use the prebuilt summer binary.
$ alias summer="$TESTDIR/../summer"
Generate test data.
$ touch empty
$ echo marola > hola
Generate and verify.
$ summer generate .
0s: 0 matched, 0 modified, 2 new, 0 corrupted
$ summer verify .
0s: 2 matched, 0 modified, 0 new, 0 corrupted
Check handling of new and updated files.
$ sleep 0.005
$ echo trova > nueva
$ touch empty
$ summer verify .
0s: 1 matched, 1 modified, 1 new, 0 corrupted
$ summer update .
0s: 1 matched, 1 modified, 1 new, 0 corrupted
$ summer verify .
0s: 3 matched, 0 modified, 0 new, 0 corrupted
Corrupt a file by changing its contents without changing the mtime.
$ OLD_MTIME=`stat -c "%y" hola`
$ echo sospechoso >> hola
$ summer verify .
0s: 2 matched, 1 modified, 0 new, 0 corrupted
$ touch --date="$OLD_MTIME" hola
$ summer verify .
"hola": FILE CORRUPTED - expected:239059f6, got:916db13f
0s: 2 matched, 0 modified, 0 new, 1 corrupted
detected 1 corrupted files
[1]
Check that "update" also detects the corruption, and doesn't just step over
it.
$ summer update .
"hola": FILE CORRUPTED - expected:239059f6, got:916db13f
0s: 2 matched, 0 modified, 0 new, 1 corrupted
detected 1 corrupted files
[1]
Editing the file makes us ignore the previous checksum.
$ touch hola
$ summer update .
0s: 2 matched, 1 modified, 0 new, 0 corrupted
$ summer verify .
0s: 3 matched, 0 modified, 0 new, 0 corrupted
Check verbose and quiet. For verbose, use --parallel=1 to ensure reproducible
output.
$ touch denuevo
$ summer --parallel=1 -v verify .
"denuevo": missing checksum attribute
"empty": match \(checksum:0, mtime:\d+\) (re)
"hola": match \(checksum:916db13f, mtime:\d+\) (re)
"nueva": match \(checksum:91f3a28e, mtime:\d+\) (re)
0s: 3 matched, 0 modified, 1 new, 0 corrupted
$ summer --parallel=1 -v generate .
"denuevo": writing checksum \(checksum:0, mtime:\d+\) (re)
0s: 0 matched, 0 modified, 1 new, 0 corrupted
$ summer -q verify .
$ summer -q generate .
$ summer -q update .
$ summer -q verify .
$ rm denuevo
Check that symlinks are ignored.
$ ln -s hola thisisasymlink
$ summer --parallel=1 -v verify .
"empty": match \(checksum:0, mtime:\d+\) (re)
"hola": match \(checksum:916db13f, mtime:\d+\) (re)
"nueva": match \(checksum:91f3a28e, mtime:\d+\) (re)
0s: 3 matched, 0 modified, 0 new, 0 corrupted
Check that the root path doesn't confuse us.
$ summer --parallel=1 -v verify $PWD
"/.*/empty": match \(checksum:0, mtime:\d+\) (re)
"/.*/hola": match \(checksum:916db13f, mtime:\d+\) (re)
"/.*/nueva": match \(checksum:91f3a28e, mtime:\d+\) (re)
0s: 3 matched, 0 modified, 0 new, 0 corrupted