tests/test-unified-test.t
author Laurent Charignon <lcharignon@fb.com>
Thu, 23 Apr 2015 14:27:26 -0700
branchstable
changeset 24845 8133494accf1
parent 22565 8d45a42b0c0f
child 25472 4d2b9b304ad0
permissions -rw-r--r--
record: edit patch of newly added files (issue4304) I tried to fix this issue in the past and had to revert the fix. This is a second attempt without the regression we found with the first one. record defines special headers (of file) as headers whose hunk are not shown to the user for editing, they are used to represent deleted, moved and new files. Since we want to authorize editing the patch of newly added file we make the newly added file with some content not special anymore. This entails that we have to save their content before applying the backup to be able to revert it if the patch does not apply properly. We reintroduce the test showing that newly added files can be edited and that their content is shown to the user.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
21731
204f6a6e9b57 tests: comment the main purpose of ``test-unified-test.t``
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21729
diff changeset
     1
Test that the syntax of "unified tests" is properly processed
204f6a6e9b57 tests: comment the main purpose of ``test-unified-test.t``
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21729
diff changeset
     2
==============================================================
204f6a6e9b57 tests: comment the main purpose of ``test-unified-test.t``
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 21729
diff changeset
     3
12375
02990e22150b tests: require regexes in unified tests to be marked with " (re)"
Brodie Rao <brodie@bitheap.org>
parents:
diff changeset
     4
Simple commands:
02990e22150b tests: require regexes in unified tests to be marked with " (re)"
Brodie Rao <brodie@bitheap.org>
parents:
diff changeset
     5
02990e22150b tests: require regexes in unified tests to be marked with " (re)"
Brodie Rao <brodie@bitheap.org>
parents:
diff changeset
     6
  $ echo foo
02990e22150b tests: require regexes in unified tests to be marked with " (re)"
Brodie Rao <brodie@bitheap.org>
parents:
diff changeset
     7
  foo
12940
518dd70d1a6e tests: (no-eol) markup for command output without trailing LF
Mads Kiilerich <mads@kiilerich.com>
parents: 12406
diff changeset
     8
  $ printf 'oh no'
518dd70d1a6e tests: (no-eol) markup for command output without trailing LF
Mads Kiilerich <mads@kiilerich.com>
parents: 12406
diff changeset
     9
  oh no (no-eol)
12377
a5b77eb0409b tests: various fixes for new unified test pattern format
Matt Mackall <mpm@selenic.com>
parents: 12376
diff changeset
    10
  $ printf 'bar\nbaz\n' | cat
12375
02990e22150b tests: require regexes in unified tests to be marked with " (re)"
Brodie Rao <brodie@bitheap.org>
parents:
diff changeset
    11
  bar
02990e22150b tests: require regexes in unified tests to be marked with " (re)"
Brodie Rao <brodie@bitheap.org>
parents:
diff changeset
    12
  baz
02990e22150b tests: require regexes in unified tests to be marked with " (re)"
Brodie Rao <brodie@bitheap.org>
parents:
diff changeset
    13
02990e22150b tests: require regexes in unified tests to be marked with " (re)"
Brodie Rao <brodie@bitheap.org>
parents:
diff changeset
    14
Multi-line command:
02990e22150b tests: require regexes in unified tests to be marked with " (re)"
Brodie Rao <brodie@bitheap.org>
parents:
diff changeset
    15
02990e22150b tests: require regexes in unified tests to be marked with " (re)"
Brodie Rao <brodie@bitheap.org>
parents:
diff changeset
    16
  $ foo() {
02990e22150b tests: require regexes in unified tests to be marked with " (re)"
Brodie Rao <brodie@bitheap.org>
parents:
diff changeset
    17
  >     echo bar
02990e22150b tests: require regexes in unified tests to be marked with " (re)"
Brodie Rao <brodie@bitheap.org>
parents:
diff changeset
    18
  > }
02990e22150b tests: require regexes in unified tests to be marked with " (re)"
Brodie Rao <brodie@bitheap.org>
parents:
diff changeset
    19
  $ foo
02990e22150b tests: require regexes in unified tests to be marked with " (re)"
Brodie Rao <brodie@bitheap.org>
parents:
diff changeset
    20
  bar
