--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-encoding-align.t Sun Sep 26 13:41:32 2010 -0500
@@ -0,0 +1,137 @@
+Test alignment of multibyte characters
+
+ $ HGENCODING=utf-8
+ $ export HGENCODING
+ $ hg init t
+ $ cd t
+ $ python << EOF
+ > # (byte, width) = (6, 4)
+ > s = "\xe7\x9f\xad\xe5\x90\x8d"
+ > # (byte, width) = (7, 7): odd width is good for alignment test
+ > m = "MIDDLE_"
+ > # (byte, width) = (18, 12)
+ > l = "\xe9\x95\xb7\xe3\x81\x84\xe9\x95\xb7\xe3\x81\x84\xe5\x90\x8d\xe5\x89\x8d"
+ > f = file('s', 'w'); f.write(s); f.close()
+ > f = file('m', 'w'); f.write(m); f.close()
+ > f = file('l', 'w'); f.write(l); f.close()
+ > # instant extension to show list of options
+ > f = file('showoptlist.py', 'w'); f.write("""# encoding: utf-8
+ > def showoptlist(ui, repo, *pats, **opts):
+ > '''dummy command to show option descriptions'''
+ > return 0
+ > cmdtable = {
+ > 'showoptlist':
+ > (showoptlist,
+ > [('s', 'opt1', '', 'short width', '""" + s + """'),
+ > ('m', 'opt2', '', 'middle width', '""" + m + """'),
+ > ('l', 'opt3', '', 'long width', '""" + l + """')
+ > ],
+ > ""
+ > )
+ > }
+ > """)
+ > f.close()
+ > EOF
+ $ S=`cat s`
+ $ M=`cat m`
+ $ L=`cat l`
+
+alignment of option descriptions in help
+
+ $ cat <<EOF > .hg/hgrc
+ > [extensions]
+ > ja_ext = `pwd`/showoptlist.py
+ > EOF
+
+check alignment of option descriptions in help
+
+ $ hg help showoptlist
+ hg showoptlist
+
+ dummy command to show option descriptions
+
+ options:
+
+ -s --opt1 短名 short width
+ -m --opt2 MIDDLE_ middle width
+ -l --opt3 長い長い名前 long width
+
+ use "hg -v help showoptlist" to show global options
+
+
+ $ rm -f s; touch s
+ $ rm -f m; touch m
+ $ rm -f l; touch l
+
+add files
+
+ $ cp s $S
+ $ hg add $S
+ $ cp m $M
+ $ hg add $M
+ $ cp l $L
+ $ hg add $L
+
+commit(1)
+
+ $ echo 'first line(1)' >> s; cp s $S
+ $ echo 'first line(2)' >> m; cp m $M
+ $ echo 'first line(3)' >> l; cp l $L
+ $ hg commit -m 'first commit' -u $S
+
+commit(2)
+
+ $ echo 'second line(1)' >> s; cp s $S
+ $ echo 'second line(2)' >> m; cp m $M
+ $ echo 'second line(3)' >> l; cp l $L
+ $ hg commit -m 'second commit' -u $M
+
+commit(3)
+
+ $ echo 'third line(1)' >> s; cp s $S
+ $ echo 'third line(2)' >> m; cp m $M
+ $ echo 'third line(3)' >> l; cp l $L
+ $ hg commit -m 'third commit' -u $L
+
+check alignment of user names in annotate
+
+ $ hg annotate -u $M
+ 短名: first line(2)
+ MIDDLE_: second line(2)
+ 長い長い名前: third line(2)
+
+check alignment of filenames in diffstat
+
+ $ hg diff -c tip --stat
+ MIDDLE_ | 1 +
+ 短名 | 1 +
+ 長い長い名前 | 1 +
+ 3 files changed, 3 insertions(+), 0 deletions(-)
+
+add branches/tags
+
+ $ hg branch $S
+ marked working directory as branch 短名
+ $ hg tag $S
+ $ hg branch $M
+ marked working directory as branch MIDDLE_
+ $ hg tag $M
+ $ hg branch $L
+ marked working directory as branch 長い長い名前
+ $ hg tag $L
+
+check alignment of branches
+
+ $ hg tags
+ tip 5:d745ff46155b
+ 長い長い名前 4:9259be597f19
+ MIDDLE_ 3:b06c5b6def9e
+ 短名 2:64a70663cee8
+
+check alignment of tags
+
+ $ hg tags
+ tip 5:d745ff46155b
+ 長い長い名前 4:9259be597f19
+ MIDDLE_ 3:b06c5b6def9e
+ 短名 2:64a70663cee8