##// END OF EJS Templates
tests: write out file using bytes I/O...
Gregory Szorc -
r43734:e7eb67ea stable
parent child Browse files
Show More
@@ -1,1036 +1,1038 b''
1 1 #require pygments serve
2 2
3 3 $ cat <<EOF >> $HGRCPATH
4 4 > [extensions]
5 5 > highlight =
6 6 > [web]
7 7 > pygments_style = friendly
8 8 > highlightfiles = **.py and size('<100KB')
9 9 > EOF
10 10 $ hg init test
11 11 $ cd test
12 12
13 13 $ filterhtml () {
14 14 > sed -e "s/class=\"k\"/class=\"kn\"/g" \
15 15 > -e "s/class=\"mf\"/class=\"mi\"/g" \
16 16 > -e "s/class=\"vm\"/class=\"n\"/g" \
17 17 > -e "s/class=\"\([cs]\)[h12]\"/class=\"\1\"/g"
18 18 > }
19 19
20 20 create random Python file to exercise Pygments
21 21
22 22 $ cat <<NO_CHECK_EOF > primes.py
23 23 > """Fun with generators. Corresponding Haskell implementation:
24 24 >
25 25 > primes = 2 : sieve [3, 5..]
26 26 > where sieve (p:ns) = p : sieve [n | n <- ns, mod n p /= 0]
27 27 > """
28 28 >
29 29 > import itertools
30 30 >
31 31 > def primes():
32 32 > """Generate all primes."""
33 33 > def sieve(ns):
34 34 > p = ns.next()
35 35 > # It is important to yield *here* in order to stop the
36 36 > # infinite recursion.
37 37 > yield p
38 38 > ns = itertools.ifilter(lambda n: n % p != 0, ns)
39 39 > for n in sieve(ns):
40 40 > yield n
41 41 >
42 42 > odds = itertools.ifilter(lambda i: i % 2 == 1, itertools.count())
43 43 > dropwhile = itertools.dropwhile
44 44 > return itertools.chain([2], sieve(dropwhile(lambda n: n < 3, odds)))
45 45 >
46 46 > if __name__ == "__main__":
47 47 > import sys
48 48 > try:
49 49 > n = int(sys.argv[1])
50 50 > except (ValueError, IndexError):
51 51 > n = 10
52 52 > p = primes()
53 53 > print("The first %d primes: %s" % (n, list(itertools.islice(p, n))))
54 54 > NO_CHECK_EOF
55 55 $ echo >> primes.py # to test html markup with an empty line just before EOF
56 56 $ hg ci -Ama
57 57 adding primes.py
58 58
59 59 hg serve
60 60
61 61 $ hg serve -p $HGPORT -d -n test --pid-file=hg.pid -A access.log -E errors.log
62 62 $ cat hg.pid >> $DAEMON_PIDS
63 63
64 64 hgweb filerevision, html
65 65
66 66 $ (get-with-headers.py localhost:$HGPORT 'file/tip/primes.py') | filterhtml
67 67 200 Script output follows
68 68
69 69 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
70 70 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
71 71 <head>
72 72 <link rel="icon" href="/static/hgicon.png" type="image/png" />
73 73 <meta name="robots" content="index, nofollow" />
74 74 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
75 75 <script type="text/javascript" src="/static/mercurial.js"></script>
76 76
77 77 <link rel="stylesheet" href="/highlightcss" type="text/css" />
78 78 <title>test: 687f2d169546 primes.py</title>
79 79 </head>
80 80 <body>
81 81
82 82 <div class="container">
83 83 <div class="menu">
84 84 <div class="logo">
85 85 <a href="https://mercurial-scm.org/">
86 86 <img src="/static/hglogo.png" alt="mercurial" /></a>
87 87 </div>
88 88 <ul>
89 89 <li><a href="/shortlog/tip">log</a></li>
90 90 <li><a href="/graph/tip">graph</a></li>
91 91 <li><a href="/tags">tags</a></li>
92 92 <li><a href="/bookmarks">bookmarks</a></li>
93 93 <li><a href="/branches">branches</a></li>
94 94 </ul>
95 95 <ul>
96 96 <li><a href="/rev/tip">changeset</a></li>
97 97 <li><a href="/file/tip/">browse</a></li>
98 98 </ul>
99 99 <ul>
100 100 <li class="active">file</li>
101 101 <li><a href="/file/tip/primes.py">latest</a></li>
102 102 <li><a href="/diff/tip/primes.py">diff</a></li>
103 103 <li><a href="/comparison/tip/primes.py">comparison</a></li>
104 104 <li><a href="/annotate/tip/primes.py">annotate</a></li>
105 105 <li><a href="/log/tip/primes.py">file log</a></li>
106 106 <li><a href="/raw-file/tip/primes.py">raw</a></li>
107 107 </ul>
108 108 <ul>
109 109 <li><a href="/help">help</a></li>
110 110 </ul>
111 111 </div>
112 112
113 113 <div class="main">
114 114 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
115 115 <h3>
116 116 view primes.py @ 0:<a href="/rev/687f2d169546">687f2d169546</a>
117 117 <span class="phase">draft</span> <span class="branchhead">default</span> <span class="tag">tip</span>
118 118 </h3>
119 119
120 120
121 121 <form class="search" action="/log">
122 122
123 123 <p><input name="rev" id="search1" type="text" size="30" value="" /></p>
124 124 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
125 125 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
126 126 </form>
127 127
128 128 <div class="description">a</div>
129 129
130 130 <table id="changesetEntry">
131 131 <tr>
132 132 <th class="author">author</th>
133 133 <td class="author">&#116;&#101;&#115;&#116;</td>
134 134 </tr>
135 135 <tr>
136 136 <th class="date">date</th>
137 137 <td class="date age">Thu, 01 Jan 1970 00:00:00 +0000</td>
138 138 </tr>
139 139 <tr>
140 140 <th class="author">parents</th>
141 141 <td class="author"></td>
142 142 </tr>
143 143 <tr>
144 144 <th class="author">children</th>
145 145 <td class="author"></td>
146 146 </tr>
147 147 </table>
148 148
149 149 <div class="overflow">
150 150 <div class="sourcefirst linewraptoggle">line wrap: <a class="linewraplink" href="#">on</a></div>
151 151 <div class="sourcefirst"> line source</div>
152 152 <pre class="sourcelines stripes4 wrap bottomline"
153 153 data-logurl="/log/tip/primes.py"
154 154 data-selectabletag="SPAN"
155 155 data-ishead="1">
156 156
157 157 <span id="l1"><span class="sd">&quot;&quot;&quot;Fun with generators. Corresponding Haskell implementation:</span></span><a href="#l1"></a>
158 158 <span id="l2"></span><a href="#l2"></a>
159 159 <span id="l3"><span class="sd">primes = 2 : sieve [3, 5..]</span></span><a href="#l3"></a>
160 160 <span id="l4"><span class="sd"> where sieve (p:ns) = p : sieve [n | n &lt;- ns, mod n p /= 0]</span></span><a href="#l4"></a>
161 161 <span id="l5"><span class="sd">&quot;&quot;&quot;</span></span><a href="#l5"></a>
162 162 <span id="l6"></span><a href="#l6"></a>
163 163 <span id="l7"><span class="kn">import</span> <span class="nn">itertools</span></span><a href="#l7"></a>
164 164 <span id="l8"></span><a href="#l8"></a>
165 165 <span id="l9"><span class="kn">def</span> <span class="nf">primes</span><span class="p">():</span></span><a href="#l9"></a>
166 166 <span id="l10"> <span class="sd">&quot;&quot;&quot;Generate all primes.&quot;&quot;&quot;</span></span><a href="#l10"></a>
167 167 <span id="l11"> <span class="kn">def</span> <span class="nf">sieve</span><span class="p">(</span><span class="n">ns</span><span class="p">):</span></span><a href="#l11"></a>
168 168 <span id="l12"> <span class="n">p</span> <span class="o">=</span> <span class="n">ns</span><span class="o">.</span><span class="n">next</span><span class="p">()</span></span><a href="#l12"></a>
169 169 <span id="l13"> <span class="c"># It is important to yield *here* in order to stop the</span></span><a href="#l13"></a>
170 170 <span id="l14"> <span class="c"># infinite recursion.</span></span><a href="#l14"></a>
171 171 <span id="l15"> <span class="kn">yield</span> <span class="n">p</span></span><a href="#l15"></a>
172 172 <span id="l16"> <span class="n">ns</span> <span class="o">=</span> <span class="n">itertools</span><span class="o">.</span><span class="n">ifilter</span><span class="p">(</span><span class="kn">lambda</span> <span class="n">n</span><span class="p">:</span> <span class="n">n</span> <span class="o">%</span> <span class="n">p</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">,</span> <span class="n">ns</span><span class="p">)</span></span><a href="#l16"></a>
173 173 <span id="l17"> <span class="kn">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="n">sieve</span><span class="p">(</span><span class="n">ns</span><span class="p">):</span></span><a href="#l17"></a>
174 174 <span id="l18"> <span class="kn">yield</span> <span class="n">n</span></span><a href="#l18"></a>
175 175 <span id="l19"></span><a href="#l19"></a>
176 176 <span id="l20"> <span class="n">odds</span> <span class="o">=</span> <span class="n">itertools</span><span class="o">.</span><span class="n">ifilter</span><span class="p">(</span><span class="kn">lambda</span> <span class="n">i</span><span class="p">:</span> <span class="n">i</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">==</span> <span class="mi">1</span><span class="p">,</span> <span class="n">itertools</span><span class="o">.</span><span class="n">count</span><span class="p">())</span></span><a href="#l20"></a>
177 177 <span id="l21"> <span class="n">dropwhile</span> <span class="o">=</span> <span class="n">itertools</span><span class="o">.</span><span class="n">dropwhile</span></span><a href="#l21"></a>
178 178 <span id="l22"> <span class="kn">return</span> <span class="n">itertools</span><span class="o">.</span><span class="n">chain</span><span class="p">([</span><span class="mi">2</span><span class="p">],</span> <span class="n">sieve</span><span class="p">(</span><span class="n">dropwhile</span><span class="p">(</span><span class="kn">lambda</span> <span class="n">n</span><span class="p">:</span> <span class="n">n</span> <span class="o">&lt;</span> <span class="mi">3</span><span class="p">,</span> <span class="n">odds</span><span class="p">)))</span></span><a href="#l22"></a>
179 179 <span id="l23"></span><a href="#l23"></a>
180 180 <span id="l24"><span class="kn">if</span> <span class="n">__name__</span> <span class="o">==</span> <span class="s">&quot;__main__&quot;</span><span class="p">:</span></span><a href="#l24"></a>
181 181 <span id="l25"> <span class="kn">import</span> <span class="nn">sys</span></span><a href="#l25"></a>
182 182 <span id="l26"> <span class="kn">try</span><span class="p">:</span></span><a href="#l26"></a>
183 183 <span id="l27"> <span class="n">n</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span></span><a href="#l27"></a>
184 184 <span id="l28"> <span class="kn">except</span> <span class="p">(</span><span class="ne">ValueError</span><span class="p">,</span> <span class="ne">IndexError</span><span class="p">):</span></span><a href="#l28"></a>
185 185 <span id="l29"> <span class="n">n</span> <span class="o">=</span> <span class="mi">10</span></span><a href="#l29"></a>
186 186 <span id="l30"> <span class="n">p</span> <span class="o">=</span> <span class="n">primes</span><span class="p">()</span></span><a href="#l30"></a>
187 187 <span id="l31"> <span class="kn">print</span><span class="p">(</span><span class="s">&quot;The first </span><span class="si">%d</span><span class="s"> primes: </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">n</span><span class="p">,</span> <span class="nb">list</span><span class="p">(</span><span class="n">itertools</span><span class="o">.</span><span class="n">islice</span><span class="p">(</span><span class="n">p</span><span class="p">,</span> <span class="n">n</span><span class="p">))))</span></span><a href="#l31"></a>
188 188 <span id="l32"></span><a href="#l32"></a>
189 189 </pre>
190 190 </div>
191 191
192 192 <script type="text/javascript" src="/static/followlines.js"></script>
193 193
194 194 </div>
195 195 </div>
196 196
197 197
198 198
199 199 </body>
200 200 </html>
201 201
202 202
203 203 hgweb fileannotate, html
204 204
205 205 $ (get-with-headers.py localhost:$HGPORT 'annotate/tip/primes.py') | filterhtml
206 206 200 Script output follows
207 207
208 208 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
209 209 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
210 210 <head>
211 211 <link rel="icon" href="/static/hgicon.png" type="image/png" />
212 212 <meta name="robots" content="index, nofollow" />
213 213 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
214 214 <script type="text/javascript" src="/static/mercurial.js"></script>
215 215
216 216 <link rel="stylesheet" href="/highlightcss" type="text/css" />
217 217 <title>test: primes.py annotate</title>
218 218 </head>
219 219 <body>
220 220
221 221 <div class="container">
222 222 <div class="menu">
223 223 <div class="logo">
224 224 <a href="https://mercurial-scm.org/">
225 225 <img src="/static/hglogo.png" alt="mercurial" /></a>
226 226 </div>
227 227 <ul>
228 228 <li><a href="/shortlog/tip">log</a></li>
229 229 <li><a href="/graph/tip">graph</a></li>
230 230 <li><a href="/tags">tags</a></li>
231 231 <li><a href="/bookmarks">bookmarks</a></li>
232 232 <li><a href="/branches">branches</a></li>
233 233 </ul>
234 234
235 235 <ul>
236 236 <li><a href="/rev/tip">changeset</a></li>
237 237 <li><a href="/file/tip/">browse</a></li>
238 238 </ul>
239 239 <ul>
240 240 <li><a href="/file/tip/primes.py">file</a></li>
241 241 <li><a href="/file/tip/primes.py">latest</a></li>
242 242 <li><a href="/diff/tip/primes.py">diff</a></li>
243 243 <li><a href="/comparison/tip/primes.py">comparison</a></li>
244 244 <li class="active">annotate</li>
245 245 <li><a href="/log/tip/primes.py">file log</a></li>
246 246 <li><a href="/raw-file/tip/primes.py">raw</a></li>
247 247 </ul>
248 248 <ul>
249 249 <li><a href="/help">help</a></li>
250 250 </ul>
251 251 </div>
252 252
253 253 <div class="main">
254 254 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
255 255 <h3>
256 256 annotate primes.py @ 0:<a href="/rev/687f2d169546">687f2d169546</a>
257 257 <span class="phase">draft</span> <span class="branchhead">default</span> <span class="tag">tip</span>
258 258 </h3>
259 259
260 260
261 261 <form class="search" action="/log">
262 262
263 263 <p><input name="rev" id="search1" type="text" size="30" value="" /></p>
264 264 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
265 265 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
266 266 </form>
267 267
268 268 <div class="description">a</div>
269 269
270 270 <table id="changesetEntry">
271 271 <tr>
272 272 <th class="author">author</th>
273 273 <td class="author">&#116;&#101;&#115;&#116;</td>
274 274 </tr>
275 275 <tr>
276 276 <th class="date">date</th>
277 277 <td class="date age">Thu, 01 Jan 1970 00:00:00 +0000</td>
278 278 </tr>
279 279 <tr>
280 280 <th class="author">parents</th>
281 281 <td class="author"></td>
282 282 </tr>
283 283 <tr>
284 284 <th class="author">children</th>
285 285 <td class="author"></td>
286 286 </tr>
287 287 </table>
288 288
289 289
290 290 <form id="diffopts-form"
291 291 data-ignorews="0"
292 292 data-ignorewsamount="0"
293 293 data-ignorewseol="0"
294 294 data-ignoreblanklines="0">
295 295 <span>Ignore whitespace changes - </span>
296 296 <span>Everywhere:</span>
297 297 <input id="ignorews-checkbox" type="checkbox" />
298 298 <span>Within whitespace:</span>
299 299 <input id="ignorewsamount-checkbox" type="checkbox" />
300 300 <span>At end of lines:</span>
301 301 <input id="ignorewseol-checkbox" type="checkbox" />
302 302 </form>
303 303
304 304 <script type="text/javascript">
305 305 renderDiffOptsForm();
306 306 </script>
307 307
308 308 <div class="overflow">
309 309 <table class="bigtable">
310 310 <thead>
311 311 <tr>
312 312 <th class="annotate">rev</th>
313 313 <th class="line">&nbsp;&nbsp;line source</th>
314 314 </tr>
315 315 </thead>
316 316 <tbody class="stripes2 sourcelines"
317 317 data-logurl="/log/tip/primes.py"
318 318 data-selectabletag="TR"
319 319 data-ishead="1">
320 320
321 321 <tr id="l1" class="thisrev">
322 322 <td class="annotate parity0">
323 323 <a href="/annotate/687f2d169546/primes.py#l1">
324 324 0
325 325 </a>
326 326 <div class="annotate-info">
327 327 <div>
328 328 <a href="/annotate/687f2d169546/primes.py#l1">
329 329 687f2d169546</a>
330 330 a
331 331 </div>
332 332 <div><em>&#116;&#101;&#115;&#116;</em></div>
333 333 <div>parents: </div>
334 334 <a href="/diff/687f2d169546/primes.py">diff</a>
335 335 <a href="/rev/687f2d169546">changeset</a>
336 336 </div>
337 337 </td>
338 338 <td class="source followlines-btn-parent"><a href="#l1"> 1</a> <span class="sd">&quot;&quot;&quot;Fun with generators. Corresponding Haskell implementation:</span></td>
339 339 </tr>
340 340 <tr id="l2" class="thisrev">
341 341 <td class="annotate parity0">
342 342
343 343 <div class="annotate-info">
344 344 <div>
345 345 <a href="/annotate/687f2d169546/primes.py#l2">
346 346 687f2d169546</a>
347 347 a
348 348 </div>
349 349 <div><em>&#116;&#101;&#115;&#116;</em></div>
350 350 <div>parents: </div>
351 351 <a href="/diff/687f2d169546/primes.py">diff</a>
352 352 <a href="/rev/687f2d169546">changeset</a>
353 353 </div>
354 354 </td>
355 355 <td class="source followlines-btn-parent"><a href="#l2"> 2</a> </td>
356 356 </tr>
357 357 <tr id="l3" class="thisrev">
358 358 <td class="annotate parity0">
359 359
360 360 <div class="annotate-info">
361 361 <div>
362 362 <a href="/annotate/687f2d169546/primes.py#l3">
363 363 687f2d169546</a>
364 364 a
365 365 </div>
366 366 <div><em>&#116;&#101;&#115;&#116;</em></div>
367 367 <div>parents: </div>
368 368 <a href="/diff/687f2d169546/primes.py">diff</a>
369 369 <a href="/rev/687f2d169546">changeset</a>
370 370 </div>
371 371 </td>
372 372 <td class="source followlines-btn-parent"><a href="#l3"> 3</a> <span class="sd">primes = 2 : sieve [3, 5..]</span></td>
373 373 </tr>
374 374 <tr id="l4" class="thisrev">
375 375 <td class="annotate parity0">
376 376
377 377 <div class="annotate-info">
378 378 <div>
379 379 <a href="/annotate/687f2d169546/primes.py#l4">
380 380 687f2d169546</a>
381 381 a
382 382 </div>
383 383 <div><em>&#116;&#101;&#115;&#116;</em></div>
384 384 <div>parents: </div>
385 385 <a href="/diff/687f2d169546/primes.py">diff</a>
386 386 <a href="/rev/687f2d169546">changeset</a>
387 387 </div>
388 388 </td>
389 389 <td class="source followlines-btn-parent"><a href="#l4"> 4</a> <span class="sd"> where sieve (p:ns) = p : sieve [n | n &lt;- ns, mod n p /= 0]</span></td>
390 390 </tr>
391 391 <tr id="l5" class="thisrev">
392 392 <td class="annotate parity0">
393 393
394 394 <div class="annotate-info">
395 395 <div>
396 396 <a href="/annotate/687f2d169546/primes.py#l5">
397 397 687f2d169546</a>
398 398 a
399 399 </div>
400 400 <div><em>&#116;&#101;&#115;&#116;</em></div>
401 401 <div>parents: </div>
402 402 <a href="/diff/687f2d169546/primes.py">diff</a>
403 403 <a href="/rev/687f2d169546">changeset</a>
404 404 </div>
405 405 </td>
406 406 <td class="source followlines-btn-parent"><a href="#l5"> 5</a> <span class="sd">&quot;&quot;&quot;</span></td>
407 407 </tr>
408 408 <tr id="l6" class="thisrev">
409 409 <td class="annotate parity0">
410 410
411 411 <div class="annotate-info">
412 412 <div>
413 413 <a href="/annotate/687f2d169546/primes.py#l6">
414 414 687f2d169546</a>
415 415 a
416 416 </div>
417 417 <div><em>&#116;&#101;&#115;&#116;</em></div>
418 418 <div>parents: </div>
419 419 <a href="/diff/687f2d169546/primes.py">diff</a>
420 420 <a href="/rev/687f2d169546">changeset</a>
421 421 </div>
422 422 </td>
423 423 <td class="source followlines-btn-parent"><a href="#l6"> 6</a> </td>
424 424 </tr>
425 425 <tr id="l7" class="thisrev">
426 426 <td class="annotate parity0">
427 427
428 428 <div class="annotate-info">
429 429 <div>
430 430 <a href="/annotate/687f2d169546/primes.py#l7">
431 431 687f2d169546</a>
432 432 a
433 433 </div>
434 434 <div><em>&#116;&#101;&#115;&#116;</em></div>
435 435 <div>parents: </div>
436 436 <a href="/diff/687f2d169546/primes.py">diff</a>
437 437 <a href="/rev/687f2d169546">changeset</a>
438 438 </div>
439 439 </td>
440 440 <td class="source followlines-btn-parent"><a href="#l7"> 7</a> <span class="kn">import</span> <span class="nn">itertools</span></td>
441 441 </tr>
442 442 <tr id="l8" class="thisrev">
443 443 <td class="annotate parity0">
444 444
445 445 <div class="annotate-info">
446 446 <div>
447 447 <a href="/annotate/687f2d169546/primes.py#l8">
448 448 687f2d169546</a>
449 449 a
450 450 </div>
451 451 <div><em>&#116;&#101;&#115;&#116;</em></div>
452 452 <div>parents: </div>
453 453 <a href="/diff/687f2d169546/primes.py">diff</a>
454 454 <a href="/rev/687f2d169546">changeset</a>
455 455 </div>
456 456 </td>
457 457 <td class="source followlines-btn-parent"><a href="#l8"> 8</a> </td>
458 458 </tr>
459 459 <tr id="l9" class="thisrev">
460 460 <td class="annotate parity0">
461 461
462 462 <div class="annotate-info">
463 463 <div>
464 464 <a href="/annotate/687f2d169546/primes.py#l9">
465 465 687f2d169546</a>
466 466 a
467 467 </div>
468 468 <div><em>&#116;&#101;&#115;&#116;</em></div>
469 469 <div>parents: </div>
470 470 <a href="/diff/687f2d169546/primes.py">diff</a>
471 471 <a href="/rev/687f2d169546">changeset</a>
472 472 </div>
473 473 </td>
474 474 <td class="source followlines-btn-parent"><a href="#l9"> 9</a> <span class="kn">def</span> <span class="nf">primes</span><span class="p">():</span></td>
475 475 </tr>
476 476 <tr id="l10" class="thisrev">
477 477 <td class="annotate parity0">
478 478
479 479 <div class="annotate-info">
480 480 <div>
481 481 <a href="/annotate/687f2d169546/primes.py#l10">
482 482 687f2d169546</a>
483 483 a
484 484 </div>
485 485 <div><em>&#116;&#101;&#115;&#116;</em></div>
486 486 <div>parents: </div>
487 487 <a href="/diff/687f2d169546/primes.py">diff</a>
488 488 <a href="/rev/687f2d169546">changeset</a>
489 489 </div>
490 490 </td>
491 491 <td class="source followlines-btn-parent"><a href="#l10"> 10</a> <span class="sd">&quot;&quot;&quot;Generate all primes.&quot;&quot;&quot;</span></td>
492 492 </tr>
493 493 <tr id="l11" class="thisrev">
494 494 <td class="annotate parity0">
495 495
496 496 <div class="annotate-info">
497 497 <div>
498 498 <a href="/annotate/687f2d169546/primes.py#l11">
499 499 687f2d169546</a>
500 500 a
501 501 </div>
502 502 <div><em>&#116;&#101;&#115;&#116;</em></div>
503 503 <div>parents: </div>
504 504 <a href="/diff/687f2d169546/primes.py">diff</a>
505 505 <a href="/rev/687f2d169546">changeset</a>
506 506 </div>
507 507 </td>
508 508 <td class="source followlines-btn-parent"><a href="#l11"> 11</a> <span class="kn">def</span> <span class="nf">sieve</span><span class="p">(</span><span class="n">ns</span><span class="p">):</span></td>
509 509 </tr>
510 510 <tr id="l12" class="thisrev">
511 511 <td class="annotate parity0">
512 512
513 513 <div class="annotate-info">
514 514 <div>
515 515 <a href="/annotate/687f2d169546/primes.py#l12">
516 516 687f2d169546</a>
517 517 a
518 518 </div>
519 519 <div><em>&#116;&#101;&#115;&#116;</em></div>
520 520 <div>parents: </div>
521 521 <a href="/diff/687f2d169546/primes.py">diff</a>
522 522 <a href="/rev/687f2d169546">changeset</a>
523 523 </div>
524 524 </td>
525 525 <td class="source followlines-btn-parent"><a href="#l12"> 12</a> <span class="n">p</span> <span class="o">=</span> <span class="n">ns</span><span class="o">.</span><span class="n">next</span><span class="p">()</span></td>
526 526 </tr>
527 527 <tr id="l13" class="thisrev">
528 528 <td class="annotate parity0">
529 529
530 530 <div class="annotate-info">
531 531 <div>
532 532 <a href="/annotate/687f2d169546/primes.py#l13">
533 533 687f2d169546</a>
534 534 a
535 535 </div>
536 536 <div><em>&#116;&#101;&#115;&#116;</em></div>
537 537 <div>parents: </div>
538 538 <a href="/diff/687f2d169546/primes.py">diff</a>
539 539 <a href="/rev/687f2d169546">changeset</a>
540 540 </div>
541 541 </td>
542 542 <td class="source followlines-btn-parent"><a href="#l13"> 13</a> <span class="c"># It is important to yield *here* in order to stop the</span></td>
543 543 </tr>
544 544 <tr id="l14" class="thisrev">
545 545 <td class="annotate parity0">
546 546
547 547 <div class="annotate-info">
548 548 <div>
549 549 <a href="/annotate/687f2d169546/primes.py#l14">
550 550 687f2d169546</a>
551 551 a
552 552 </div>
553 553 <div><em>&#116;&#101;&#115;&#116;</em></div>
554 554 <div>parents: </div>
555 555 <a href="/diff/687f2d169546/primes.py">diff</a>
556 556 <a href="/rev/687f2d169546">changeset</a>
557 557 </div>
558 558 </td>
559 559 <td class="source followlines-btn-parent"><a href="#l14"> 14</a> <span class="c"># infinite recursion.</span></td>
560 560 </tr>
561 561 <tr id="l15" class="thisrev">
562 562 <td class="annotate parity0">
563 563
564 564 <div class="annotate-info">
565 565 <div>
566 566 <a href="/annotate/687f2d169546/primes.py#l15">
567 567 687f2d169546</a>
568 568 a
569 569 </div>
570 570 <div><em>&#116;&#101;&#115;&#116;</em></div>
571 571 <div>parents: </div>
572 572 <a href="/diff/687f2d169546/primes.py">diff</a>
573 573 <a href="/rev/687f2d169546">changeset</a>
574 574 </div>
575 575 </td>
576 576 <td class="source followlines-btn-parent"><a href="#l15"> 15</a> <span class="kn">yield</span> <span class="n">p</span></td>
577 577 </tr>
578 578 <tr id="l16" class="thisrev">
579 579 <td class="annotate parity0">
580 580
581 581 <div class="annotate-info">
582 582 <div>
583 583 <a href="/annotate/687f2d169546/primes.py#l16">
584 584 687f2d169546</a>
585 585 a
586 586 </div>
587 587 <div><em>&#116;&#101;&#115;&#116;</em></div>
588 588 <div>parents: </div>
589 589 <a href="/diff/687f2d169546/primes.py">diff</a>
590 590 <a href="/rev/687f2d169546">changeset</a>
591 591 </div>
592 592 </td>
593 593 <td class="source followlines-btn-parent"><a href="#l16"> 16</a> <span class="n">ns</span> <span class="o">=</span> <span class="n">itertools</span><span class="o">.</span><span class="n">ifilter</span><span class="p">(</span><span class="kn">lambda</span> <span class="n">n</span><span class="p">:</span> <span class="n">n</span> <span class="o">%</span> <span class="n">p</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">,</span> <span class="n">ns</span><span class="p">)</span></td>
594 594 </tr>
595 595 <tr id="l17" class="thisrev">
596 596 <td class="annotate parity0">
597 597
598 598 <div class="annotate-info">
599 599 <div>
600 600 <a href="/annotate/687f2d169546/primes.py#l17">
601 601 687f2d169546</a>
602 602 a
603 603 </div>
604 604 <div><em>&#116;&#101;&#115;&#116;</em></div>
605 605 <div>parents: </div>
606 606 <a href="/diff/687f2d169546/primes.py">diff</a>
607 607 <a href="/rev/687f2d169546">changeset</a>
608 608 </div>
609 609 </td>
610 610 <td class="source followlines-btn-parent"><a href="#l17"> 17</a> <span class="kn">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="n">sieve</span><span class="p">(</span><span class="n">ns</span><span class="p">):</span></td>
611 611 </tr>
612 612 <tr id="l18" class="thisrev">
613 613 <td class="annotate parity0">
614 614
615 615 <div class="annotate-info">
616 616 <div>
617 617 <a href="/annotate/687f2d169546/primes.py#l18">
618 618 687f2d169546</a>
619 619 a
620 620 </div>
621 621 <div><em>&#116;&#101;&#115;&#116;</em></div>
622 622 <div>parents: </div>
623 623 <a href="/diff/687f2d169546/primes.py">diff</a>
624 624 <a href="/rev/687f2d169546">changeset</a>
625 625 </div>
626 626 </td>
627 627 <td class="source followlines-btn-parent"><a href="#l18"> 18</a> <span class="kn">yield</span> <span class="n">n</span></td>
628 628 </tr>
629 629 <tr id="l19" class="thisrev">
630 630 <td class="annotate parity0">
631 631
632 632 <div class="annotate-info">
633 633 <div>
634 634 <a href="/annotate/687f2d169546/primes.py#l19">
635 635 687f2d169546</a>
636 636 a
637 637 </div>
638 638 <div><em>&#116;&#101;&#115;&#116;</em></div>
639 639 <div>parents: </div>
640 640 <a href="/diff/687f2d169546/primes.py">diff</a>
641 641 <a href="/rev/687f2d169546">changeset</a>
642 642 </div>
643 643 </td>
644 644 <td class="source followlines-btn-parent"><a href="#l19"> 19</a> </td>
645 645 </tr>
646 646 <tr id="l20" class="thisrev">
647 647 <td class="annotate parity0">
648 648
649 649 <div class="annotate-info">
650 650 <div>
651 651 <a href="/annotate/687f2d169546/primes.py#l20">
652 652 687f2d169546</a>
653 653 a
654 654 </div>
655 655 <div><em>&#116;&#101;&#115;&#116;</em></div>
656 656 <div>parents: </div>
657 657 <a href="/diff/687f2d169546/primes.py">diff</a>
658 658 <a href="/rev/687f2d169546">changeset</a>
659 659 </div>
660 660 </td>
661 661 <td class="source followlines-btn-parent"><a href="#l20"> 20</a> <span class="n">odds</span> <span class="o">=</span> <span class="n">itertools</span><span class="o">.</span><span class="n">ifilter</span><span class="p">(</span><span class="kn">lambda</span> <span class="n">i</span><span class="p">:</span> <span class="n">i</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">==</span> <span class="mi">1</span><span class="p">,</span> <span class="n">itertools</span><span class="o">.</span><span class="n">count</span><span class="p">())</span></td>
662 662 </tr>
663 663 <tr id="l21" class="thisrev">
664 664 <td class="annotate parity0">
665 665
666 666 <div class="annotate-info">
667 667 <div>
668 668 <a href="/annotate/687f2d169546/primes.py#l21">
669 669 687f2d169546</a>
670 670 a
671 671 </div>
672 672 <div><em>&#116;&#101;&#115;&#116;</em></div>
673 673 <div>parents: </div>
674 674 <a href="/diff/687f2d169546/primes.py">diff</a>
675 675 <a href="/rev/687f2d169546">changeset</a>
676 676 </div>
677 677 </td>
678 678 <td class="source followlines-btn-parent"><a href="#l21"> 21</a> <span class="n">dropwhile</span> <span class="o">=</span> <span class="n">itertools</span><span class="o">.</span><span class="n">dropwhile</span></td>
679 679 </tr>
680 680 <tr id="l22" class="thisrev">
681 681 <td class="annotate parity0">
682 682
683 683 <div class="annotate-info">
684 684 <div>
685 685 <a href="/annotate/687f2d169546/primes.py#l22">
686 686 687f2d169546</a>
687 687 a
688 688 </div>
689 689 <div><em>&#116;&#101;&#115;&#116;</em></div>
690 690 <div>parents: </div>
691 691 <a href="/diff/687f2d169546/primes.py">diff</a>
692 692 <a href="/rev/687f2d169546">changeset</a>
693 693 </div>
694 694 </td>
695 695 <td class="source followlines-btn-parent"><a href="#l22"> 22</a> <span class="kn">return</span> <span class="n">itertools</span><span class="o">.</span><span class="n">chain</span><span class="p">([</span><span class="mi">2</span><span class="p">],</span> <span class="n">sieve</span><span class="p">(</span><span class="n">dropwhile</span><span class="p">(</span><span class="kn">lambda</span> <span class="n">n</span><span class="p">:</span> <span class="n">n</span> <span class="o">&lt;</span> <span class="mi">3</span><span class="p">,</span> <span class="n">odds</span><span class="p">)))</span></td>
696 696 </tr>
697 697 <tr id="l23" class="thisrev">
698 698 <td class="annotate parity0">
699 699
700 700 <div class="annotate-info">
701 701 <div>
702 702 <a href="/annotate/687f2d169546/primes.py#l23">
703 703 687f2d169546</a>
704 704 a
705 705 </div>
706 706 <div><em>&#116;&#101;&#115;&#116;</em></div>
707 707 <div>parents: </div>
708 708 <a href="/diff/687f2d169546/primes.py">diff</a>
709 709 <a href="/rev/687f2d169546">changeset</a>
710 710 </div>
711 711 </td>
712 712 <td class="source followlines-btn-parent"><a href="#l23"> 23</a> </td>
713 713 </tr>
714 714 <tr id="l24" class="thisrev">
715 715 <td class="annotate parity0">
716 716
717 717 <div class="annotate-info">
718 718 <div>
719 719 <a href="/annotate/687f2d169546/primes.py#l24">
720 720 687f2d169546</a>
721 721 a
722 722 </div>
723 723 <div><em>&#116;&#101;&#115;&#116;</em></div>
724 724 <div>parents: </div>
725 725 <a href="/diff/687f2d169546/primes.py">diff</a>
726 726 <a href="/rev/687f2d169546">changeset</a>
727 727 </div>
728 728 </td>
729 729 <td class="source followlines-btn-parent"><a href="#l24"> 24</a> <span class="kn">if</span> <span class="n">__name__</span> <span class="o">==</span> <span class="s">&quot;__main__&quot;</span><span class="p">:</span></td>
730 730 </tr>
731 731 <tr id="l25" class="thisrev">
732 732 <td class="annotate parity0">
733 733
734 734 <div class="annotate-info">
735 735 <div>
736 736 <a href="/annotate/687f2d169546/primes.py#l25">
737 737 687f2d169546</a>
738 738 a
739 739 </div>
740 740 <div><em>&#116;&#101;&#115;&#116;</em></div>
741 741 <div>parents: </div>
742 742 <a href="/diff/687f2d169546/primes.py">diff</a>
743 743 <a href="/rev/687f2d169546">changeset</a>
744 744 </div>
745 745 </td>
746 746 <td class="source followlines-btn-parent"><a href="#l25"> 25</a> <span class="kn">import</span> <span class="nn">sys</span></td>
747 747 </tr>
748 748 <tr id="l26" class="thisrev">
749 749 <td class="annotate parity0">
750 750
751 751 <div class="annotate-info">
752 752 <div>
753 753 <a href="/annotate/687f2d169546/primes.py#l26">
754 754 687f2d169546</a>
755 755 a
756 756 </div>
757 757 <div><em>&#116;&#101;&#115;&#116;</em></div>
758 758 <div>parents: </div>
759 759 <a href="/diff/687f2d169546/primes.py">diff</a>
760 760 <a href="/rev/687f2d169546">changeset</a>
761 761 </div>
762 762 </td>
763 763 <td class="source followlines-btn-parent"><a href="#l26"> 26</a> <span class="kn">try</span><span class="p">:</span></td>
764 764 </tr>
765 765 <tr id="l27" class="thisrev">
766 766 <td class="annotate parity0">
767 767
768 768 <div class="annotate-info">
769 769 <div>
770 770 <a href="/annotate/687f2d169546/primes.py#l27">
771 771 687f2d169546</a>
772 772 a
773 773 </div>
774 774 <div><em>&#116;&#101;&#115;&#116;</em></div>
775 775 <div>parents: </div>
776 776 <a href="/diff/687f2d169546/primes.py">diff</a>
777 777 <a href="/rev/687f2d169546">changeset</a>
778 778 </div>
779 779 </td>
780 780 <td class="source followlines-btn-parent"><a href="#l27"> 27</a> <span class="n">n</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span></td>
781 781 </tr>
782 782 <tr id="l28" class="thisrev">
783 783 <td class="annotate parity0">
784 784
785 785 <div class="annotate-info">
786 786 <div>
787 787 <a href="/annotate/687f2d169546/primes.py#l28">
788 788 687f2d169546</a>
789 789 a
790 790 </div>
791 791 <div><em>&#116;&#101;&#115;&#116;</em></div>
792 792 <div>parents: </div>
793 793 <a href="/diff/687f2d169546/primes.py">diff</a>
794 794 <a href="/rev/687f2d169546">changeset</a>
795 795 </div>
796 796 </td>
797 797 <td class="source followlines-btn-parent"><a href="#l28"> 28</a> <span class="kn">except</span> <span class="p">(</span><span class="ne">ValueError</span><span class="p">,</span> <span class="ne">IndexError</span><span class="p">):</span></td>
798 798 </tr>
799 799 <tr id="l29" class="thisrev">
800 800 <td class="annotate parity0">
801 801
802 802 <div class="annotate-info">
803 803 <div>
804 804 <a href="/annotate/687f2d169546/primes.py#l29">
805 805 687f2d169546</a>
806 806 a
807 807 </div>
808 808 <div><em>&#116;&#101;&#115;&#116;</em></div>
809 809 <div>parents: </div>
810 810 <a href="/diff/687f2d169546/primes.py">diff</a>
811 811 <a href="/rev/687f2d169546">changeset</a>
812 812 </div>
813 813 </td>
814 814 <td class="source followlines-btn-parent"><a href="#l29"> 29</a> <span class="n">n</span> <span class="o">=</span> <span class="mi">10</span></td>
815 815 </tr>
816 816 <tr id="l30" class="thisrev">
817 817 <td class="annotate parity0">
818 818
819 819 <div class="annotate-info">
820 820 <div>
821 821 <a href="/annotate/687f2d169546/primes.py#l30">
822 822 687f2d169546</a>
823 823 a
824 824 </div>
825 825 <div><em>&#116;&#101;&#115;&#116;</em></div>
826 826 <div>parents: </div>
827 827 <a href="/diff/687f2d169546/primes.py">diff</a>
828 828 <a href="/rev/687f2d169546">changeset</a>
829 829 </div>
830 830 </td>
831 831 <td class="source followlines-btn-parent"><a href="#l30"> 30</a> <span class="n">p</span> <span class="o">=</span> <span class="n">primes</span><span class="p">()</span></td>
832 832 </tr>
833 833 <tr id="l31" class="thisrev">
834 834 <td class="annotate parity0">
835 835
836 836 <div class="annotate-info">
837 837 <div>
838 838 <a href="/annotate/687f2d169546/primes.py#l31">
839 839 687f2d169546</a>
840 840 a
841 841 </div>
842 842 <div><em>&#116;&#101;&#115;&#116;</em></div>
843 843 <div>parents: </div>
844 844 <a href="/diff/687f2d169546/primes.py">diff</a>
845 845 <a href="/rev/687f2d169546">changeset</a>
846 846 </div>
847 847 </td>
848 848 <td class="source followlines-btn-parent"><a href="#l31"> 31</a> <span class="kn">print</span><span class="p">(</span><span class="s">&quot;The first </span><span class="si">%d</span><span class="s"> primes: </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">n</span><span class="p">,</span> <span class="nb">list</span><span class="p">(</span><span class="n">itertools</span><span class="o">.</span><span class="n">islice</span><span class="p">(</span><span class="n">p</span><span class="p">,</span> <span class="n">n</span><span class="p">))))</span></td>
849 849 </tr>
850 850 <tr id="l32" class="thisrev">
851 851 <td class="annotate parity0">
852 852
853 853 <div class="annotate-info">
854 854 <div>
855 855 <a href="/annotate/687f2d169546/primes.py#l32">
856 856 687f2d169546</a>
857 857 a
858 858 </div>
859 859 <div><em>&#116;&#101;&#115;&#116;</em></div>
860 860 <div>parents: </div>
861 861 <a href="/diff/687f2d169546/primes.py">diff</a>
862 862 <a href="/rev/687f2d169546">changeset</a>
863 863 </div>
864 864 </td>
865 865 <td class="source followlines-btn-parent"><a href="#l32"> 32</a> </td>
866 866 </tr>
867 867 </tbody>
868 868 </table>
869 869 </div>
870 870 </div>
871 871 </div>
872 872
873 873 <script type="text/javascript" src="/static/followlines.js"></script>
874 874
875 875
876 876
877 877 </body>
878 878 </html>
879 879
880 880
881 881 hgweb fileannotate, raw
882 882
883 883 $ (get-with-headers.py localhost:$HGPORT 'annotate/tip/primes.py?style=raw') \
884 884 > | sed "s/test@//" > a
885 885 $ echo "200 Script output follows" > b
886 886 $ echo "" >> b
887 887 $ echo "" >> b
888 888 $ hg annotate "primes.py" >> b
889 889 $ echo "" >> b
890 890 $ echo "" >> b
891 891 $ echo "" >> b
892 892 $ echo "" >> b
893 893 $ cmp b a || diff -u b a
894 894
895 895 hgweb filerevision, raw
896 896
897 897 $ (get-with-headers.py localhost:$HGPORT 'file/tip/primes.py?style=raw') \
898 898 > > a
899 899 $ echo "200 Script output follows" > b
900 900 $ echo "" >> b
901 901 $ hg cat primes.py >> b
902 902 $ cmp b a || diff -u b a
903 903
904 904 hgweb highlightcss friendly
905 905
906 906 $ get-with-headers.py localhost:$HGPORT 'highlightcss' > out
907 907 $ head -n 4 out
908 908 200 Script output follows
909 909
910 910 /* pygments_style = friendly */
911 911
912 912 $ rm out
913 913
914 914 errors encountered
915 915
916 916 $ cat errors.log
917 917 $ killdaemons.py
918 918
919 919 Change the pygments style
920 920
921 921 $ cat > .hg/hgrc <<EOF
922 922 > [web]
923 923 > pygments_style = fruity
924 924 > EOF
925 925
926 926 hg serve again
927 927
928 928 $ hg serve -p $HGPORT -d -n test --pid-file=hg.pid -A access.log -E errors.log
929 929 $ cat hg.pid >> $DAEMON_PIDS
930 930
931 931 hgweb highlightcss fruity
932 932
933 933 $ get-with-headers.py localhost:$HGPORT 'highlightcss' > out
934 934 $ head -n 4 out
935 935 200 Script output follows
936 936
937 937 /* pygments_style = fruity */
938 938
939 939 $ rm out
940 940
941 941 errors encountered
942 942
943 943 $ cat errors.log
944 944 $ killdaemons.py
945 945
946 946 only highlight C source files
947 947
948 948 $ cat > .hg/hgrc <<EOF
949 949 > [web]
950 950 > highlightfiles = **.c
951 951 > EOF
952 952
953 953 hg serve again
954 954
955 955 $ hg serve -p $HGPORT -d -n test --pid-file=hg.pid -A access.log -E errors.log
956 956 $ cat hg.pid >> $DAEMON_PIDS
957 957
958 958 test that fileset in highlightfiles works and primes.py is not highlighted
959 959
960 960 $ get-with-headers.py localhost:$HGPORT 'file/tip/primes.py' | grep 'id="l11"'
961 961 <span id="l11"> def sieve(ns):</span><a href="#l11"></a>
962 962
963 963 errors encountered
964 964
965 965 $ cat errors.log
966 966 $ cd ..
967 967 $ hg init eucjp
968 968 $ cd eucjp
969 $ "$PYTHON" -c 'print("\265\376")' >> eucjp.txt # Japanese kanji "Kyo"
969 >>> with open('eucjp.txt', 'wb') as fh:
970 ... # Japanese kanji "Kyo"
971 ... fh.write(u'\265\376'.encode('utf-8')) and None
970 972 $ hg ci -Ama
971 973 adding eucjp.txt
972 974 $ hgserveget () {
973 975 > killdaemons.py
974 976 > echo % HGENCODING="$1" hg serve
975 977 > HGENCODING="$1" hg serve -p $HGPORT -d -n test --pid-file=hg.pid -E errors.log
976 978 > cat hg.pid >> $DAEMON_PIDS
977 979 >
978 980 > echo % hgweb filerevision, html
979 981 > get-with-headers.py localhost:$HGPORT "file/tip/$2" \
980 982 > | grep '<div class="parity0 source">'
981 983 > echo % errors encountered
982 984 > cat errors.log
983 985 > }
984 986 $ hgserveget euc-jp eucjp.txt
985 987 % HGENCODING=euc-jp hg serve
986 988 % hgweb filerevision, html
987 989 % errors encountered
988 990 $ hgserveget utf-8 eucjp.txt
989 991 % HGENCODING=utf-8 hg serve
990 992 % hgweb filerevision, html
991 993 % errors encountered
992 994 $ hgserveget us-ascii eucjp.txt
993 995 % HGENCODING=us-ascii hg serve
994 996 % hgweb filerevision, html
995 997 % errors encountered
996 998
997 999 We attempt to highlight unknown files by default
998 1000
999 1001 $ killdaemons.py
1000 1002
1001 1003 $ cat > .hg/hgrc << EOF
1002 1004 > [web]
1003 1005 > highlightfiles = **
1004 1006 > EOF
1005 1007
1006 1008 $ cat > unknownfile << EOF
1007 1009 > #!$PYTHON
1008 1010 > def foo():
1009 1011 > pass
1010 1012 > EOF
1011 1013
1012 1014 $ hg add unknownfile
1013 1015 $ hg commit -m unknown unknownfile
1014 1016
1015 1017 $ hg serve -p $HGPORT -d -n test --pid-file=hg.pid
1016 1018 $ cat hg.pid >> $DAEMON_PIDS
1017 1019
1018 1020 $ get-with-headers.py localhost:$HGPORT 'file/tip/unknownfile' | grep l2
1019 1021 <span id="l2"><span class="k">def</span> <span class="nf">foo</span><span class="p">():</span></span><a href="#l2"></a>
1020 1022
1021 1023 We can prevent Pygments from falling back to a non filename-based
1022 1024 detection mode
1023 1025
1024 1026 $ cat > .hg/hgrc << EOF
1025 1027 > [web]
1026 1028 > highlightfiles = **
1027 1029 > highlightonlymatchfilename = true
1028 1030 > EOF
1029 1031
1030 1032 $ killdaemons.py
1031 1033 $ hg serve -p $HGPORT -d -n test --pid-file=hg.pid
1032 1034 $ cat hg.pid >> $DAEMON_PIDS
1033 1035 $ get-with-headers.py localhost:$HGPORT 'file/tip/unknownfile' | grep l2
1034 1036 <span id="l2">def foo():</span><a href="#l2"></a>
1035 1037
1036 1038 $ cd ..
General Comments 0
You need to be logged in to leave comments. Login now