tests: unify test-encoding-align

This commit is contained in:
Matt Mackall 2010-09-26 13:41:32 -05:00
parent 048deb9ab0
commit 589dbb9433
3 changed files with 137 additions and 161 deletions

View File

@ -1,127 +0,0 @@
#!/bin/sh
########################################
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
echo '% check alignment of option descriptions in help'
hg help showoptlist
########################################
#### alignment of:
#### - user names in annotate
#### - file names in diffstat
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
echo '% check alignment of user names in annotate'
hg annotate -u $M
echo '% check alignment of filenames in diffstat'
hg diff -c tip --stat
########################################
#### alignment of:
#### - branch names in list
#### - tag names in list
#### add branches/tags
hg branch $S
hg tag $S
hg branch $M
hg tag $M
hg branch $L
hg tag $L
#### check
echo '% check alignment of branches'
hg tags
echo '% check alignment of tags'
hg tags
########################################
exit 0

View File

@ -1,34 +0,0 @@
% check alignment of option descriptions in help
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
% check alignment of user names in annotate
短名: first line(2)
MIDDLE_: second line(2)
長い長い名前: third line(2)
% check alignment of filenames in diffstat
MIDDLE_ | 1 +
短名 | 1 +
長い長い名前 | 1 +
3 files changed, 3 insertions(+), 0 deletions(-)
marked working directory as branch 短名
marked working directory as branch MIDDLE_
marked working directory as branch 長い長い名前
% check alignment of branches
tip 5:d745ff46155b
長い長い名前 4:9259be597f19
MIDDLE_ 3:b06c5b6def9e
短名 2:64a70663cee8
% check alignment of tags
tip 5:d745ff46155b
長い長い名前 4:9259be597f19
MIDDLE_ 3:b06c5b6def9e
短名 2:64a70663cee8

137
tests/test-encoding-align.t Normal file
View File

@ -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