--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-status-rev.t Sun Oct 12 22:23:43 2014 -0700
@@ -0,0 +1,156 @@
+Tests of 'hg status --rev <rev>' to make sure status between <rev> and '.' get
+combined correctly with the dirstate status.
+
+Sets up a history for a number of files where the filename describes the file's
+history. The first two letters of the filename describe the first two commits;
+the third letter describes the dirstate for the file. For example, a file called
+'amr' was added in the first commit, modified in the second and then removed in
+the dirstate.
+
+These codes are used for commits:
+x: does not exist
+a: added
+c: clean
+m: modified
+r: removed
+
+These codes are used for dirstate:
+d: in dirstate, but deleted from disk
+f: removed from dirstate, but file exists (forgotten)
+r: removed from dirstate and disk
+q: added, but deleted from disk (q for q-rious?)
+u: not in dirstate, but file exists (unknown)
+
+ $ hg init
+ $ touch .hgignore
+ $ hg add .hgignore
+ $ hg commit -m initial
+
+First letter: first commit
+
+ $ echo a >acc
+ $ echo a >acd
+ $ echo a >acf
+ $ echo a >acm
+ $ echo a >acr
+ $ echo a >amc
+ $ echo a >amd
+ $ echo a >amf
+ $ echo a >amm
+ $ echo a >amr
+ $ echo a >ara
+ $ echo a >arq
+ $ echo a >aru
+ $ hg commit -Aqm first
+
+Second letter: second commit
+
+ $ echo b >xad
+ $ echo b >xaf
+ $ echo b >xam
+ $ echo b >xar
+ $ echo b >amc
+ $ echo b >amd
+ $ echo b >amf
+ $ echo b >amm
+ $ echo b >amr
+ $ hg rm ara
+ $ hg rm arq
+ $ hg rm aru
+ $ hg commit -Aqm second
+
+Third letter: dirstate
+
+ $ echo c >acm
+ $ echo c >amm
+ $ echo c >xam
+ $ echo c >ara && hg add ara
+ $ echo c >arq && hg add arq && rm arq
+ $ echo c >aru
+ $ hg rm amr
+ $ hg rm acr
+ $ hg rm xar
+ $ rm acd
+ $ rm amd
+ $ rm xad
+ $ hg forget acf
+ $ hg forget amf
+ $ hg forget xaf
+ $ touch xxu
+
+Status compared to one revision back
+
+ $ hg status -A --rev 1 acc
+ C acc
+BROKEN: file appears twice; should be '!'
+ $ hg status -A --rev 1 acd
+ ! acd
+ C acd
+ $ hg status -A --rev 1 acf
+ R acf
+ $ hg status -A --rev 1 acm
+ M acm
+ $ hg status -A --rev 1 acr
+ R acr
+ $ hg status -A --rev 1 amc
+ M amc
+BROKEN: file appears twice; should be '!'
+ $ hg status -A --rev 1 amd
+ ! amd
+ C amd
+ $ hg status -A --rev 1 amf
+ R amf
+ $ hg status -A --rev 1 amm
+ M amm
+ $ hg status -A --rev 1 amr
+ R amr
+ $ hg status -A --rev 1 ara
+ M ara
+BROKEN: file appears twice; should be '!'
+ $ hg status -A --rev 1 arq
+ R arq
+ ! arq
+ $ hg status -A --rev 1 aru
+ R aru
+ $ hg status -A --rev 1 xad
+ ! xad
+ $ hg status -A --rev 1 xaf
+ $ hg status -A --rev 1 xam
+ A xam
+ $ hg status -A --rev 1 xar
+ $ hg status -A --rev 1 xxu
+ ? xxu
+
+Status compared to two revisions back
+
+ $ hg status -A --rev 0 acc
+ A acc
+ $ hg status -A --rev 0 acd
+ ! acd
+BROKEN: file exists, so should be listed (as '?')
+ $ hg status -A --rev 0 acf
+ $ hg status -A --rev 0 acm
+ A acm
+ $ hg status -A --rev 0 acr
+ $ hg status -A --rev 0 amc
+ A amc
+ $ hg status -A --rev 0 amd
+ ! amd
+BROKEN: file exists, so should be listed (as '?')
+ $ hg status -A --rev 0 amf
+ $ hg status -A --rev 0 amm
+ A amm
+ $ hg status -A --rev 0 amr
+ $ hg status -A --rev 0 ara
+ A ara
+ $ hg status -A --rev 0 arq
+ ! arq
+ $ hg status -A --rev 0 aru
+ ? aru
+ $ hg status -A --rev 0 xad
+ ! xad
+BROKEN: file exists, so should be listed (as '?')
+ $ hg status -A --rev 0 xaf
+ $ hg status -A --rev 0 xam
+ A xam
+ $ hg status -A --rev 0 xar