02990e22150b tests: require regexes in unified tests to be marked with " (re)"
Brodie Rao <brodie@bitheap.org>
parents:
diff changeset
    21
15434
5635a4017061 run-tests: replace inline python handling with more native scheme
Matt Mackall <mpm@selenic.com>
parents: 15249
diff changeset
    22
Return codes before inline python:
5635a4017061 run-tests: replace inline python handling with more native scheme
Matt Mackall <mpm@selenic.com>
parents: 15249
diff changeset
    23
16014
f8955a7f82e6 tests: don't rely on 'false' exit code in test-run-tests.t
Mads Kiilerich <mads@kiilerich.com>
parents: 15434
diff changeset
    24
  $ sh -c 'exit 1'
15434
5635a4017061 run-tests: replace inline python handling with more native scheme
Matt Mackall <mpm@selenic.com>
parents: 15249
diff changeset
    25
  [1]
5635a4017061 run-tests: replace inline python handling with more native scheme
Matt Mackall <mpm@selenic.com>
parents: 15249
diff changeset
    26
15249
f30c0a7b8346 tests: add basic tests for doctest syntax
Idan Kamara <idankk86@gmail.com>
parents: 12940
diff changeset
    27
Doctest commands:
f30c0a7b8346 tests: add basic tests for doctest syntax
Idan Kamara <idankk86@gmail.com>
parents: 12940
diff changeset
    28
f30c0a7b8346 tests: add basic tests for doctest syntax
Idan Kamara <idankk86@gmail.com>
parents: 12940
diff changeset
    29
  >>> print 'foo'
f30c0a7b8346 tests: add basic tests for doctest syntax
Idan Kamara <idankk86@gmail.com>
parents: 12940
diff changeset
    30
  foo
f30c0a7b8346 tests: add basic tests for doctest syntax
Idan Kamara <idankk86@gmail.com>
parents: 12940
diff changeset
    31
  $ echo interleaved
f30c0a7b8346 tests: add basic tests for doctest syntax
Idan Kamara <idankk86@gmail.com>
parents: 12940
diff changeset
    32
  interleaved
f30c0a7b8346 tests: add basic tests for doctest syntax
Idan Kamara <idankk86@gmail.com>
parents: 12940
diff changeset
    33
  >>> for c in 'xyz':
f30c0a7b8346 tests: add basic tests for doctest syntax
Idan Kamara <idankk86@gmail.com>
parents: 12940
diff changeset
    34
  ...     print c
f30c0a7b8346 tests: add basic tests for doctest syntax
Idan Kamara <idankk86@gmail.com>
parents: 12940
diff changeset
    35
  x
f30c0a7b8346 tests: add basic tests for doctest syntax
Idan Kamara <idankk86@gmail.com>
parents: 12940
diff changeset
    36
  y
f30c0a7b8346 tests: add basic tests for doctest syntax
Idan Kamara <idankk86@gmail.com>
parents: 12940
diff changeset
    37
  z
f30c0a7b8346 tests: add basic tests for doctest syntax
Idan Kamara <idankk86@gmail.com>
parents: 12940
diff changeset
    38
  >>> print
15434
5635a4017061 run-tests: replace inline python handling with more native scheme
Matt Mackall <mpm@selenic.com>
parents: 15249
diff changeset
    39
  
22564
9599e86159ac heredoctest: use the same dict for local/global contexts as in doctest
Yuya Nishihara <yuya@tcha.org>
parents: 21731
diff changeset
    40
  >>> foo = 'global name'
9599e86159ac heredoctest: use the same dict for local/global contexts as in doctest
Yuya Nishihara <yuya@tcha.org>
parents: 21731
diff changeset
    41
  >>> def func():
9599e86159ac heredoctest: use the same dict for local/global contexts as in doctest
Yuya Nishihara <yuya@tcha.org>
parents: 21731
diff changeset
    42
  ...     print foo, 'should be visible in func()'
9599e86159ac heredoctest: use the same dict for local/global contexts as in doctest
Yuya Nishihara <yuya@tcha.org>
parents: 21731
diff changeset
    43
  >>> func()
9599e86159ac heredoctest: use the same dict for local/global contexts as in doctest
Yuya Nishihara <yuya@tcha.org>
parents: 21731
diff changeset
    44
  global name should be visible in func()
