tests/test-encoding-align.t
author Matt Mackall <mpm@selenic.com>
Tue, 12 Oct 2010 16:26:03 -0500
changeset 12720 97fd67f35c00
parent 12418 09c6dd129f82
child 12722 22f45e53bb21
permissions -rw-r--r--
merge with crew

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