tests/test-githelp.t
changeset 35714 113281667205
child 35715 8dbd000f7de9
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-githelp.t	Mon Dec 18 20:44:59 2017 -0800
@@ -0,0 +1,258 @@
+  $ cat >> $HGRCPATH << EOF
+  > [extensions]
+  > githelp =
+  > EOF
+
+  $ hg init repo
+  $ cd repo
+  $ echo foo > test_file
+  $ mkdir dir
+  $ echo foo > dir/file
+  $ echo foo > removed_file
+  $ echo foo > deleted_file
+  $ hg add -q .
+  $ hg commit -m 'bar'
+  $ hg bookmark both
+  $ touch both
+  $ touch untracked_file
+  $ hg remove removed_file
+  $ rm deleted_file
+
+githelp on a single command should succeed
+  $ hg githelp -- commit
+  hg commit
+  $ hg githelp -- git commit
+  hg commit
+
+githelp should fail nicely if we don't give it arguments
+  $ hg githelp
+  abort: missing git command - usage: hg githelp -- <git command>
+  [255]
+  $ hg githelp -- git
+  abort: missing git command - usage: hg githelp -- <git command>
+  [255]
+
+githelp on a command with options should succeed
+  $ hg githelp -- commit -pm "abc"
+  hg record -m 'abc'
+
+githelp on a command with standalone unrecognized option should succeed with warning
+  $ hg githelp -- commit -p -v
+  ignoring unknown option -v
+  hg record
+
+githelp on a command with unrecognized option packed with other options should fail with error
+  $ hg githelp -- commit -pv
+  abort: unknown option v packed with other options
+  Please try passing the option as it's own flag: -v
+  [255]
+
+githelp for git rebase --skip
+  $ hg githelp -- git rebase --skip
+  hg revert --all -r .
+  hg rebase --continue
+
+githelp for git commit --amend (hg commit --amend pulls up an editor)
+  $ hg githelp -- commit --amend
+  hg commit --amend
+
+githelp for git commit --amend --no-edit (hg amend does not pull up an editor)
+  $ hg githelp -- commit --amend --no-edit
+  hg amend
+
+githelp for git checkout -- . (checking out a directory)
+  $ hg githelp -- checkout -- .
+  note: use --no-backup to avoid creating .orig files
+  
+  hg revert .
+
+githelp for git checkout "HEAD^" (should still work to pass a rev)
+  $ hg githelp -- checkout "HEAD^"
+  hg update .^
+
+githelp checkout: args after -- should be treated as paths no matter what
+  $ hg githelp -- checkout -- HEAD
+  note: use --no-backup to avoid creating .orig files
+  
+  hg revert HEAD
+
+githelp for git checkout with rev and path
+  $ hg githelp -- checkout "HEAD^" -- file.txt
+  note: use --no-backup to avoid creating .orig files
+  
+  hg revert -r .^ file.txt
+
+githelp for git with rev and path, without separator
+  $ hg githelp -- checkout "HEAD^" file.txt
+  note: use --no-backup to avoid creating .orig files
+  
+  hg revert -r .^ file.txt
+
+githelp for checkout with a file as first argument
+  $ hg githelp -- checkout test_file
+  note: use --no-backup to avoid creating .orig files
+  
+  hg revert test_file
+
+githelp for checkout with a removed file as first argument
+  $ hg githelp -- checkout removed_file
+  note: use --no-backup to avoid creating .orig files
+  
+  hg revert removed_file
+
+githelp for checkout with a deleted file as first argument
+  $ hg githelp -- checkout deleted_file
+  note: use --no-backup to avoid creating .orig files
+  
+  hg revert deleted_file
+
+githelp for checkout with a untracked file as first argument
+  $ hg githelp -- checkout untracked_file
+  note: use --no-backup to avoid creating .orig files
+  
+  hg revert untracked_file
+
+githelp for checkout with a directory as first argument
+  $ hg githelp -- checkout dir
+  note: use --no-backup to avoid creating .orig files
+  
+  hg revert dir
+
+githelp for checkout when not in repo root
+  $ cd dir
+  $ hg githelp -- checkout file
+  note: use --no-backup to avoid creating .orig files
+  
+  hg revert file
+
+  $ cd ..
+
+githelp for checkout with an argument that is both a file and a revision
+  $ hg githelp -- checkout both
+  hg update both
+
+githelp for checkout with the -p option
+  $ hg githelp -- git checkout -p xyz
+  hg revert -i -r xyz
+
+  $ hg githelp -- git checkout -p xyz -- abc
+  note: use --no-backup to avoid creating .orig files
+  
+  hg revert -i -r xyz abc
+
+githelp for checkout with the -f option and a rev
+  $ hg githelp -- git checkout -f xyz
+  hg update -C xyz
+  $ hg githelp -- git checkout --force xyz
+  hg update -C xyz
+
+githelp for checkout with the -f option without an arg
+  $ hg githelp -- git checkout -f
+  hg revert --all
+  $ hg githelp -- git checkout --force
+  hg revert --all
+
+githelp for grep with pattern and path
+  $ hg githelp -- grep shrubbery flib/intern/
+  hg grep shrubbery flib/intern/
+
+githelp for reset, checking ~ in git becomes ~1 in mercurial
+  $ hg githelp -- reset HEAD~
+  hg reset .~1
+  $ hg githelp -- reset "HEAD^"
+  hg reset .^
+  $ hg githelp -- reset HEAD~3
+  hg reset .~3
+
+githelp for git show --name-status
+  $ hg githelp -- git show --name-status
+  hg log --style status -r tip
+
+githelp for git show --pretty=format: --name-status
+  $ hg githelp -- git show --pretty=format: --name-status
+  hg stat --change tip
+
+githelp for show with no arguments
+  $ hg githelp -- show
+  hg show
+
+githelp for show with a path
+  $ hg githelp -- show test_file
+  hg show . test_file
+
+githelp for show with not a path:
+  $ hg githelp -- show rev
+  hg show rev
+
+githelp for show with many arguments
+  $ hg githelp -- show argone argtwo
+  hg show argone argtwo
+  $ hg githelp -- show test_file argone argtwo
+  hg show . test_file argone argtwo
+
+githelp for show with --unified options
+  $ hg githelp -- show --unified=10
+  hg show --config diff.unified=10
+  $ hg githelp -- show -U100
+  hg show --config diff.unified=100
+
+githelp for show with a path and --unified
+  $ hg githelp -- show -U20 test_file
+  hg show . test_file --config diff.unified=20
+
+githelp for stash drop without name
+  $ hg githelp -- git stash drop
+  hg shelve -d <shelve name>
+
+githelp for stash drop with name
+  $ hg githelp -- git stash drop xyz
+  hg shelve -d xyz
+
+githelp for whatchanged should show deprecated message
+  $ hg githelp -- whatchanged -p
+  This command has been deprecated in the git project, thus isn't supported by this tool.
+  
+
+githelp for git branch -m renaming
+  $ hg githelp -- git branch -m old new
+  hg bookmark -m old new
+
+When the old name is omitted, git branch -m new renames the current branch.
+  $ hg githelp -- git branch -m new
+  hg bookmark -m `hg log -T"{activebookmark}" -r .` new
+
+Branch deletion in git strips commits
+  $ hg githelp -- git branch -d
+  hg strip -B
+  $ hg githelp -- git branch -d feature
+  hg strip -B feature -B
+  $ hg githelp -- git branch --delete experiment1 experiment2
+  hg strip -B experiment1 -B experiment2 -B
+
+githelp for reuse message using the shorthand
+  $ hg githelp -- git commit -C deadbeef
+  hg commit -M deadbeef
+
+githelp for reuse message using the the long version
+  $ hg githelp -- git commit --reuse-message deadbeef
+  hg commit -M deadbeef
+
+githelp for apply with no options
+  $ hg githelp -- apply
+  hg import --no-commit
+
+githelp for apply with directory strip custom
+  $ hg githelp -- apply -p 5
+  hg import --no-commit -p 5
+
+git merge-base
+  $ hg githelp -- git merge-base --is-ancestor
+  ignoring unknown option --is-ancestor
+  NOTE: ancestors() is part of the revset language.
+  Learn more about revsets with 'hg help revsets'
+  
+  hg log -T '{node}\n' -r 'ancestor(A,B)'
+
+githelp for git blame
+  $ hg githelp -- git blame
+  hg annotate -udl