annotate tests/test-tools.t @ 25774:4f8c20fe66f0

shelve: keep old backups if timestamp can't decide exact order of them Before this patch, backups to be discarded are decided by steps below at 'hg unshelve' or so: 1. list '(st_mtime, filename)' tuples of each backups up 2. sort list of these tuples, and 3. discard backups other than 'maxbackups' ones at the end of list This doesn't work well in the case below: - "sort by name" order differs from actual backup-ing order, and - some of backups have same timestamp For example, 'test-shelve.t' satisfies the former condition: - 'default-01' < 'default-1' in "sort by name" order - 'default-1' < 'default-01' in actual backup-ing order Then, 'default-01' is discarded instead of 'default-1' unexpectedly, if they have same timestamp. This failure appears occasionally, because the most important condition "same timestamp" is timing critical. To avoid such unexpected discarding, this patch keeps old backups if timestamp can't decide exact order of them. Timestamp of the border backup (= the oldest one of recent 'maxbackups' ones) as 'bordermtime' is used to examine whether timestamp can decide exact order of backups.
author FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
date Mon, 13 Jul 2015 23:34:12 +0900
parents 8de8cd34f2e3
children 6686ae524f94
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
23860
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
1 Tests of the file helper tool
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
2
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
3 $ f -h
23909
0760f023a34b test-tools: fix portability issues
Matt Mackall <mpm@selenic.com>
parents: 23867
diff changeset
4 ?sage: f [options] [filenames] (glob)
23860
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
5
23913
bc59ff031700 tests: more fixes for f
Matt Mackall <mpm@selenic.com>
parents: 23912
diff changeset
6 ?ptions: (glob)
23860
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
7 -h, --help show this help message and exit
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
8 -t, --type show file type (file or directory)
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
9 -m, --mode show file mode
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
10 -l, --links show number of links
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
11 -s, --size show size of file
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
12 -n NEWER, --newer=NEWER
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
13 check if file is newer (or same)
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
14 -r, --recurse recurse into directories
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
15 -S, --sha1 show sha1 hash of the content
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
16 -M, --md5 show md5 hash of the content
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
17 -D, --dump dump file content
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
18 -H, --hexdump hexdump file content
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
19 -B BYTES, --bytes=BYTES
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
20 number of characters to dump
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
21 -L LINES, --lines=LINES
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
22 number of lines to dump
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
23 -q, --quiet no default output
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
24
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
25 $ mkdir dir
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
26 $ cd dir
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
27
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
28 $ f --size
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
29 size=0
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
30
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
31 $ echo hello | f --md5 --size
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
32 size=6, md5=b1946ac92492d2347c6235b4d2611184
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
33
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
34 $ f foo
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
35 foo: file not found
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
36
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
37 $ echo foo > foo
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
38 $ f foo
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
39 foo:
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
40
23867
049a9e3a078d tests: conditionalize test-tools.t for Windows support
Matt Harbison <matt_harbison@yahoo.com>
parents: 23860
diff changeset
41 #if symlink
23860
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
42 $ f foo --mode
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
43 foo: mode=644
23867
049a9e3a078d tests: conditionalize test-tools.t for Windows support
Matt Harbison <matt_harbison@yahoo.com>
parents: 23860
diff changeset
44 #endif
23860
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
45
24361
8de8cd34f2e3 tests: replace uses of 'seq' with portable 'seq.py'
Matt Harbison <matt_harbison@yahoo.com>
parents: 23957
diff changeset
46 $ python $TESTDIR/seq.py 10 > bar
23867
049a9e3a078d tests: conditionalize test-tools.t for Windows support
Matt Harbison <matt_harbison@yahoo.com>
parents: 23860
diff changeset
47 #if unix-permissions symlink
23860
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
48 $ chmod +x bar
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
49 $ f bar --newer foo --mode --type --size --dump --links --bytes 7
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
50 bar: file, size=21, mode=755, links=1, newer than foo
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
51 >>>
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
52 1
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
53 2
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
54 3
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
55 4
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
56 <<< no trailing newline
23867
049a9e3a078d tests: conditionalize test-tools.t for Windows support
Matt Harbison <matt_harbison@yahoo.com>
parents: 23860
diff changeset
57 #endif
23860
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
58
23914
a2396b0fd608 test-tools: check for unix permissions for hardlinking
Matt Mackall <mpm@selenic.com>
parents: 23913
diff changeset
59 #if unix-permissions
23860
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
60 $ ln bar baz
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
61 $ f bar -n baz -l --hexdump -t --sha1 --lines=9 -B 20
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
62 bar: file, links=2, newer than baz, sha1=612ca68d0305c821750a
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
63 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.|
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
64 0010: 39 0a |9.|
23915
5b20e4c32117 test-tools: another vfat fix
Matt Mackall <mpm@selenic.com>
parents: 23914
diff changeset
65 $ rm baz
23914
a2396b0fd608 test-tools: check for unix permissions for hardlinking
Matt Mackall <mpm@selenic.com>
parents: 23913
diff changeset
66 #endif
23860
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
67
23867
049a9e3a078d tests: conditionalize test-tools.t for Windows support
Matt Harbison <matt_harbison@yahoo.com>
parents: 23860
diff changeset
68 #if unix-permissions symlink
23860
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
69 $ ln -s yadda l
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
70 $ f . --recurse -MStmsB4
23915
5b20e4c32117 test-tools: another vfat fix
Matt Mackall <mpm@selenic.com>
parents: 23914
diff changeset
71 .: directory with 3 files, mode=755
23860
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
72 ./bar: file, size=21, mode=755, md5=3b03, sha1=612c
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
73 ./foo: file, size=4, mode=644, md5=d3b0, sha1=f1d2
23912
7d0aa6269ece tests: teach f not to report symlink mode bits
Matt Mackall <mpm@selenic.com>
parents: 23911
diff changeset
74 ./l: link, size=5, md5=2faa, sha1=af93
23867
049a9e3a078d tests: conditionalize test-tools.t for Windows support
Matt Harbison <matt_harbison@yahoo.com>
parents: 23860
diff changeset
75 #endif
23860
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
76
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
77 $ f --quiet bar -DL 3
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
78 1
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
79 2
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
80 3
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
81
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
82 $ cd ..
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
83
23867
049a9e3a078d tests: conditionalize test-tools.t for Windows support
Matt Harbison <matt_harbison@yahoo.com>
parents: 23860
diff changeset
84 Yadda is a symlink
049a9e3a078d tests: conditionalize test-tools.t for Windows support
Matt Harbison <matt_harbison@yahoo.com>
parents: 23860
diff changeset
85 #if symlink
23860
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
86 $ f -qr dir -HB 17
23915
5b20e4c32117 test-tools: another vfat fix
Matt Mackall <mpm@selenic.com>
parents: 23914
diff changeset
87 dir: directory with 3 files
23860
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
88 dir/bar:
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
89 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.|
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
90 0010: 39 |9|
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
91 dir/foo:
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
92 0000: 66 6f 6f 0a |foo.|
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
93 dir/l:
bead0c7b4f68 tests: add 'f' tool for cross platform file operations in the tests
Mads Kiilerich <madski@unity3d.com>
parents:
diff changeset
94 0000: 79 61 64 64 61 |yadda|
23867
049a9e3a078d tests: conditionalize test-tools.t for Windows support
Matt Harbison <matt_harbison@yahoo.com>
parents: 23860
diff changeset
95 #else
049a9e3a078d tests: conditionalize test-tools.t for Windows support
Matt Harbison <matt_harbison@yahoo.com>
parents: 23860
diff changeset
96 $ f -qr dir -HB 17
23957
0c4419faacbc test-tools: portability tweak
Matt Mackall <mpm@selenic.com>
parents: 23922
diff changeset
97 dir: directory with 2 files (esc)
23867
049a9e3a078d tests: conditionalize test-tools.t for Windows support
Matt Harbison <matt_harbison@yahoo.com>
parents: 23860
diff changeset
98 dir/bar: (glob)
049a9e3a078d tests: conditionalize test-tools.t for Windows support
Matt Harbison <matt_harbison@yahoo.com>
parents: 23860
diff changeset
99 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.|
049a9e3a078d tests: conditionalize test-tools.t for Windows support
Matt Harbison <matt_harbison@yahoo.com>
parents: 23860
diff changeset
100 0010: 39 |9|
049a9e3a078d tests: conditionalize test-tools.t for Windows support
Matt Harbison <matt_harbison@yahoo.com>
parents: 23860
diff changeset
101 dir/foo: (glob)
049a9e3a078d tests: conditionalize test-tools.t for Windows support
Matt Harbison <matt_harbison@yahoo.com>
parents: 23860
diff changeset
102 0000: 66 6f 6f 0a |foo.|
049a9e3a078d tests: conditionalize test-tools.t for Windows support
Matt Harbison <matt_harbison@yahoo.com>
parents: 23860
diff changeset
103 #endif
049a9e3a078d tests: conditionalize test-tools.t for Windows support
Matt Harbison <matt_harbison@yahoo.com>
parents: 23860
diff changeset
104