# HG changeset patch # User Matt Mackall # Date 1285526492 18000 # Node ID 981ce49a243fc6c5427c0acab84bdab54712a66b # Parent a4c19a9007941f03ecc843b7838f0f67d9dbf834 tests: unify test-highlight diff -r a4c19a900794 -r 981ce49a243f tests/test-highlight --- a/tests/test-highlight Sun Sep 26 13:41:32 2010 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,141 +0,0 @@ -#!/bin/sh - -"$TESTDIR/hghave" pygments || exit 80 - -cat <> $HGRCPATH -[extensions] -highlight = -[web] -pygments_style = friendly -EOF - -hg init test -cd test -# create random Python file to exercise Pygments -cat < primes.py -#!/usr/bin/env python - -"""Fun with generators. Corresponding Haskell implementation: - -primes = 2 : sieve [3, 5..] - where sieve (p:ns) = p : sieve [n | n <- ns, mod n p /= 0] -""" - -from itertools import dropwhile, ifilter, islice, count, chain - -def primes(): - """Generate all primes.""" - def sieve(ns): - p = ns.next() - # It is important to yield *here* in order to stop the - # infinite recursion. - yield p - ns = ifilter(lambda n: n % p != 0, ns) - for n in sieve(ns): - yield n - - odds = ifilter(lambda i: i % 2 == 1, count()) - return chain([2], sieve(dropwhile(lambda n: n < 3, odds))) - -if __name__ == "__main__": - import sys - try: - n = int(sys.argv[1]) - except (ValueError, IndexError): - n = 10 - p = primes() - print "The first %d primes: %s" % (n, list(islice(p, n))) -EOF - -hg ci -Ama - -echo % hg serve -hg serve -p $HGPORT -d -n test --pid-file=hg.pid -A access.log -E errors.log -cat hg.pid >> $DAEMON_PIDS - -echo % hgweb filerevision, html -("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/tip/primes.py') \ - | sed "s/class=\"k\"/class=\"kn\"/g" | sed "s/class=\"mf\"/class=\"mi\"/g" - -echo % hgweb fileannotate, html -("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/annotate/tip/primes.py') \ - | sed "s/class=\"k\"/class=\"kn\"/g" | sed "s/class=\"mi\"/class=\"mf\"/g" - -echo % hgweb fileannotate, raw -("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/annotate/tip/primes.py?style=raw') \ - | sed "s/test@//" > a - -echo "200 Script output follows" > b -echo "" >> b -echo "" >> b -hg annotate "primes.py" >> b -echo "" >> b -echo "" >> b -echo "" >> b -echo "" >> b - -diff -u b a - -echo -echo % hgweb filerevision, raw -("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/tip/primes.py?style=raw') \ - > a - -echo "200 Script output follows" > b -echo "" >> b -hg cat primes.py >> b - -diff -u b a - -echo -echo % hgweb highlightcss friendly -"$TESTDIR/get-with-headers.py" localhost:$HGPORT '/highlightcss' > out -head -n 4 out -rm out - -echo % errors encountered -cat errors.log -"$TESTDIR/killdaemons.py" - -# Change the pygments style -cat > .hg/hgrc <> $DAEMON_PIDS - -echo % hgweb highlightcss fruity -"$TESTDIR/get-with-headers.py" localhost:$HGPORT '/highlightcss' > out -head -n 4 out -rm out - -echo % errors encountered -cat errors.log - -cd .. -hg init eucjp -cd eucjp - -python -c 'print("\265\376")' >> eucjp.txt # Japanese kanji "Kyo" - -hg ci -Ama - -hgserveget () { - "$TESTDIR/killdaemons.py" - echo % HGENCODING="$1" hg serve - HGENCODING="$1" hg serve -p $HGPORT -d -n test --pid-file=hg.pid -E errors.log - cat hg.pid >> $DAEMON_PIDS - - echo % hgweb filerevision, html - "$TESTDIR/get-with-headers.py" localhost:$HGPORT "/file/tip/$2" \ - | grep '
' | $TESTDIR/printrepr.py - echo % errors encountered - cat errors.log -} - -hgserveget euc-jp eucjp.txt -hgserveget utf-8 eucjp.txt -hgserveget us-ascii eucjp.txt diff -r a4c19a900794 -r 981ce49a243f tests/test-highlight.out --- a/tests/test-highlight.out Sun Sep 26 13:41:32 2010 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,467 +0,0 @@ -adding primes.py -% hg serve -% hgweb filerevision, html -200 Script output follows - - - - - - - - - -test: 853dcd4de2a6 primes.py - - - -
- - -
-