22565
8d45a42b0c0f heredoctest: do not append extra newline character to continuation line
Yuya Nishihara <yuya@tcha.org>
parents: 22564
diff changeset
    45
  >>> print '''multiline
8d45a42b0c0f heredoctest: do not append extra newline character to continuation line
Yuya Nishihara <yuya@tcha.org>
parents: 22564
diff changeset
    46
  ... string'''
8d45a42b0c0f heredoctest: do not append extra newline character to continuation line
Yuya Nishihara <yuya@tcha.org>
parents: 22564
diff changeset
    47
  multiline
8d45a42b0c0f heredoctest: do not append extra newline character to continuation line
Yuya Nishihara <yuya@tcha.org>
parents: 22564
diff changeset
    48
  string
15249
f30c0a7b8346 tests: add basic tests for doctest syntax
Idan Kamara <idankk86@gmail.com>
parents: 12940
diff changeset
    49
12375
02990e22150b tests: require regexes in unified tests to be marked with " (re)"
Brodie Rao <brodie@bitheap.org>
parents:
diff changeset
    50
Regular expressions:
02990e22150b tests: require regexes in unified tests to be marked with " (re)"
Brodie Rao <brodie@bitheap.org>
parents:
diff changeset
    51
02990e22150b tests: require regexes in unified tests to be marked with " (re)"
Brodie Rao <brodie@bitheap.org>
parents:
diff changeset
    52
  $ echo foobarbaz
02990e22150b tests: require regexes in unified tests to be marked with " (re)"
Brodie Rao <brodie@bitheap.org>
parents:
diff changeset
    53
  foobar.* (re)
02990e22150b tests: require regexes in unified tests to be marked with " (re)"
Brodie Rao <brodie@bitheap.org>
parents:
diff changeset
    54
  $ echo barbazquux
02990e22150b tests: require regexes in unified tests to be marked with " (re)"
Brodie Rao <brodie@bitheap.org>
parents:
diff changeset
    55
  .*quux.* (re)
02990e22150b tests: require regexes in unified tests to be marked with " (re)"
Brodie Rao <brodie@bitheap.org>
parents:
diff changeset
    56
12376
97ffc68f71d3 tests: add glob matching for unified tests
Brodie Rao <brodie@bitheap.org>
parents: 12375
diff changeset
    57
Globs:
97ffc68f71d3 tests: add glob matching for unified tests
Brodie Rao <brodie@bitheap.org>
parents: 12375
diff changeset
    58
12377
a5b77eb0409b tests: various fixes for new unified test pattern format
Matt Mackall <mpm@selenic.com>
parents: 12376
diff changeset
    59
  $ printf '* \\foobarbaz {10}\n'
12376
97ffc68f71d3 tests: add glob matching for unified tests
Brodie Rao <brodie@bitheap.org>
parents: 12375
diff changeset
    60
  \* \\fo?bar* {10} (glob)
97ffc68f71d3 tests: add glob matching for unified tests
Brodie Rao <brodie@bitheap.org>
parents: 12375
diff changeset
    61
12375
02990e22150b tests: require regexes in unified tests to be marked with " (re)"
Brodie Rao <brodie@bitheap.org>
parents:
diff changeset
    62
Literal match ending in " (re)":
02990e22150b tests: require regexes in unified tests to be marked with " (re)"
Brodie Rao <brodie@bitheap.org>
parents:
diff changeset
    63
02990e22150b tests: require regexes in unified tests to be marked with " (re)"
Brodie Rao <brodie@bitheap.org>
parents:
diff changeset
    64
  $ echo 'foo (re)'
02990e22150b tests: require regexes in unified tests to be marked with " (re)"
Brodie Rao <brodie@bitheap.org>
parents:
diff changeset
    65
  foo (re)
02990e22150b tests: require regexes in unified tests to be marked with " (re)"
Brodie Rao <brodie@bitheap.org>
parents:
diff changeset
    66
17777
af7c6bc48d8d run-tests: alternative way of handling \r on Windows
Mads Kiilerich <mads@kiilerich.com>
parents: 17345
diff changeset
    67
Windows: \r\n is handled like \n and can be escaped:
af7c6bc48d8d run-tests: alternative way of handling \r on Windows
Mads Kiilerich <mads@kiilerich.com>
parents: 17345
diff changeset
    68
