tests/test-unified-test.t
author Matt Mackall <mpm@selenic.com>
Wed, 02 Jul 2014 00:01:13 -0500
changeset 21832 4b93e19cd6e6
parent 21731 204f6a6e9b57
child 22564 9599e86159ac
permissions -rw-r--r--
merge with stable
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
  
15249
f30c0a7b8346 tests: add basic tests for doctest syntax
Idan Kamara <idankk86@gmail.com>
parents: 12940
diff changeset
    40
12375
02990e22150b tests: require regexes in unified tests to be marked with " (re)"
Brodie Rao <brodie@bitheap.org>
parents:
diff changeset
    41
Regular expressions:
02990e22150b tests: require regexes in unified tests to be marked with " (re)"
Brodie Rao <brodie@bitheap.org>
parents:
diff changeset
    42
02990e22150b tests: require regexes in unified tests to be marked with " (re)"
Brodie Rao <brodie@bitheap.org>
parents:
diff changeset
    43
  $ echo foobarbaz
02990e22150b tests: require regexes in unified tests to be marked with " (re)"
Brodie Rao <brodie@bitheap.org>
parents:
diff changeset
    44
  foobar.* (re)
02990e22150b tests: require regexes in unified tests to be marked with " (re)"
Brodie Rao <brodie@bitheap.org>
parents:
diff changeset
    45
  $ echo barbazquux
02990e22150b tests: require regexes in unified tests to be marked with " (re)"
Brodie Rao <brodie@bitheap.org>
parents:
diff changeset
    46
  .*quux.* (re)
02990e22150b tests: require regexes in unified tests to be marked with " (re)"
Brodie Rao <brodie@bitheap.org>
parents:
diff changeset
    47
12376
97ffc68f71d3 tests: add glob matching for unified tests
Brodie Rao <brodie@bitheap.org>
parents: 12375
diff changeset
    48
Globs:
97ffc68f71d3 tests: add glob matching for unified tests
Brodie Rao <brodie@bitheap.org>
parents: 12375
diff changeset
    49
12377
a5b77eb0409b tests: various fixes for new unified test pattern format
Matt Mackall <mpm@selenic.com>
parents: 12376
diff changeset
    50
  $ printf '* \\foobarbaz {10}\n'
12376
97ffc68f71d3 tests: add glob matching for unified tests
Brodie Rao <brodie@bitheap.org>
parents: 12375
diff changeset
    51
  \* \\fo?bar* {10} (glob)
97ffc68f71d3 tests: add glob matching for unified tests
Brodie Rao <brodie@bitheap.org>
parents: 12375
diff changeset
    52
12375
02990e22150b tests: require regexes in unified tests to be marked with " (re)"
Brodie Rao <brodie@bitheap.org>
parents:
diff changeset
    53
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
    54
02990e22150b tests: require regexes in unified tests to be marked with " (re)"
Brodie Rao <brodie@bitheap.org>
parents:
diff changeset
    55
  $ echo 'foo (re)'
02990e22150b tests: require regexes in unified tests to be marked with " (re)"
Brodie Rao <brodie@bitheap.org>
parents:
diff changeset
    56
  foo (re)
02990e22150b tests: require regexes in unified tests to be marked with " (re)"
Brodie Rao <brodie@bitheap.org>
parents:
diff changeset
    57
17777
af7c6bc48d8d run-tests: alternative way of handling \r on Windows
Mads Kiilerich <mads@kiilerich.com>
parents: 17345
diff changeset
    58
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
    59
af7c6bc48d8d run-tests: alternative way of handling \r on Windows
Mads Kiilerich <mads@kiilerich.com>
parents: 17345
diff changeset
    60
#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
    61
  $ 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
    62
  crlf
af7c6bc48d8d run-tests: alternative way of handling \r on Windows
Mads Kiilerich <mads@kiilerich.com>
parents: 17345
diff changeset
    63
  cr\r (no-eol) (esc)
af7c6bc48d8d run-tests: alternative way of handling \r on Windows
Mads Kiilerich <mads@kiilerich.com>
parents: 17345
diff changeset
    64
  \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
    65
  crlf\r (esc)
17777
af7c6bc48d8d run-tests: alternative way of handling \r on Windows
Mads Kiilerich <mads@kiilerich.com>
parents: 17345
diff changeset
    66