test

-

view primes.py @ 0:853dcd4de2a6

- - - -
a
- - - - - - - - - - - - - - - - - - - -
authortest
dateThu Jan 01 00:00:00 1970 +0000 (1970-01-01)
parents
children
- -
-
line source
- -
1 #!/usr/bin/env python
- -
3 """Fun with generators. Corresponding Haskell implementation:
- -
5 primes = 2 : sieve [3, 5..]
-
6 where sieve (p:ns) = p : sieve [n | n <- ns, mod n p /= 0]
-
7 """
- -
9 from itertools import dropwhile, ifilter, islice, count, chain
- -
11 def primes():
-
12 """Generate all primes."""
-
13 def sieve(ns):
-
14 p = ns.next()
-
15 # It is important to yield *here* in order to stop the
-
16 # infinite recursion.
-
17 yield p
-
18 ns = ifilter(lambda n: n % p != 0, ns)
-
19 for n in sieve(ns):
-
20 yield n
- -
22 odds = ifilter(lambda i: i % 2 == 1, count())
-
23 return chain([2], sieve(dropwhile(lambda n: n < 3, odds)))
- -
25 if __name__ == "__main__":
-
26 import sys
-
27 try:
-
28 n = int(sys.argv[1])
-
29 except (ValueError, IndexError):
-
30 n = 10
-
31 p = primes()
-
32 print "The first %d primes: %s" % (n, list(islice(p, n)))
-
-
-
-
- - - - - - -% hgweb fileannotate, html -200 Script output follows - - - - - - - - - -test: primes.py annotate - - - -
- - -
-

test

-

annotate primes.py @ 0:853dcd4de2a6

- - - -
a
- - - - - - - - - - - - - - - - - - - -
authortest
dateThu Jan 01 00:00:00 1970 +0000 (1970-01-01)
parents
children
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
rev  line source
-test@0 - 1 #!/usr/bin/env python
-test@0 - 2
-test@0 - 3 """Fun with generators. Corresponding Haskell implementation:
-test@0 - 4
-test@0 - 5 primes = 2 : sieve [3, 5..]
-test@0 - 6 where sieve (p:ns) = p : sieve [n | n <- ns, mod n p /= 0]
-test@0 - 7 """
-test@0 - 8
-test@0 - 9 from itertools import dropwhile, ifilter, islice, count, chain
-test@0 - 10
-test@0 - 11 def primes():
-test@0 - 12 """Generate all primes."""
-test@0 - 13 def sieve(ns):
-test@0 - 14 p = ns.next()
-test@0 - 15 # It is important to yield *here* in order to stop the
-test@0 - 16 # infinite recursion.
-test@0 - 17 yield p
-test@0 - 18 ns = ifilter(lambda n: n % p != 0, ns)
-test@0 - 19 for n in sieve(ns):
-test@0 - 20 yield n
-test@0 - 21
-test@0 - 22 odds = ifilter(lambda i: i % 2 == 1, count())
-test@0 - 23 return chain([2], sieve(dropwhile(lambda n: n < 3, odds)))
-test@0 - 24
-test@0 - 25 if __name__ == "__main__":
-test@0 - 26 import sys
-test@0 - 27 try:
-test@0 - 28 n = int(sys.argv[1])
-test@0 - 29 except (ValueError, IndexError):
-test@0 - 30 n = 10
-test@0 - 31 p = primes()
-test@0 - 32 print "The first %d primes: %s" % (n, list(islice(p, n)))
-
-
-
- - - - - - -% hgweb fileannotate, raw - -% hgweb filerevision, raw - -% hgweb highlightcss friendly -200 Script output follows - -/* pygments_style = friendly */ - -% errors encountered -% hg serve again -% hgweb highlightcss fruity -200 Script output follows - -/* pygments_style = fruity */ - -% errors encountered -adding eucjp.txt -% HGENCODING=euc-jp hg serve -% hgweb filerevision, html -
1 \xb5\xfe
-% errors encountered -% HGENCODING=utf-8 hg serve -% hgweb filerevision, html -
1 \xef\xbf\xbd\xef\xbf\xbd
-% errors encountered -% HGENCODING=us-ascii hg serve -% hgweb filerevision, html -
1 ??
-% errors encountered diff -r a4c19a900794 -r 981ce49a243f tests/test-highlight.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-highlight.t Sun Sep 26 13:41:32 2010 -0500 @@ -0,0 +1,598 @@ + + $ "$TESTDIR/hghave" pygments || exit 80 + $ cat <> $HGRCPATH + > [extensions] + > highlight = + > [web] + > pygments_style = friendly + > EOF + $ hg init test + $ cd test + +create random Python file to exercise Pygments + + $ cat < primes.py + > #!/usr/bin/env python + > + > """Fun with generators. Corresponding Haskell implementation: + > + > primes = 2 : sieve [3, 5..] + > where sieve (p:ns) = p : sieve [n | n <- ns, mod n p /= 0] + > """ + > + > from itertools import dropwhile, ifilter, islice, count, chain + > + > def primes(): + > """Generate all primes.""" + > def sieve(ns): + > p = ns.next() + > # It is important to yield *here* in order to stop the + > # infinite recursion. + > yield p + > ns = ifilter(lambda n: n % p != 0, ns) + > for n in sieve(ns): + > yield n + > + > odds = ifilter(lambda i: i % 2 == 1, count()) + > return chain([2], sieve(dropwhile(lambda n: n < 3, odds))) + > + > if __name__ == "__main__": + > import sys + > try: + > n = int(sys.argv[1]) + > except (ValueError, IndexError): + > n = 10 + > p = primes() + > print "The first %d primes: %s" % (n, list(islice(p, n))) + > EOF + $ hg ci -Ama + adding primes.py + +hg serve + + $ hg serve -p $HGPORT -d -n test --pid-file=hg.pid -A access.log -E errors.log + $ cat hg.pid >> $DAEMON_PIDS + +hgweb filerevision, html + + $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/tip/primes.py') \ + > | sed "s/class=\"k\"/class=\"kn\"/g" | sed "s/class=\"mf\"/class=\"mi\"/g" + 200 Script output follows + + + + + + + + + + test: 853dcd4de2a6 primes.py + + + +
+ + +
+

