summaryrefslogtreecommitdiff
path: root/tests/test-revert.t
diff options
context:
space:
mode:
authorLorry <lorry@roadtrain.codethink.co.uk>2012-08-22 14:49:51 +0100
committerLorry <lorry@roadtrain.codethink.co.uk>2012-08-22 14:49:51 +0100
commita498da43c7fdb9f24b73680c02a4a3588cc62d9a (patch)
treedaf8119dae1749b5165b68033a1b23a7375ce9ce /tests/test-revert.t
downloadmercurial-tarball-a498da43c7fdb9f24b73680c02a4a3588cc62d9a.tar.gz
Tarball conversion
Diffstat (limited to 'tests/test-revert.t')
-rw-r--r--tests/test-revert.t278
1 files changed, 278 insertions, 0 deletions
diff --git a/tests/test-revert.t b/tests/test-revert.t
new file mode 100644
index 0000000..c2b085f
--- /dev/null
+++ b/tests/test-revert.t
@@ -0,0 +1,278 @@
+ $ hg init repo
+ $ cd repo
+ $ echo 123 > a
+ $ echo 123 > c
+ $ echo 123 > e
+ $ hg add a c e
+ $ hg commit -m "first" a c e
+
+nothing changed
+
+ $ hg revert
+ abort: no files or directories specified
+ (use --all to revert all files)
+ [255]
+ $ hg revert --all
+
+ $ 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: * (glob)
+
+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 334a9e57682c
+ $ touch d
+ $ hg add d
+ $ hg rm a
+ $ hg commit -m "second"
+ $ 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
+#if execbit
+ $ 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 -m exe
+
+ $ chmod -x c
+ $ hg revert --all
+ reverting c
+
+should print executable
+
+ $ test -x c && echo executable
+ executable
+#endif
+
+ $ cd ..
+
+
+Issue241: update and revert produces inconsistent repositories
+
+ $ 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 all files, or 'hg update 1' to update)
+ [255]
+
+should succeed
+
+ $ hg revert --all -rtip
+ reverting a
+
+
+Issue332: confusing message when reverting directory
+
+ $ hg ci -A -m b
+ 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 (glob)
+ forgetting newdir/newfile (glob)
+ $ echo foobar > b/b
+ $ hg revert .
+ reverting b/b (glob)
+
+
+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 (glob)
+ undeleting ignoreddir/removed (glob)
+ 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
+
+ $ cd ..