af7c6bc48d8d run-tests: alternative way of handling \r on Windows
Mads Kiilerich <mads@kiilerich.com>
parents: 17345
diff changeset
    69
#if windows
17799
327fbe0b84fd test-run-tests.t: fix wrong test case for cr handling on Windows
Mads Kiilerich <mads@kiilerich.com>
parents: 17778
diff changeset
    70
  $ printf 'crlf\r\ncr\r\tcrlf\r\ncrlf\r\n'
17777
af7c6bc48d8d run-tests: alternative way of handling \r on Windows
Mads Kiilerich <mads@kiilerich.com>
parents: 17345
diff changeset
    71
  crlf
af7c6bc48d8d run-tests: alternative way of handling \r on Windows
Mads Kiilerich <mads@kiilerich.com>
parents: 17345
diff changeset
    72
  cr\r (no-eol) (esc)
af7c6bc48d8d run-tests: alternative way of handling \r on Windows
Mads Kiilerich <mads@kiilerich.com>
parents: 17345
diff changeset
    73
  \tcrlf (esc)
17799
327fbe0b84fd test-run-tests.t: fix wrong test case for cr handling on Windows
Mads Kiilerich <mads@kiilerich.com>
parents: 17778
diff changeset
    74
  crlf\r (esc)
17777
af7c6bc48d8d run-tests: alternative way of handling \r on Windows
Mads Kiilerich <mads@kiilerich.com>
parents: 17345
diff changeset
    75
#endif
af7c6bc48d8d run-tests: alternative way of handling \r on Windows
Mads Kiilerich <mads@kiilerich.com>
parents: 17345
diff changeset
    76
17778
80fe64581f3a run-tests: make it possible to combine (esc) with (glob) and (re)
Mads Kiilerich <mads@kiilerich.com>
parents: 17777
diff changeset
    77
Combining esc with other markups - and handling lines ending with \r instead of \n:
80fe64581f3a run-tests: make it possible to combine (esc) with (glob) and (re)
Mads Kiilerich <mads@kiilerich.com>
parents: 17777
diff changeset
    78
80fe64581f3a run-tests: make it possible to combine (esc) with (glob) and (re)
Mads Kiilerich <mads@kiilerich.com>
parents: 17777
diff changeset
    79
  $ printf 'foo/bar\r'
20602
8a2dfac89ad6 tests: glob match has a glob character for not getting a warning on windows
Simon Heimberg <simohe@besonet.ch>
parents: 17799
diff changeset
    80
  fo?/bar\r (no-eol) (glob) (esc)
17778
80fe64581f3a run-tests: make it possible to combine (esc) with (glob) and (re)
Mads Kiilerich <mads@kiilerich.com>
parents: 17777
diff changeset
    81
#if windows
80fe64581f3a run-tests: make it possible to combine (esc) with (glob) and (re)
Mads Kiilerich <mads@kiilerich.com>
parents: 17777
diff changeset
    82
  $ printf 'foo\\bar\r'
80fe64581f3a run-tests: make it possible to combine (esc) with (glob) and (re)
Mads Kiilerich <mads@kiilerich.com>
parents: 17777
diff changeset
    83
  foo/bar\r (no-eol) (glob) (esc)
80fe64581f3a run-tests: make it possible to combine (esc) with (glob) and (re)
Mads Kiilerich <mads@kiilerich.com>
parents: 17777
diff changeset
    84
#endif
80fe64581f3a run-tests: make it possible to combine (esc) with (glob) and (re)
Mads Kiilerich <mads@kiilerich.com>
parents: 17777
diff changeset
    85
  $ printf 'foo/bar\rfoo/bar\r'
80fe64581f3a run-tests: make it possible to combine (esc) with (glob) and (re)
Mads Kiilerich <mads@kiilerich.com>
parents: 17777
diff changeset
    86
  foo.bar\r \(no-eol\) (re) (esc)
80fe64581f3a run-tests: make it possible to combine (esc) with (glob) and (re)
Mads Kiilerich <mads@kiilerich.com>
parents: 17777
diff changeset
    87
  foo.bar\r \(no-eol\) (re)
80fe64581f3a run-tests: make it possible to combine (esc) with (glob) and (re)
Mads Kiilerich <mads@kiilerich.com>
parents: 17777
diff changeset
    88
