tests/test-hook.t
changeset 37754 9bbb13c0f982
parent 37753 f450a3be62ec
child 40205 89ba51c3e4f1
equal deleted inserted replaced
37753:f450a3be62ec 37754:9bbb13c0f982
     1 commit hooks can see env vars
     1 commit hooks can see env vars
     2 (and post-transaction one are run unlocked)
     2 (and post-transaction one are run unlocked)
     3 
     3 
     4 
     4 
     5   $ cat > $TESTTMP/txnabort.checkargs.py <<EOF
     5   $ cat > $TESTTMP/txnabort.checkargs.py <<EOF
       
     6   > from mercurial import pycompat
     6   > def showargs(ui, repo, hooktype, **kwargs):
     7   > def showargs(ui, repo, hooktype, **kwargs):
     7   >     ui.write('%s Python hook: %s\n' % (hooktype, ','.join(sorted(kwargs))))
     8   >     kwargs = pycompat.byteskwargs(kwargs)
       
     9   >     ui.write(b'%s Python hook: %s\n' % (hooktype,
       
    10   >                                         b','.join(sorted(kwargs))))
     8   > EOF
    11   > EOF
     9 
    12 
    10   $ hg init a
    13   $ hg init a
    11   $ cd a
    14   $ cd a
    12   $ cat > .hg/hgrc <<EOF
    15   $ cat > .hg/hgrc <<EOF
   408 
   411 
   409   $ cd "$TESTTMP/b"
   412   $ cd "$TESTTMP/b"
   410 
   413 
   411   $ cat > hooktests.py <<EOF
   414   $ cat > hooktests.py <<EOF
   412   > from __future__ import print_function
   415   > from __future__ import print_function
   413   > from mercurial import error
   416   > from mercurial import (
       
   417   >     error,
       
   418   >     pycompat,
       
   419   > )
   414   > 
   420   > 
   415   > uncallable = 0
   421   > uncallable = 0
   416   > 
   422   > 
   417   > def printargs(ui, args):
   423   > def printargs(ui, args):
   418   >     a = list(args.items())
   424   >     a = list(pycompat.byteskwargs(args).items())
   419   >     a.sort()
   425   >     a.sort()
   420   >     ui.write(b'hook args:\n')
   426   >     ui.write(b'hook args:\n')
   421   >     for k, v in a:
   427   >     for k, v in a:
   422   >        ui.write(b'  %s %s\n' % (k, v))
   428   >        ui.write(b'  %s %s\n' % (k, v))
   423   > 
   429   > 
   430   > 
   436   > 
   431   > class LocalException(Exception):
   437   > class LocalException(Exception):
   432   >     pass
   438   >     pass
   433   > 
   439   > 
   434   > def raisehook(**args):
   440   > def raisehook(**args):
   435   >     raise LocalException(b'exception from hook')
   441   >     raise LocalException('exception from hook')
   436   > 
   442   > 
   437   > def aborthook(**args):
   443   > def aborthook(**args):
   438   >     raise error.Abort(b'raise abort from hook')
   444   >     raise error.Abort(b'raise abort from hook')
   439   > 
   445   > 
   440   > def brokenhook(**args):
   446   > def brokenhook(**args):
   628   $ hg init c
   634   $ hg init c
   629   $ cd c
   635   $ cd c
   630 
   636 
   631   $ cat > hookext.py <<EOF
   637   $ cat > hookext.py <<EOF
   632   > def autohook(ui, **args):
   638   > def autohook(ui, **args):
   633   >     ui.write('Automatically installed hook\n')
   639   >     ui.write(b'Automatically installed hook\n')
   634   > 
   640   > 
   635   > def reposetup(ui, repo):
   641   > def reposetup(ui, repo):
   636   >     repo.ui.setconfig("hooks", "commit.auto", autohook)
   642   >     repo.ui.setconfig(b"hooks", b"commit.auto", autohook)
   637   > EOF
   643   > EOF
   638   $ echo '[extensions]' >> .hg/hgrc
   644   $ echo '[extensions]' >> .hg/hgrc
   639   $ echo 'hookext = hookext.py' >> .hg/hgrc
   645   $ echo 'hookext = hookext.py' >> .hg/hgrc
   640 
   646 
   641   $ touch foo
   647   $ touch foo