#endif
af7c6bc48d8d run-tests: alternative way of handling \r on Windows
Mads Kiilerich <mads@kiilerich.com>
parents: 17345
diff changeset
    67
17778
80fe64581f3a run-tests: make it possible to combine (esc) with (glob) and (re)
Mads Kiilerich <mads@kiilerich.com>
parents: 17777
diff changeset
    68
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
    69
80fe64581f3a run-tests: make it possible to combine (esc) with (glob) and (re)
Mads Kiilerich <mads@kiilerich.com>
parents: 17777
diff changeset
    70
  $ 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
    71
  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
    72
#if windows
80fe64581f3a run-tests: make it possible to combine (esc) with (glob) and (re)
Mads Kiilerich <mads@kiilerich.com>
parents: 17777
diff changeset
    73
  $ 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
    74
  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
    75
#endif
80fe64581f3a run-tests: make it possible to combine (esc) with (glob) and (re)
Mads Kiilerich <mads@kiilerich.com>
parents: 17777
diff changeset
    76
  $ 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
    77
  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
    78
  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
    79
16891
b0e8afdfa970 tests/hghave: implement #if true / #if false
Adrian Buehlmann <adrian@cadifra.com>
parents: 16842
diff changeset
    80
testing hghave
b0e8afdfa970 tests/hghave: implement #if true / #if false
Adrian Buehlmann <adrian@cadifra.com>
parents: 16842
diff changeset
    81
b0e8afdfa970 tests/hghave: implement #if true / #if false
Adrian Buehlmann <adrian@cadifra.com>
parents: 16842
diff changeset
    82
  $ "$TESTDIR/hghave" true
b0e8afdfa970 tests/hghave: implement #if true / #if false
Adrian Buehlmann <adrian@cadifra.com>
parents: 16842
diff changeset
    83
  $ "$TESTDIR/hghave" false
b0e8afdfa970 tests/hghave: implement #if true / #if false
Adrian Buehlmann <adrian@cadifra.com>
parents: 16842
diff changeset
    84
  skipped: missing feature: nail clipper
b0e8afdfa970 tests/hghave: implement #if true / #if false
Adrian Buehlmann <adrian@cadifra.com>
parents: 16842
diff changeset
    85
  [1]
b0e8afdfa970 tests/hghave: implement #if true / #if false
Adrian Buehlmann <adrian@cadifra.com>
parents: 16842
diff changeset
    86
  $ "$TESTDIR/hghave" no-true
b0e8afdfa970 tests/hghave: implement #if true / #if false
Adrian Buehlmann <adrian@cadifra.com>
parents: 16842
diff changeset
    87
  skipped: system supports yak shaving
b0e8afdfa970 tests/hghave: implement #if true / #if false
Adrian Buehlmann <adrian@cadifra.com>
parents: 16842
diff changeset
    88
  [1]
b0e8afdfa970 tests/hghave: implement #if true / #if false
Adrian Buehlmann <adrian@cadifra.com>
parents: 16842
diff changeset
    89
  $ "$TESTDIR/hghave" no-false
b0e8afdfa970 tests/hghave: implement #if true / #if false
Adrian Buehlmann <adrian@cadifra.com>
parents: 16842
diff changeset
    90
16842
a3ea092203a5 tests: introduce c-style conditional sections in .t tests
Mads Kiilerich <mads@kiilerich.com>
parents: 16014
diff changeset
    91
Conditional sections based on hghave:
a3ea092203a5 tests: introduce c-style conditional sections in .t tests
Mads Kiilerich <mads@kiilerich.com>
parents: 16014
diff changeset
    92
16891
b0e8afdfa970 tests/hghave: implement #if true / #if false
Adrian Buehlmann <adrian@cadifra.com>
parents: 16842
diff changeset
    93
#if true
b0e8afdfa970 tests/hghave: implement #if true / #if false
Adrian Buehlmann <adrian@cadifra.com>
parents: 16842
diff changeset
    94
  $ echo tested
b0e8afdfa970 tests/hghave: implement #if true / #if false
Adrian Buehlmann <adrian@cadifra.com>
parents: 16842
diff changeset
    95
  tested
b0e8afdfa970 tests/hghave: implement #if true / #if false
Adrian Buehlmann <adrian@cadifra.com>
parents: 16842
diff changeset
    96
