diff --git a/tests/test-fileset-generated.t b/tests/test-fileset-generated.t new file mode 100644 --- /dev/null +++ b/tests/test-fileset-generated.t @@ -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()'