tests/test-revert.t
changeset 12106 969176bec217
parent 6110 81e20e01d465
child 12156 4c94b6d0fb1c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-revert.t	Mon Aug 30 13:32:37 2010 +0900
@@ -0,0 +1,263 @@
+  $ hg init repo
+  $ cd repo
+  $ echo 123 > a
+  $ echo 123 > c
+  $ echo 123 > e
+  $ hg add a c e
+  $ hg commit -m "first" -d "1000000 0" a c e
+  $ echo 123 > b
+
+should show b unknown
+
+  $ hg status
+  ? b
+  $ echo 12 > c
+
+should show b unknown and c modified
+
+  $ hg status
+  M c
+  ? b
+  $ hg add b
+
+should show b added and c modified
+
+  $ hg status
+  M c
+  A b
+  $ hg rm a
+
+should show a removed, b added and c modified
+
+  $ hg status
+  M c
+  A b
+  R a
+  $ hg revert a
+
+should show b added, copy saved, and c modified
+
+  $ hg status
+  M c
+  A b
+  $ hg revert b
+
+should show b unknown, and c modified
+
+  $ hg status
+  M c
+  ? b
+  $ hg revert --no-backup c
+
+should show unknown: b
+
+  $ hg status
+  ? b
+  $ hg add b
+
+should show b added
+
+  $ hg status b
+  A b
+  $ rm b
+
+should show b deleted
+
+  $ hg status b
+  ! b
+  $ hg revert -v b
+  forgetting b
+
+should not find b
+
+  $ hg status b
+  b: No such file or directory
+
+should show a c e
+
+  $ ls
+  a
+  c
+  e
+
+should verbosely save backup to e.orig
+
+  $ echo z > e
+  $ hg revert --all -v
+  saving current version of e as e.orig
+  reverting e
+
+should say no changes needed
+
+  $ hg revert a
+  no changes needed to a
+
+should say file not managed
+
+  $ echo q > q
+  $ hg revert q
+  file not managed: q
+  $ rm q
+
+should say file not found
+
+  $ hg revert notfound
+  notfound: no such file in rev 095eacd0c0d7
+  $ touch d
+  $ hg add d
+  $ hg rm a
+  $ hg commit -m "second" -d "1000000 0"
+  $ echo z > z
+  $ hg add z
+  $ hg st
+  A z
+  ? e.orig
+
+should add a, remove d, forget z
+
+  $ hg revert --all -r0
+  adding a
+  removing d
+  forgetting z
+
+should forget a, undelete d
+
+  $ hg revert --all -rtip
+  forgetting a
+  undeleting d
+  $ rm a *.orig
+
+should silently add a
+
+  $ hg revert -r0 a
+  $ hg st a
+  A a
+  $ hg rm d
+  $ hg st d
+  R d
+
+should silently keep d removed
+
+  $ hg revert -r0 d
+  $ hg st d
+  R d
+
+  $ hg update -C
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ chmod +x c
+  $ hg revert --all
+  reverting c
+
+should print non-executable
+
+  $ test -x c || echo non-executable
+  non-executable
+
+  $ chmod +x c
+  $ hg commit -d '1000001 0' -m exe
+
+  $ chmod -x c
+  $ hg revert --all
+  reverting c
+
+should print executable
+
+  $ test -x c && echo executable
+  executable
+
+  $ cd ..
+
+
+issue 241
+
+  $ hg init a
+  $ cd a
+  $ echo a >> a
+  $ hg commit -A -d '1 0' -m a
+  adding a
+  $ echo a >> a
+  $ hg commit -d '2 0' -m a
+  $ hg update 0
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ mkdir b
+  $ echo b > b/b
+
+should fail - no arguments
+
+  $ hg revert -rtip
+  abort: no files or directories specified; use --all to revert the whole repo
+
+should succeed
+
+  $ hg revert --all -rtip
+  reverting a
+
+
+issue332
+
+  $ hg ci -A -m b -d '1000001 0'
+  adding b/b
+  created new head
+  $ echo foobar > b/b
+  $ mkdir newdir
+  $ echo foo > newdir/newfile
+  $ hg add newdir/newfile
+  $ hg revert b newdir
+  reverting b/b
+  forgetting newdir/newfile
+  $ echo foobar > b/b
+  $ hg revert .
+  reverting b/b
+
+
+reverting a rename target should revert the source
+
+  $ hg mv a newa
+  $ hg revert newa
+  $ hg st a newa
+  ? newa
+
+  $ cd ..
+
+  $ hg init ignored
+  $ cd ignored
+  $ echo '^ignored$' > .hgignore
+  $ echo '^ignoreddir$' >> .hgignore
+  $ echo '^removed$' >> .hgignore
+
+  $ mkdir ignoreddir
+  $ touch ignoreddir/file
+  $ touch ignoreddir/removed
+  $ touch ignored
+  $ touch removed
+
+4 ignored files (we will add/commit everything)
+
+  $ hg st -A -X .hgignore
+  I ignored
+  I ignoreddir/file
+  I ignoreddir/removed
+  I removed
+  $ hg ci -qAm 'add files' ignored ignoreddir/file ignoreddir/removed removed
+
+  $ echo >> ignored
+  $ echo >> ignoreddir/file
+  $ hg rm removed ignoreddir/removed
+
+should revert ignored* and undelete *removed
+
+  $ hg revert -a --no-backup
+  reverting ignored
+  reverting ignoreddir/file
+  undeleting ignoreddir/removed
+  undeleting removed
+  $ hg st -mardi
+
+  $ hg up -qC
+  $ echo >> ignored
+  $ hg rm removed
+
+should silently revert the named files
+
+  $ hg revert --no-backup ignored removed
+  $ hg st -mardi