Mercurial > hg
view tests/test-mq-guards @ 11765:aff419e260f9 stable
templatefilters: make json filter handle multibyte characters correctly
It aims to fix javascript error of hgweb's graph view in Japanese 'cp932'
encoding.
'cp932' contains multibyte characters ending with '\x5c' (backslash),
e.g. '\x94\x5c' for Japanese Kanji 'Noh'.
Due to json filter escapes '\' to '\\', multibyte string ending with
'\x5c' is translated to "xxx\", resulting javascript parse error on
a web browser.
This patch changes json() to pass unicode to jsonescape().
Unicode decoding error handler changed to 'replace' by Patrick Mézard.
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Sat, 07 Aug 2010 16:27:16 +0900 |
parents | df5d1d571d27 |
children | 1c00577b0298 |
line wrap: on
line source
#!/bin/sh echo "[extensions]" >> $HGRCPATH echo "mq=" >> $HGRCPATH hg init hg qinit echo x > x hg ci -Ama hg qnew a.patch echo a > a hg add a hg qrefresh hg qnew b.patch echo b > b hg add b hg qrefresh hg qnew c.patch echo c > c hg add c hg qrefresh hg qpop -a echo % should fail hg qguard does-not-exist.patch +bleh echo % should fail hg qguard +fail hg qpush echo % should guard a.patch hg qguard +a echo % should print +a hg qguard hg qpop echo % should fail hg qpush a.patch hg qguard a.patch echo % should push b.patch hg qpush hg qpop echo % test selection of an empty guard hg qselect "" hg qselect a echo % should push a.patch hg qpush hg qguard -- c.patch -a echo % should print -a hg qguard c.patch echo % should skip c.patch hg qpush -a echo % should display b.patch hg qtop hg qguard -n c.patch echo % should push c.patch hg qpush -a hg qpop -a hg qselect -n echo % should push all hg qpush -a hg qpop -a hg qguard a.patch +1 hg qguard b.patch +2 hg qselect 1 echo % should push a.patch, not b.patch hg qpush hg qpush hg qpop -a hg qselect 2 echo % should push b.patch hg qpush hg qpush -a # Used to be an issue with holes in the patch sequence # So, put one hole on the base and ask for topmost patch. hg qtop hg qpop -a hg qselect 1 2 echo % should push a.patch, b.patch hg qpush hg qpush hg qpop -a hg qguard -- a.patch +1 +2 -3 hg qselect 1 2 3 echo % list patches and guards hg qguard -l echo % list patches and guards with color hg --config extensions.color= qguard --config color.mode=ansi \ -l --color=always echo % list series hg qseries -v echo % list guards hg qselect echo % should push b.patch hg qpush hg qpush -a hg qselect -n --reapply echo % guards in series file: +1 +2 -3 hg qselect -s echo % should show c.patch hg qapplied hg qrename a.patch new.patch echo % should show : echo % new.patch: +1 +2 -3 echo % b.patch: +2 echo % c.patch: unguarded hg qguard -l hg qnew d.patch hg qpop echo % should show new.patch and b.patch as Guarded, c.patch as Applied echo % and d.patch as Unapplied hg qseries -v echo % qseries again, but with color hg --config extensions.color= qseries -v --color=always hg qguard d.patch +2 echo % new.patch, b.patch: Guarded. c.patch: Applied. d.patch: Guarded. hg qseries -v qappunappv() { for command in qapplied "qapplied -v" qunapplied "qunapplied -v"; do echo % hg $command hg $command done } hg qpop -a hg qguard -l qappunappv hg qselect 1 qappunappv hg qpush -a qappunappv hg qselect 2 qappunappv for patch in `hg qseries`; do echo % hg qapplied $patch hg qapplied $patch echo % hg qunapplied $patch hg qunapplied $patch done echo % hg qseries -m: only b.patch should be shown echo the guards file was not ignored in the past hg qdelete -k b.patch hg qseries -m echo % hg qseries -m with color hg --config extensions.color= qseries -m --color=always