tests/test-command-template
changeset 12283 850e089eb41c
parent 12282 9e457c3f47d9
child 12284 f7eb190310ef
equal deleted inserted replaced
12282:9e457c3f47d9 12283:850e089eb41c
     1 #!/bin/sh
       
     2 
       
     3 hg init a
       
     4 cd a
       
     5 echo a > a
       
     6 hg add a
       
     7 echo line 1 > b
       
     8 echo line 2 >> b
       
     9 hg commit -l b -d '1000000 0' -u 'User Name <user@hostname>'
       
    10 hg add b
       
    11 echo other 1 > c
       
    12 echo other 2 >> c
       
    13 echo >> c
       
    14 echo other 3 >> c
       
    15 hg commit -l c -d '1100000 0' -u 'A. N. Other <other@place>'
       
    16 hg add c
       
    17 hg commit -m 'no person' -d '1200000 0' -u 'other@place'
       
    18 echo c >> c
       
    19 hg commit -m 'no user, no domain' -d '1300000 0' -u 'person'
       
    20 echo foo > .hg/branch
       
    21 hg commit -m 'new branch' -d '1400000 0' -u 'person'
       
    22 hg co -q 3
       
    23 echo other 4 >> d
       
    24 hg add d
       
    25 hg commit -m 'new head' -d '1500000 0' -u 'person'
       
    26 hg merge -q foo
       
    27 hg commit -m 'merge' -d '1500001 0' -u 'person'
       
    28 # second branch starting at nullrev
       
    29 hg update null
       
    30 echo second > second
       
    31 hg add second
       
    32 hg commit -m second -d '1000000 0' -u 'User Name <user@hostname>'
       
    33 echo third > third
       
    34 hg add third
       
    35 hg mv second fourth
       
    36 hg commit -m third -d "2020-01-01 10:01"
       
    37 
       
    38 # make sure user/global hgrc does not affect tests
       
    39 echo '[ui]' > .hg/hgrc
       
    40 echo 'logtemplate =' >> .hg/hgrc
       
    41 echo 'style =' >> .hg/hgrc
       
    42 
       
    43 echo '# default style is like normal output'
       
    44 echo '#  normal'
       
    45 hg log > log.out
       
    46 hg log --style default > style.out
       
    47 cmp log.out style.out || diff -u log.out style.out
       
    48 echo '#  verbose'
       
    49 hg log -v > log.out
       
    50 hg log -v --style default > style.out
       
    51 cmp log.out style.out || diff -u log.out style.out
       
    52 echo '#  debug'
       
    53 hg log --debug > log.out
       
    54 hg log --debug --style default > style.out
       
    55 cmp log.out style.out || diff -u log.out style.out
       
    56 
       
    57 echo '# revision with no copies (used to print a traceback)'
       
    58 hg tip -v --template '\n'
       
    59 
       
    60 echo '# compact style works'
       
    61 hg log --style compact
       
    62 hg log -v --style compact
       
    63 hg log --debug --style compact
       
    64 
       
    65 # Test xml styles
       
    66 echo '# xml style works (--style xml)'
       
    67 hg log --style xml
       
    68 echo '# xml style works (-v --style xml)'
       
    69 hg log -v --style xml
       
    70 echo '# xml style works (--debug --style xml)'
       
    71 hg log --debug --style xml
       
    72 
       
    73 echo '# error if style not readable'
       
    74 touch q
       
    75 chmod 0 q
       
    76 hg log --style ./q
       
    77 
       
    78 echo '# error if no style'
       
    79 hg log --style notexist
       
    80 
       
    81 echo '# error if style missing key'
       
    82 echo 'q = q' > t
       
    83 hg log --style ./t
       
    84 
       
    85 echo '# error if include fails'
       
    86 echo 'changeset = q' >> t
       
    87 hg log --style ./t
       
    88 
       
    89 echo '# include works'
       
    90 rm q
       
    91 echo '{rev}' > q
       
    92 hg log --style ./t
       
    93 
       
    94 echo '# ui.style works'
       
    95 echo '[ui]' > .hg/hgrc
       
    96 echo 'style = t' >> .hg/hgrc
       
    97 hg log
       
    98 
       
    99 echo '# issue338'
       
   100 hg log --style=changelog > changelog
       
   101 cat changelog
       
   102 
       
   103 echo '# issue 2130'
       
   104 hg heads --style changelog
       
   105 
       
   106 echo "# keys work"
       
   107 for key in author branches date desc file_adds file_dels file_mods \
       
   108         file_copies file_copies_switch files \
       
   109         manifest node parents rev tags diffstat extras; do
       
   110     for mode in '' --verbose --debug; do
       
   111         hg log $mode --template "$key$mode: {$key}\n"
       
   112     done
       
   113 done
       
   114 
       
   115 echo '# filters work'
       
   116 hg log --template '{author|domain}\n'
       
   117 hg log --template '{author|person}\n'
       
   118 hg log --template '{author|user}\n'
       
   119 hg log --template '{date|age}\n' > /dev/null || exit 1
       
   120 hg log -l1 --template '{date|age}\n' 
       
   121 hg log --template '{date|date}\n'
       
   122 hg log --template '{date|isodate}\n'
       
   123 hg log --template '{date|isodatesec}\n'
       
   124 hg log --template '{date|rfc822date}\n'
       
   125 hg log --template '{desc|firstline}\n'
       
   126 hg log --template '{node|short}\n'
       
   127 hg log --template '<changeset author="{author|xmlescape}"/>\n'
       
   128 hg log --template '{rev}: {children}\n'
       
   129 
       
   130 echo '# formatnode filter works'
       
   131 echo '#  quiet'
       
   132 hg -q log -r 0 --template '{node|formatnode}\n'
       
   133 echo '#  normal'
       
   134 hg log -r 0 --template '{node|formatnode}\n'
       
   135 echo '#  verbose'
       
   136 hg -v log -r 0 --template '{node|formatnode}\n'
       
   137 echo '#  debug'
       
   138 hg --debug log -r 0 --template '{node|formatnode}\n'
       
   139 
       
   140 echo '# error on syntax'
       
   141 echo 'x = "f' >> t
       
   142 hg log
       
   143 
       
   144 cd ..
       
   145 
       
   146 echo '# latesttag'
       
   147 hg init latesttag
       
   148 cd latesttag
       
   149 
       
   150 echo a > file
       
   151 hg ci -Am a -d '0 0'
       
   152 
       
   153 echo b >> file
       
   154 hg ci -m b -d '1 0'
       
   155 
       
   156 echo c >> head1
       
   157 hg ci -Am h1c -d '2 0'
       
   158 
       
   159 hg update -q 1
       
   160 echo d >> head2
       
   161 hg ci -Am h2d -d '3 0'
       
   162 
       
   163 echo e >> head2
       
   164 hg ci -m h2e -d '4 0'
       
   165 
       
   166 hg merge -q
       
   167 hg ci -m merge -d '5 0'
       
   168 
       
   169 echo '# No tag set'
       
   170 hg log --template '{rev}: {latesttag}+{latesttagdistance}\n'
       
   171 
       
   172 echo '# one common tag: longuest path wins'
       
   173 hg tag -r 1 -m t1 -d '6 0' t1
       
   174 hg log --template '{rev}: {latesttag}+{latesttagdistance}\n'
       
   175 
       
   176 echo '# one ancestor tag: more recent wins'
       
   177 hg tag -r 2 -m t2 -d '7 0' t2
       
   178 hg log --template '{rev}: {latesttag}+{latesttagdistance}\n'
       
   179 
       
   180 echo '# two branch tags: more recent wins'
       
   181 hg tag -r 3 -m t3 -d '8 0' t3
       
   182 hg log --template '{rev}: {latesttag}+{latesttagdistance}\n'
       
   183 
       
   184 echo '# merged tag overrides'
       
   185 hg tag -r 5 -m t5 -d '9 0' t5
       
   186 hg tag -r 3 -m at3 -d '10 0' at3
       
   187 hg log --template '{rev}: {latesttag}+{latesttagdistance}\n'
       
   188 cd ..
       
   189 
       
   190 echo '# style path expansion (issue1948)'
       
   191 mkdir -p home/styles
       
   192 cat > home/styles/teststyle <<EOF
       
   193 changeset = 'test {rev}:{node|short}\n'
       
   194 EOF
       
   195 HOME=`pwd`/home; export HOME
       
   196 cat > latesttag/.hg/hgrc <<EOF
       
   197 [ui]
       
   198 style = ~/styles/teststyle
       
   199 EOF
       
   200 hg -R latesttag tip
       
   201 
       
   202 echo '# test recursive showlist template (issue1989)'
       
   203 cat > style1989 <<EOF
       
   204 changeset = '{file_mods}{manifest}{extras}'
       
   205 file_mod  = 'M|{author|person}\n'
       
   206 manifest = '{rev},{author}\n'
       
   207 extra = '{key}: {author}\n'
       
   208 EOF
       
   209 hg -R latesttag log -r tip --style=style1989
       
   210 
       
   211 echo '# done'