fileset: add tests of generated working copy states stable
authorMartin von Zweigbergk <martinvonz@google.com>
Wed, 21 Jan 2015 15:40:24 -0800
branchstable
changeset 23949 8efb7130a519
parent 23948 bd307b462ce2
child 23950 caff3675cba5
fileset: add tests of generated working copy states
tests/test-fileset-generated.t
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-fileset-generated.t	Wed Jan 21 15:40:24 2015 -0800
@@ -0,0 +1,163 @@
+  $ hg init
+
+Set up history and working copy
+
+  $ python $TESTDIR/generate-working-copy-states.py state 2 1
+  $ hg addremove -q --similarity 0
+  $ hg commit -m first
+
+  $ python $TESTDIR/generate-working-copy-states.py state 2 2
+  $ hg addremove -q --similarity 0
+  $ hg commit -m second
+
+  $ python $TESTDIR/generate-working-copy-states.py state 2 wc
+  $ hg addremove -q --similarity 0
+  $ hg forget *_*_*-untracked
+  $ rm *_*_missing-*
+
+Test status
+
+  $ hg st -A 'set:modified()'
+  M content1_content1_content3-tracked
+  M content1_content2_content1-tracked
+  M content1_content2_content3-tracked
+  M missing_content2_content3-tracked
+
+  $ hg st -A 'set:added()'
+  A content1_missing_content1-tracked
+  A content1_missing_content3-tracked
+  A missing_missing_content3-tracked
+
+  $ hg st -A 'set:removed()'
+  R content1_content1_content1-untracked
+  R content1_content1_content3-untracked
+  R content1_content1_missing-untracked
+  R content1_content2_content1-untracked
+  R content1_content2_content2-untracked
+  R content1_content2_content3-untracked
+  R content1_content2_missing-untracked
+  R missing_content2_content2-untracked
+  R missing_content2_content3-untracked
+  R missing_content2_missing-untracked
+
+  $ hg st -A 'set:deleted()'
+  ! content1_content1_missing-tracked
+  ! content1_content2_missing-tracked
+  ! content1_missing_missing-tracked
+  ! missing_content2_missing-tracked
+  ! missing_missing_missing-tracked
+
+  $ hg st -A 'set:unknown()'
+  ? content1_missing_content1-untracked
+  ? content1_missing_content3-untracked
+  ? missing_missing_content3-untracked
+
+  $ hg st -A 'set:clean()'
+  C content1_content1_content1-tracked
+  C content1_content2_content2-tracked
+  C missing_content2_content2-tracked
+
+Test log
+
+  $ hg log -T '{rev}\n' --stat 'set:modified()'
+  1
+   content1_content2_content1-tracked |  2 +-
+   content1_content2_content3-tracked |  2 +-
+   missing_content2_content3-tracked  |  1 +
+   3 files changed, 3 insertions(+), 2 deletions(-)
+  
+  0
+   content1_content1_content3-tracked |  1 +
+   content1_content2_content1-tracked |  1 +
+   content1_content2_content3-tracked |  1 +
+   3 files changed, 3 insertions(+), 0 deletions(-)
+  
+BROKEN: rev 0 affects content1_missing_content*-tracked
+
+  $ hg log -T '{rev}\n' --stat 'set:added()'
+  1
+   content1_missing_content1-tracked |  1 -
+   content1_missing_content3-tracked |  1 -
+   2 files changed, 0 insertions(+), 2 deletions(-)
+  
+  $ hg log -T '{rev}\n' --stat 'set:removed()'
+  1
+   content1_content2_content1-untracked |  2 +-
+   content1_content2_content2-untracked |  2 +-
+   content1_content2_content3-untracked |  2 +-
+   content1_content2_missing-untracked  |  2 +-
+   missing_content2_content2-untracked  |  1 +
+   missing_content2_content3-untracked  |  1 +
+   missing_content2_missing-untracked   |  1 +
+   7 files changed, 7 insertions(+), 4 deletions(-)
+  
+  0
+   content1_content1_content1-untracked |  1 +
+   content1_content1_content3-untracked |  1 +
+   content1_content1_missing-untracked  |  1 +
+   content1_content2_content1-untracked |  1 +
+   content1_content2_content2-untracked |  1 +
+   content1_content2_content3-untracked |  1 +
+   content1_content2_missing-untracked  |  1 +
+   7 files changed, 7 insertions(+), 0 deletions(-)
+
+BROKEN: rev 0 affects content1_content1_missing-tracked,
+content1_content2_missing-tracked and content1_missing_missing-tracked.
+rev 1 affects content1_content2_missing-tracked,
+content1_missing_missing-tracked and missing_content2_missing-tracked
+
+  $ hg log -T '{rev}\n' --stat 'set:deleted()'
+
+BROKEN: rev 0 and 1 affect content1_missing_content*-untracked
+
+  $ hg log -T '{rev}\n' --stat 'set:unknown()'
+
+BROKEN: rev 1 affects content1_content2_content2-tracked and
+missing_content2_content2-tracked
+
+  $ hg log -T '{rev}\n' --stat 'set:clean()'
+  0
+   content1_content1_content1-tracked |  1 +
+   content1_content2_content2-tracked |  1 +
+   2 files changed, 2 insertions(+), 0 deletions(-)
+  
+Test revert
+
+BROKEN: the files that get undeleted were not modified, they were removed,
+and content1_content2_missing-tracked was also not modified, it was deleted
+
+  $ hg revert 'set:modified()'
+  reverting content1_content1_content3-tracked
+  reverting content1_content2_content1-tracked
+  undeleting content1_content2_content1-untracked
+  undeleting content1_content2_content2-untracked
+  reverting content1_content2_content3-tracked
+  undeleting content1_content2_content3-untracked
+  reverting content1_content2_missing-tracked
+  undeleting content1_content2_missing-untracked
+  reverting missing_content2_content3-tracked
+
+BROKEN: only the files that get forgotten are correct
+
+  $ hg revert 'set:added()'
+  forgetting content1_missing_content1-tracked
+  forgetting content1_missing_content3-tracked
+  undeleting missing_content2_content2-untracked
+  undeleting missing_content2_content3-untracked
+  reverting missing_content2_missing-tracked
+  undeleting missing_content2_missing-untracked
+  forgetting missing_missing_content3-tracked
+
+  $ hg revert 'set:removed()'
+  undeleting content1_content1_content1-untracked
+  undeleting content1_content1_content3-untracked
+  undeleting content1_content1_missing-untracked
+
+  $ hg revert 'set:deleted()'
+  reverting content1_content1_missing-tracked
+  forgetting content1_missing_missing-tracked
+  forgetting missing_missing_missing-tracked
+
+  $ hg revert 'set:unknown()'
+
+  $ hg revert 'set:clean()'