Mercurial > hg
view tests/test-subrepo-svn @ 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 | 0bf79efeaa20 |
children |
line wrap: on
line source
#!/bin/sh "$TESTDIR/hghave" svn || exit 80 fix_path() { tr '\\' / } escapedwd=`pwd | fix_path` # SVN wants all paths to start with a slash. Unfortunately, # Windows ones don't. Handle that. expr "$escapedwd" : "\/" > /dev/null if [ $? -ne 0 ]; then escapedwd="/$escapedwd" fi escapedwd=`python -c "import urllib, sys; sys.stdout.write(urllib.quote(sys.argv[1]))" "$escapedwd"` filterpath="s|$escapedwd|/root|" filteroutofdate='s/ in transaction.*/ is out of date/;s/Out of date: /File /' filterexternal="s|Fetching external item into '.*/s/externals'|Fetching external item into 's/externals'|g" echo % create subversion repo SVNREPO="file://$escapedwd/svn-repo" WCROOT="`pwd`/svn-wc" svnadmin create svn-repo svn co "$SVNREPO" svn-wc cd svn-wc mkdir src echo alpha > src/alpha svn add src mkdir externals echo other > externals/other svn add externals svn ci -m 'Add alpha' svn up cat > extdef <<EOF externals -r1 $SVNREPO/externals EOF svn propset -F extdef svn:externals src svn ci -m 'Setting externals' cd .. echo % create hg repo mkdir sub cd sub hg init t cd t echo % first revision, no sub echo a > a hg ci -Am0 echo % add first svn sub with leading whitespaces echo "s = [svn] $SVNREPO/src" >> .hgsub svn co --quiet "$SVNREPO"/src s hg add .hgsub hg ci -m1 echo % debugsub hg debugsub | sed "$filterpath" echo echo % change file in svn and hg, commit echo a >> a echo alpha >> s/alpha hg commit -m 'Message!' | sed "$filterexternal" \ | sed 's:Sending.*s/alpha:Sending s/alpha:g' hg debugsub | sed "$filterpath" echo echo a > s/a echo % should be empty despite change to s/a hg st echo echo % add a commit from svn cd "$WCROOT"/src svn up echo xyz >> alpha svn propset svn:mime-type 'text/xml' alpha svn ci -m 'amend a from svn' cd ../../sub/t echo % this commit from hg will fail echo zzz >> s/alpha hg ci -m 'amend alpha from hg' 2>&1 | sed "$filteroutofdate" svn revert -q s/alpha echo % this commit fails because of meta changes svn propset svn:mime-type 'text/html' s/alpha hg ci -m 'amend alpha from hg' 2>&1 | sed "$filteroutofdate" svn revert -q s/alpha echo % this commit fails because of externals changes echo zzz > s/externals/other hg ci -m 'amend externals from hg' svn revert -q s/externals/other echo % this commit fails because of externals meta changes svn propset svn:mime-type 'text/html' s/externals/other hg ci -m 'amend externals from hg' svn revert -q s/externals/other echo echo % clone cd .. hg clone t tc | fix_path cd tc echo % debugsub in clone hg debugsub | sed "$filterpath" echo % verify subrepo is contained within the repo directory python -c "import os.path; print os.path.exists('s')"