view tests/test-remotefilelog-tags.t @ 45736:2c6b054e22d0

test: add test-transaction-rollback-on-sigpipe.t demonstrating py3 regression When an hg push is interrupted with C-c, the remote [hg serve] command receives SIGPIPE. If a pretxnchangegroup hook fails, the remote hg then tries to rollback the transaction. It begins by printing "transaction abort!\n". This returns EPIPE, but ui.py ignores that error. In python3 (but not python2), this "transaction abort!\n" message stays in a buffer, so future flushes of stderr will try to print the message again, and so those flushes will also hit EPIPE. This test demonstrates such a case where this EPIPE causes the transaction rollback to fail, leaving behind an abandoned transaction. Differential Revision: https://phab.mercurial-scm.org/D9151
author Mitchell Plamann <mplamann@janestreet.com>
date Mon, 05 Oct 2020 13:23:16 -0400
parents 0800d9e6e216
children 84a93fa7ecfd
line wrap: on
line source

#require no-windows

  $ . "$TESTDIR/remotefilelog-library.sh"

  $ hg init master
  $ cd master
  $ cat >> .hg/hgrc <<EOF
  > [remotefilelog]
  > server=True
  > EOF
  $ echo x > foo
  $ echo y > bar
  $ hg commit -qAm one
  $ hg tag tag1
  $ cd ..

# clone with tags

  $ hg clone --shallow ssh://user@dummy/master shallow --noupdate --config remotefilelog.excludepattern=.hgtags
  streaming all changes
  3 files to transfer, 662 bytes of data
  transferred 662 bytes in * seconds (*/sec) (glob)
  searching for changes
  no changes found
  $ cat >> shallow/.hg/hgrc <<EOF
  > [remotefilelog]
  > cachepath=$PWD/hgcache
  > debug=True
  > reponame = master
  > excludepattern=.hgtags
  > [extensions]
  > remotefilelog=
  > EOF

  $ cd shallow
  $ ls .hg/store/data
  ~2ehgtags.i
  $ hg tags
  tip                                1:6ce44dcfda68
  tag1                               0:e0360bc0d9e1
  $ hg update
  3 files updated, 0 files merged, 0 files removed, 0 files unresolved
  2 files fetched over 1 fetches - (2 misses, 0.00% hit ratio) over *s (glob)

# pull with tags

  $ cd ../master
  $ hg tag tag2
  $ cd ../shallow
  $ hg pull
  pulling from ssh://user@dummy/master
  searching for changes
  adding changesets
  adding manifests
  adding file changes
  added 1 changesets with 0 changes to 0 files
  new changesets 6a22dfa4fd34
  (run 'hg update' to get a working copy)
  $ hg tags
  tip                                2:6a22dfa4fd34
  tag2                               1:6ce44dcfda68
  tag1                               0:e0360bc0d9e1
  $ hg update
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved

  $ ls .hg/store/data
  ~2ehgtags.i

  $ hg log -l 1 --stat
  changeset:   2:6a22dfa4fd34
  tag:         tip
  user:        test
  date:        Thu Jan 01 00:00:00 1970 +0000
  summary:     Added tag tag2 for changeset 6ce44dcfda68
  
   .hgtags |  1 +
   1 files changed, 1 insertions(+), 0 deletions(-)