16891
b0e8afdfa970 tests/hghave: implement #if true / #if false
Adrian Buehlmann <adrian@cadifra.com>
parents: 16842
diff changeset
    89
testing hghave
b0e8afdfa970 tests/hghave: implement #if true / #if false
Adrian Buehlmann <adrian@cadifra.com>
parents: 16842
diff changeset
    90
b0e8afdfa970 tests/hghave: implement #if true / #if false
Adrian Buehlmann <adrian@cadifra.com>
parents: 16842
diff changeset
    91
  $ "$TESTDIR/hghave" true
b0e8afdfa970 tests/hghave: implement #if true / #if false
Adrian Buehlmann <adrian@cadifra.com>
parents: 16842
diff changeset
    92
  $ "$TESTDIR/hghave" false
b0e8afdfa970 tests/hghave: implement #if true / #if false
Adrian Buehlmann <adrian@cadifra.com>
parents: 16842
diff changeset
    93
  skipped: missing feature: nail clipper
b0e8afdfa970 tests/hghave: implement #if true / #if false
Adrian Buehlmann <adrian@cadifra.com>
parents: 16842
diff changeset
    94
  [1]
b0e8afdfa970 tests/hghave: implement #if true / #if false
Adrian Buehlmann <adrian@cadifra.com>
parents: 16842
diff changeset
    95
  $ "$TESTDIR/hghave" no-true
b0e8afdfa970 tests/hghave: implement #if true / #if false
Adrian Buehlmann <adrian@cadifra.com>
parents: 16842
diff changeset
    96
  skipped: system supports yak shaving
b0e8afdfa970 tests/hghave: implement #if true / #if false
Adrian Buehlmann <adrian@cadifra.com>
parents: 16842
diff changeset
    97
  [1]
b0e8afdfa970 tests/hghave: implement #if true / #if false
Adrian Buehlmann <adrian@cadifra.com>
parents: 16842
diff changeset
    98
  $ "$TESTDIR/hghave" no-false
b0e8afdfa970 tests/hghave: implement #if true / #if false
Adrian Buehlmann <adrian@cadifra.com>
parents: 16842
diff changeset
    99
16842
a3ea092203a5 tests: introduce c-style conditional sections in .t tests
Mads Kiilerich <mads@kiilerich.com>
parents: 16014
diff changeset
   100
Conditional sections based on hghave:
a3ea092203a5 tests: introduce c-style conditional sections in .t tests
Mads Kiilerich <mads@kiilerich.com>
parents: 16014
diff changeset
   101
16891
b0e8afdfa970 tests/hghave: implement #if true / #if false
Adrian Buehlmann <adrian@cadifra.com>
parents: 16842
diff changeset
   102
#if true
b0e8afdfa970 tests/hghave: implement #if true / #if false
Adrian Buehlmann <adrian@cadifra.com>
parents: 16842
diff changeset
   103
  $ echo tested
b0e8afdfa970 tests/hghave: implement #if true / #if false
Adrian Buehlmann <adrian@cadifra.com>
parents: 16842
diff changeset
   104
  tested
b0e8afdfa970 tests/hghave: implement #if true / #if false
Adrian Buehlmann <adrian@cadifra.com>
parents: 16842
diff changeset
   105
#else
b0e8afdfa970 tests/hghave: implement #if true / #if false
Adrian Buehlmann <adrian@cadifra.com>
parents: 16842
diff changeset
   106
  $ echo skipped
b0e8afdfa970 tests/hghave: implement #if true / #if false
Adrian Buehlmann <adrian@cadifra.com>
parents: 16842
diff changeset
   107
#endif
b0e8afdfa970 tests/hghave: implement #if true / #if false
Adrian Buehlmann <adrian@cadifra.com>
parents: 16842
diff changeset
   108
b0e8afdfa970 tests/hghave: implement #if true / #if false
Adrian Buehlmann <adrian@cadifra.com>
parents: 16842
diff changeset
   109
#if false
16842
a3ea092203a5 tests: introduce c-style conditional sections in .t tests
Mads Kiilerich <mads@kiilerich.com>
parents: 16014
diff changeset
   110
  $ echo skipped