test

+

view primes.py @ 0:853dcd4de2a6

+ + + +
a
+ + + + + + + + + + + + + + + + + + + +
authortest
dateThu Jan 01 00:00:00 1970 +0000 (1970-01-01)
parents
children
+ +
+
line source
+ +
1 #!/usr/bin/env python
+ +
3 """Fun with generators. Corresponding Haskell implementation:
+ +
5 primes = 2 : sieve [3, 5..]
+
6 where sieve (p:ns) = p : sieve [n | n <- ns, mod n p /= 0]
+
7 """
+ +
9 from itertools import dropwhile, ifilter, islice, count, chain
+ +
11 def primes():
+
12 """Generate all primes."""
+
13 def sieve(ns):
+
14 p = ns.next()
+
15 # It is important to yield *here* in order to stop the
+
16 # infinite recursion.
+
17 yield p
+
18 ns = ifilter(lambda n: n % p != 0, ns)
+
19 for n in sieve(ns):
+
20 yield n
+ +
22 odds = ifilter(lambda i: i % 2 == 1, count())
+
23 return chain([2], sieve(dropwhile(lambda n: n < 3, odds)))
+ +
25 if __name__ == "__main__":
+
26 import sys
+
27 try:
+
28 n = int(sys.argv[1])
+
29 except (ValueError, IndexError):
+
30 n = 10
+
31 p = primes()
+
32 print "The first %d primes: %s" % (n, list(islice(p, n)))
+
+
+
+
+ + + + + + + +hgweb fileannotate, html + + $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/annotate/tip/primes.py') \ + > | sed "s/class=\"k\"/class=\"kn\"/g" | sed "s/class=\"mi\"/class=\"mf\"/g" + 200 Script output follows + + + + + + + + + + test: primes.py annotate + + + +
+ + +
+

test

+

annotate primes.py @ 0:853dcd4de2a6

