diff tests/test-tools.t @ 23860:bead0c7b4f68

tests: add 'f' tool for cross platform file operations in the tests This tool is like the collection of tools found in a unix environment but are cross platform and stable and suitable for our needs in the test suite. The main reason it is "needed" now is for hexdump of revision branch cache to keep an eye on how it changes and make sure the format is stable. It is a very generic tool that can end up being used a lot in tests, so I gave it very generic name.
author Mads Kiilerich <madski@unity3d.com>
date Wed, 14 Jan 2015 01:15:26 +0100
parents
children 049a9e3a078d
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-tools.t	Wed Jan 14 01:15:26 2015 +0100
@@ -0,0 +1,87 @@
+Tests of the file helper tool
+
+  $ f -h
+  Usage: f [options] [filenames]
+  
+  Options:
+    -h, --help            show this help message and exit
+    -t, --type            show file type (file or directory)
+    -m, --mode            show file mode
+    -l, --links           show number of links
+    -s, --size            show size of file
+    -n NEWER, --newer=NEWER
+                          check if file is newer (or same)
+    -r, --recurse         recurse into directories
+    -S, --sha1            show sha1 hash of the content
+    -M, --md5             show md5 hash of the content
+    -D, --dump            dump file content
+    -H, --hexdump         hexdump file content
+    -B BYTES, --bytes=BYTES
+                          number of characters to dump
+    -L LINES, --lines=LINES
+                          number of lines to dump
+    -q, --quiet           no default output
+
+  $ mkdir dir
+  $ cd dir
+
+  $ f --size
+  size=0
+
+  $ echo hello | f --md5 --size
+  size=6, md5=b1946ac92492d2347c6235b4d2611184
+
+  $ f foo
+  foo: file not found
+
+  $ echo foo > foo
+  $ f foo
+  foo:
+
+  $ f foo --mode
+  foo: mode=644
+
+  $ seq 10 > bar
+  $ chmod +x bar
+  $ f bar --newer foo --mode --type --size --dump --links --bytes 7
+  bar: file, size=21, mode=755, links=1, newer than foo
+  >>>
+  1
+  2
+  3
+  4
+  <<< no trailing newline
+
+  $ ln bar baz
+  $ f bar -n baz -l --hexdump -t --sha1 --lines=9 -B 20
+  bar: file, links=2, newer than baz, sha1=612ca68d0305c821750a
+  0000: 31 0a 32 0a 33 0a 34 0a 35 0a 36 0a 37 0a 38 0a |1.2.3.4.5.6.7.8.|
+  0010: 39 0a                                           |9.|
+
+  $ ln -s yadda l
+  $ f . --recurse -MStmsB4
+  .: directory with 4 files, size=120, mode=755
+  ./bar: file, size=21, mode=755, md5=3b03, sha1=612c
+  ./baz: file, size=21, mode=755, md5=3b03, sha1=612c
+  ./foo: file, size=4, mode=644, md5=d3b0, sha1=f1d2
+  ./l: link, size=5, mode=777, md5=2faa, sha1=af93
+
+  $ f --quiet bar -DL 3
+  1
+  2
+  3
+
+  $ cd ..
+
+  $ f -qr dir -HB 17
+  dir: directory with 4 files
+  dir/bar:
+  0000: 31 0a 32 0a 33 0a 34 0a 35 0a 36 0a 37 0a 38 0a |1.2.3.4.5.6.7.8.|
+  0010: 39                                              |9|
+  dir/baz:
+  0000: 31 0a 32 0a 33 0a 34 0a 35 0a 36 0a 37 0a 38 0a |1.2.3.4.5.6.7.8.|
+  0010: 39                                              |9|
+  dir/foo:
+  0000: 66 6f 6f 0a                                     |foo.|
+  dir/l:
+  0000: 79 61 64 64 61                                  |yadda|