diff --git a/tests/test-status-rev.t b/tests/test-status-rev.t new file mode 100644 --- /dev/null +++ b/tests/test-status-rev.t @@ -0,0 +1,156 @@ +Tests of 'hg status --rev ' to make sure status between 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 diff --git a/tests/test-status.t b/tests/test-status.t --- a/tests/test-status.t +++ b/tests/test-status.t @@ -322,19 +322,6 @@ hg status -A --change 1 and revset: R removed C deleted -status against non-parent with unknown file (issue4321) - - $ touch unknown - $ hg status --rev 0 unknown - ? unknown - -status of removed but existing in working directory. "? removed" should -not be included: - - $ touch removed - $ hg status --rev 0 removed - R removed - $ cd .. hg status of binary file starting with '\1\n', a separator for metadata: