tests/test-hup.t
author Adrian Buehlmann <adrian@cadifra.com>
Wed, 18 May 2011 09:12:27 +0200
changeset 14413 5ef18e28df19
parent 14266 89e7d35e0ef0
child 15446 c5c9ca3719f9
permissions -rw-r--r--
pure: provide more correct implementation of posixfile for Windows requires ctypes Why is posixfile a class? Because the implementation needs to use the Python library call os.fdopen [1], which sets the 'name' attribute on the Python file object it creates to the mostly meaningless string '<fdopen>', since file descriptors don't have a name. But users of posixfile depend on the name attribute [2] being set to a proper value, like Python's built-in 'open' function sets it on file objects. Python file's name attribute is read-only, so we can't just assign to it after the file object has alrady been created. To solve this problem, we save the name of the file on a wrapper object, and delegate the file function calls to the wrapped (private) file object using __getattr__. [1] http://docs.python.org/library/os.html#os.fdopen [2] http://docs.python.org/library/stdtypes.html#file.name

Test hangup signal in the middle of transaction

  $ "$TESTDIR/hghave" fifo || exit 80
  $ hg init
  $ mkfifo p
  $ hg serve --stdio < p &
  $ P=$!
  $ (echo lock; echo addchangegroup; sleep 5) > p &
  $ Q=$!
  $ sleep 3
  0
  0
  adding changesets
  $ kill -HUP $P
  $ wait
  transaction abort!
  rollback completed
  killed!
  $ echo .hg/* .hg/store/*
  .hg/00changelog.i .hg/journal.bookmarks .hg/journal.branch .hg/journal.desc .hg/journal.dirstate .hg/requires .hg/store .hg/store/00changelog.i .hg/store/00changelog.i.a