Mercurial > hg
view tests/test-mactext.t @ 40110:d1338b4e39d0
chgserver: catch Abort while parsing early args to shut down cleanly
_loadnewui() calls dispatcher functions, which may raise Abort if unparsable
arguments are passed in. The server should catch such errors and translate
them to the "exit 255" instruction so the client can finish the IPC session
cleanly.
Spotted while porting the chg client to Rust.
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Sun, 07 Oct 2018 17:35:25 +0900 |
parents | 5abc47d4ca6b |
children | da9b7f9635a2 |
line wrap: on
line source
$ cat > unix2mac.py <<EOF > import sys > > for path in sys.argv[1:]: > data = open(path, 'rb').read() > data = data.replace(b'\n', b'\r') > open(path, 'wb').write(data) > EOF $ cat > print.py <<EOF > import sys > print(sys.stdin.read().replace('\n', '<LF>').replace('\r', '<CR>').replace('\0', '<NUL>')) > EOF $ hg init $ echo '[hooks]' >> .hg/hgrc $ echo 'pretxncommit.cr = python:hgext.win32text.forbidcr' >> .hg/hgrc $ echo 'pretxnchangegroup.cr = python:hgext.win32text.forbidcr' >> .hg/hgrc $ cat .hg/hgrc [hooks] pretxncommit.cr = python:hgext.win32text.forbidcr pretxnchangegroup.cr = python:hgext.win32text.forbidcr $ echo hello > f $ hg add f $ hg ci -m 1 $ "$PYTHON" unix2mac.py f $ hg ci -m 2 attempt to commit or push text file(s) using CR line endings in dea860dc51ec: f transaction abort! rollback completed abort: pretxncommit.cr hook failed [255] $ hg cat f | "$PYTHON" print.py hello<LF> $ cat f | "$PYTHON" print.py hello<CR>