tests/test-status-rev.t
changeset 23037 eeaed3d2b004
child 23196 daa73289dd2a
--- /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