a3ea092203a5 tests: introduce c-style conditional sections in .t tests
Mads Kiilerich <mads@kiilerich.com>
parents: 16014
diff changeset
   111
#else
a3ea092203a5 tests: introduce c-style conditional sections in .t tests
Mads Kiilerich <mads@kiilerich.com>
parents: 16014
diff changeset
   112
  $ echo tested
a3ea092203a5 tests: introduce c-style conditional sections in .t tests
Mads Kiilerich <mads@kiilerich.com>
parents: 16014
diff changeset
   113
  tested
a3ea092203a5 tests: introduce c-style conditional sections in .t tests
Mads Kiilerich <mads@kiilerich.com>
parents: 16014
diff changeset
   114
#endif
a3ea092203a5 tests: introduce c-style conditional sections in .t tests
Mads Kiilerich <mads@kiilerich.com>
parents: 16014
diff changeset
   115
16914
2030dec7c8fa test-run-tests: add tests for "#if no-false" and no-true
Adrian Buehlmann <adrian@cadifra.com>
parents: 16891
diff changeset
   116
#if no-false
2030dec7c8fa test-run-tests: add tests for "#if no-false" and no-true
Adrian Buehlmann <adrian@cadifra.com>
parents: 16891
diff changeset
   117
  $ echo tested
2030dec7c8fa test-run-tests: add tests for "#if no-false" and no-true
Adrian Buehlmann <adrian@cadifra.com>
parents: 16891
diff changeset
   118
  tested
2030dec7c8fa test-run-tests: add tests for "#if no-false" and no-true
Adrian Buehlmann <adrian@cadifra.com>
parents: 16891
diff changeset
   119
#else
2030dec7c8fa test-run-tests: add tests for "#if no-false" and no-true
Adrian Buehlmann <adrian@cadifra.com>
parents: 16891
diff changeset
   120
  $ echo skipped
2030dec7c8fa test-run-tests: add tests for "#if no-false" and no-true
Adrian Buehlmann <adrian@cadifra.com>
parents: 16891
diff changeset
   121
#endif
2030dec7c8fa test-run-tests: add tests for "#if no-false" and no-true
Adrian Buehlmann <adrian@cadifra.com>
parents: 16891
diff changeset
   122
2030dec7c8fa test-run-tests: add tests for "#if no-false" and no-true
Adrian Buehlmann <adrian@cadifra.com>
parents: 16891
diff changeset
   123
#if no-true
2030dec7c8fa test-run-tests: add tests for "#if no-false" and no-true
Adrian Buehlmann <adrian@cadifra.com>
parents: 16891
diff changeset
   124
  $ echo skipped
2030dec7c8fa test-run-tests: add tests for "#if no-false" and no-true
Adrian Buehlmann <adrian@cadifra.com>
parents: 16891
diff changeset
   125
#else
2030dec7c8fa test-run-tests: add tests for "#if no-false" and no-true
Adrian Buehlmann <adrian@cadifra.com>
parents: 16891
diff changeset
   126
  $ echo tested
2030dec7c8fa test-run-tests: add tests for "#if no-false" and no-true
Adrian Buehlmann <adrian@cadifra.com>
parents: 16891
diff changeset
   127
  tested
2030dec7c8fa test-run-tests: add tests for "#if no-false" and no-true
Adrian Buehlmann <adrian@cadifra.com>
parents: 16891
diff changeset
   128
#endif
2030dec7c8fa test-run-tests: add tests for "#if no-false" and no-true
Adrian Buehlmann <adrian@cadifra.com>
parents: 16891
diff changeset
   129
12375
02990e22150b tests: require regexes in unified tests to be marked with " (re)"
Brodie Rao <brodie@bitheap.org>
parents:
diff changeset
   130
Exit code:
02990e22150b tests: require regexes in unified tests to be marked with " (re)"
Brodie Rao <brodie@bitheap.org>
parents:
diff changeset
   131
17345
4f8054d3171b check-code: fix check for trailing whitespace on sh command lines
Mads Kiilerich <mads@kiilerich.com>
parents: 16914
diff changeset
   132
  $ (exit 1)
12375
02990e22150b tests: require regexes in unified tests to be marked with " (re)"
Brodie Rao <brodie@bitheap.org>
parents:
diff changeset
   133
  [1]