tests/test-pending.t
author FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
Thu, 19 Apr 2012 20:54:56 +0900
branchstable
changeset 16469 dd68c972d089
parent 16107 a3dcc59054ca
child 16975 921458360270
permissions -rw-r--r--
i18n: show localized messages for commands/extensions in hgweb help top (issue3383) in hgweb help top page, help topics are localized, but abstracts of commands and extensions are not, although these are already translated. it is because localized messages for them should be explicitly looked up by original ones. this patch looks localized messages up for each commands/extensions.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
15519
bb9ad375b51c tests: add 'hghave system-sh' to skip tests on windows
Mads Kiilerich <mads@kiilerich.com>
parents: 13237
diff changeset
     1
  $ "$TESTDIR/hghave" system-sh || exit 80
bb9ad375b51c tests: add 'hghave system-sh' to skip tests on windows
Mads Kiilerich <mads@kiilerich.com>
parents: 13237
diff changeset
     2
13237
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
     3
Verify that pending changesets are seen by pretxn* hooks but not by other
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
     4
processes that access the destination repo while the hooks are running.
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
     5
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
     6
The hooks (python and external) both reject changesets after some think time,
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
     7
during which another process runs pull.  Each hook creates a file ('notify') to
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
     8
indicate to the controlling process that it is running; the process removes the
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
     9
file to indicate the hook can terminate.
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    10
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    11
init env vars
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    12
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    13
  $ d=`pwd`
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    14
  $ maxwait=20
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    15
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    16
utility to run the test - start a push in the background and run pull
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    17
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    18
  $ dotest() {
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    19
  >     rm -f notify
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    20
  >     printf 'push '; hg -R child-push tip --template '{node}\n'
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    21
  >     hg -R child-push -q push > push.out 2>&1 &
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    22
  > 
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    23
  >     # wait for hook to create the notify file
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    24
  >     i=$maxwait
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    25
  >     while [ ! -f notify -a $i != 0 ]; do
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    26
  >         sleep 1
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    27
  >         i=`expr $i - 1`
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    28
  >     done
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    29
  > 
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    30
  >     # run pull
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    31
  >     hg -R child-pull -q pull
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    32
  >     rc=$?
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    33
  > 
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    34
  >     # tell hook to finish; notify should exist.
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    35
  >     rm notify
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    36
  >     wait
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    37
  > 
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    38
  >     cat push.out
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    39
  >     printf 'pull '; hg -R child-pull tip --template '{node}\n'
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    40
  >     return $rc
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    41
  > }
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    42
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    43
python hook
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    44
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    45
  $ cat <<EOF > reject.py
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    46
  > import os, time
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    47
  > from mercurial import ui, localrepo
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    48
  > def rejecthook(ui, repo, hooktype, node, **opts):
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    49
  >     ui.write('hook %s\\n' % repo['tip'].hex())
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    50
  >     # create the notify file so caller knows we're running
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    51
  >     fpath = os.path.join('$d', 'notify')
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    52
  >     f = open(fpath, 'w')
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    53
  >     f.close()
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    54
  >     # wait for ack - caller should delete the notify file
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    55
  >     i = $maxwait
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    56
  >     while os.path.exists(fpath) and i > 0:
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    57
  >         time.sleep(1)
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    58
  >         i -= 1
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    59
  >     return True # reject the changesets
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    60
  > EOF
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    61
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    62
external hook
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    63
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    64
  $ cat <<EOF > reject.sh
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    65
  > #! /bin/sh
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    66
  > printf 'hook '; hg tip --template '{node}\\n'
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    67
  > # create the notify file so caller knows we're running
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    68
  > fpath=$d/notify
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    69
  > touch \$fpath
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    70
  > # wait for ack - caller should delete the notify file
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    71
  > i=$maxwait
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    72
  > while [ -f \$fpath -a \$i != 0 ]; do
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    73
  >     sleep 1
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    74
  >     i=\`expr \$i - 1\`
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    75
  > done
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    76
  > exit 1 # reject the changesets
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    77
  > EOF
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    78
  $ chmod +x reject.sh
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    79
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    80
create repos
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    81
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    82
  $ hg init parent
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    83
  $ hg clone -q parent child-push
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    84
  $ hg clone -q parent child-pull
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    85
  $ echo a > child-push/a
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    86
  $ hg -R child-push add child-push/a
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    87
  $ hg -R child-push commit -m a -d '1000000 0'
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    88
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    89
test python hook
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    90
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    91
  $ cat <<EOF > parent/.hg/hgrc
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    92
  > [extensions]
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    93
  > reject = $d/reject.py
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    94
  > [hooks]
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    95
  > pretxnchangegroup = python:reject.rejecthook
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    96
  > EOF
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    97
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    98
  $ dotest
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
    99
  push 29b62aeb769fdf78d8d9c5f28b017f76d7ef824b
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
   100
  hook 29b62aeb769fdf78d8d9c5f28b017f76d7ef824b
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
   101
  transaction abort!
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
   102
  rollback completed
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
   103
  abort: pretxnchangegroup hook failed
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
   104
  pull 0000000000000000000000000000000000000000
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
   105
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
   106
test external hook
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
   107
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
   108
  $ cat <<EOF > parent/.hg/hgrc
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
   109
  > [hooks]
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
   110
  > pretxnchangegroup = $d/reject.sh
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
   111
  > EOF
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
   112
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
   113
  $ dotest
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
   114
  push 29b62aeb769fdf78d8d9c5f28b017f76d7ef824b
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
   115
  hook 29b62aeb769fdf78d8d9c5f28b017f76d7ef824b
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
   116
  transaction abort!
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
   117
  rollback completed
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
   118
  abort: pretxnchangegroup hook exited with status 1
c046978cc0a9 tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff changeset
   119
  pull 0000000000000000000000000000000000000000