+ + + +
a
+ + + + + + + + + + + + + + + + + + + +
authortest
dateThu Jan 01 00:00:00 1970 +0000 (1970-01-01)
parents
children
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
rev  line source
+ test@0 + 1 #!/usr/bin/env python
+ test@0 + 2
+ test@0 + 3 """Fun with generators. Corresponding Haskell implementation:
+ test@0 + 4
+ test@0 + 5 primes = 2 : sieve [3, 5..]
+ test@0 + 6 where sieve (p:ns) = p : sieve [n | n <- ns, mod n p /= 0]
+ test@0 + 7 """
+ test@0 + 8
+ test@0 + 9 from itertools import dropwhile, ifilter, islice, count, chain
+ test@0 + 10
+ test@0 + 11 def primes():
+ test@0 + 12 """Generate all primes."""
+ test@0 + 13 def sieve(ns):
+ test@0 + 14 p = ns.next()
+ test@0 + 15 # It is important to yield *here* in order to stop the
+ test@0 + 16 # infinite recursion.
+ test@0 + 17 yield p
+ test@0 + 18 ns = ifilter(lambda n: n % p != 0, ns)
+ test@0 + 19 for n in sieve(ns):
+ test@0 + 20 yield n
+ test@0 + 21
+ test@0 + 22 odds = ifilter(lambda i: i % 2 == 1, count())
+ test@0 + 23 return chain([2], sieve(dropwhile(lambda n: n < 3, odds)))
+ test@0 + 24
+ test@0 + 25 if __name__ == "__main__":
+ test@0 + 26 import sys
+ test@0 + 27 try:
+ test@0 + 28 n = int(sys.argv[1])
+ test@0 + 29 except (ValueError, IndexError):
+ test@0 + 30 n = 10
+ test@0 + 31 p = primes()
+ test@0 + 32 print "The first %d primes: %s" % (n, list(islice(p, n)))
+
+
+
+ + + + + + + +hgweb fileannotate, raw + + $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/annotate/tip/primes.py?style=raw') \ + > | sed "s/test@//" > a + $ echo "200 Script output follows" > b + $ echo "" >> b + $ echo "" >> b + $ hg annotate "primes.py" >> b + $ echo "" >> b + $ echo "" >> b + $ echo "" >> b + $ echo "" >> b + $ diff -u b a + $ echo + + +hgweb filerevision, raw + + $ ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/tip/primes.py?style=raw') \ + > > a + $ echo "200 Script output follows" > b + $ echo "" >> b + $ hg cat primes.py >> b + $ diff -u b a + $ echo + + +hgweb highlightcss friendly + + $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/highlightcss' > out + $ head -n 4 out + 200 Script output follows + + /* pygments_style = friendly */ + + $ rm out + +errors encountered + + $ cat errors.log + $ "$TESTDIR/killdaemons.py" + +Change the pygments style + + $ cat > .hg/hgrc < [web] + > pygments_style = fruity + > EOF + +hg serve again + + $ hg serve -p $HGPORT -d -n test --pid-file=hg.pid -A access.log -E errors.log + $ cat hg.pid >> $DAEMON_PIDS + +hgweb highlightcss fruity + + $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/highlightcss' > out + $ head -n 4 out + 200 Script output follows + + /* pygments_style = fruity */ + + $ rm out + +errors encountered + + $ cat errors.log + $ cd .. + $ hg init eucjp + $ cd eucjp + $ python -c 'print("\265\376")' >> eucjp.txt # Japanese kanji "Kyo" + $ hg ci -Ama + adding eucjp.txt + $ hgserveget () { + > "$TESTDIR/killdaemons.py" + > echo % HGENCODING="$1" hg serve + > HGENCODING="$1" hg serve -p $HGPORT -d -n test --pid-file=hg.pid -E errors.log + > cat hg.pid >> $DAEMON_PIDS + > + > echo % hgweb filerevision, html + > "$TESTDIR/get-with-headers.py" localhost:$HGPORT "/file/tip/$2" \ + > | grep '
' | $TESTDIR/printrepr.py + > echo % errors encountered + > cat errors.log + > } + $ hgserveget euc-jp eucjp.txt + % HGENCODING=euc-jp hg serve + % hgweb filerevision, html +
1 \xb5\xfe
+ % errors encountered + $ hgserveget utf-8 eucjp.txt + % HGENCODING=utf-8 hg serve + % hgweb filerevision, html +
1 \xef\xbf\xbd\xef\xbf\xbd
+ % errors encountered + $ hgserveget us-ascii eucjp.txt + % HGENCODING=us-ascii hg serve + % hgweb filerevision, html +
1 ??
+ % errors encountered