#else
b0e8afdfa970 tests/hghave: implement #if true / #if false
Adrian Buehlmann <adrian@cadifra.com>
parents: 16842
diff changeset
    97
  $ echo skipped
b0e8afdfa970 tests/hghave: implement #if true / #if false
Adrian Buehlmann <adrian@cadifra.com>
parents: 16842
diff changeset
    98
#endif
b0e8afdfa970 tests/hghave: implement #if true / #if false
Adrian Buehlmann <adrian@cadifra.com>
parents: 16842
diff changeset
    99
b0e8afdfa970 tests/hghave: implement #if true / #if false
Adrian Buehlmann <adrian@cadifra.com>
parents: 16842
diff changeset
   100
#if false
16842
a3ea092203a5 tests: introduce c-style conditional sections in .t tests
Mads Kiilerich <mads@kiilerich.com>
parents: 16014
diff changeset
   101
  $ echo skipped
a3ea092203a5 tests: introduce c-style conditional sections in .t tests
Mads Kiilerich <mads@kiilerich.com>
parents: 16014
diff changeset
   102
#else
a3ea092203a5 tests: introduce c-style conditional sections in .t tests
Mads Kiilerich <mads@kiilerich.com>
parents: 16014
diff changeset
   103
  $ echo tested
a3ea092203a5 tests: introduce c-style conditional sections in .t tests
Mads Kiilerich <mads@kiilerich.com>
parents: 16014
diff changeset
   104
  tested
a3ea092203a5 tests: introduce c-style conditional sections in .t tests
Mads Kiilerich <mads@kiilerich.com>
parents: 16014
diff changeset
   105
#endif
a3ea092203a5 tests: introduce c-style conditional sections in .t tests
Mads Kiilerich <mads@kiilerich.com>
parents: 16014
diff changeset
   106
16914
2030dec7c8fa test-run-tests: add tests for "#if no-false" and no-true
Adrian Buehlmann <adrian@cadifra.com>
parents: 16891
diff changeset
   107
#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
   108
  $ echo tested
2030dec7c8fa test-run-tests: add tests for "#if no-false" and no-true
Adrian Buehlmann <adrian@cadifra.com>
parents: 16891
diff changeset
   109
  tested
2030dec7c8fa test-run-tests: add tests for "#if no-false" and no-true
Adrian Buehlmann <adrian@cadifra.com>
parents: 16891
diff changeset
   110
#else
2030dec7c8fa test-run-tests: add tests for "#if no-false" and no-true
Adrian Buehlmann <adrian@cadifra.com>
parents: 16891
diff changeset
   111
  $ echo skipped
2030dec7c8fa test-run-tests: add tests for "#if no-false" and no-true
Adrian Buehlmann <adrian@cadifra.com>
parents: 16891
diff changeset
   112
#endif
2030dec7c8fa test-run-tests: add tests for "#if no-false" and no-true
Adrian Buehlmann <adrian@cadifra.com>
parents: 16891
diff changeset
   113
2030dec7c8fa test-run-tests: add tests for "#if no-false" and no-true
Adrian Buehlmann <adrian@cadifra.com>
parents: 16891
diff changeset
   114
#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
   115
  $ echo skipped
2030dec7c8fa test-run-tests: add tests for "#if no-false" and no-true
Adrian Buehlmann <adrian@cadifra.com>
parents: 16891
diff changeset
   116
#else
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
#endif
2030dec7c8fa test-run-tests: add tests for "#if no-false" and no-true
Adrian Buehlmann <adrian@cadifra.com>
parents: 16891
diff changeset
   120
12375
02990e22150b tests: require regexes in unified tests to be marked with " (re)"
Brodie Rao <brodie@bitheap.org>
parents:
diff changeset
   121
Exit code:
02990e22150b tests: require regexes in unified tests to be marked with " (re)"
Brodie Rao <brodie@bitheap.org>
parents:
diff changeset
   122
17345
4f8054d3171b check-code: fix check for trailing whitespace on sh command lines
Mads Kiilerich <mads@kiilerich.com>
parents: 16914
diff changeset
   123
  $ (exit 1)
12375
02990e22150b tests: require regexes in unified tests to be marked with " (re)"
Brodie Rao <brodie@bitheap.org>
parents:
diff changeset
   124
  [1]