mirror of
https://github.com/facebook/sapling.git
synced 2024-10-16 19:57:18 +03:00
7d8bebd9c1
# skip-blame because this was mechanically rewritten the following script. I ran it on both *.t and *.py, but none of the *.py changes were proper. All *.t ones appear to be, and they run without addition failures on both Windows and Linux. import argparse import os import re ap = argparse.ArgumentParser() ap.add_argument('path', nargs='+') opts = ap.parse_args() globre = re.compile(r'^(.*) \(glob\)(.*)$') for p in opts.path: tmp = p + '.tmp' with open(p, 'rb') as src, open(tmp, 'wb') as dst: for line in src: m = globre.match(line) if not m or '$LOCALIP' in line or '*' in line: dst.write(line) continue if '?' in line[:-3] or ('?' in line[:-3] and line[-3:] != '(?)'): dst.write(line) continue dst.write(m.group(1) + m.group(2) + '\n') os.unlink(p) os.rename(tmp, p)
135 lines
2.0 KiB
Perl
135 lines
2.0 KiB
Perl
Test that the syntax of "unified tests" is properly processed
|
|
==============================================================
|
|
|
|
Simple commands:
|
|
|
|
$ echo foo
|
|
foo
|
|
$ printf 'oh no'
|
|
oh no (no-eol)
|
|
$ printf 'bar\nbaz\n' | cat
|
|
bar
|
|
baz
|
|
|
|
Multi-line command:
|
|
|
|
$ foo() {
|
|
> echo bar
|
|
> }
|
|
$ foo
|
|
bar
|
|
|
|
Return codes before inline python:
|
|
|
|
$ sh -c 'exit 1'
|
|
[1]
|
|
|
|
Doctest commands:
|
|
|
|
>>> from __future__ import print_function
|
|
>>> print('foo')
|
|
foo
|
|
$ echo interleaved
|
|
interleaved
|
|
>>> for c in 'xyz':
|
|
... print(c)
|
|
x
|
|
y
|
|
z
|
|
>>> print()
|
|
|
|
>>> foo = 'global name'
|
|
>>> def func():
|
|
... print(foo, 'should be visible in func()')
|
|
>>> func()
|
|
global name should be visible in func()
|
|
>>> print('''multiline
|
|
... string''')
|
|
multiline
|
|
string
|
|
|
|
Regular expressions:
|
|
|
|
$ echo foobarbaz
|
|
foobar.* (re)
|
|
$ echo barbazquux
|
|
.*quux.* (re)
|
|
|
|
Globs:
|
|
|
|
$ printf '* \\foobarbaz {10}\n'
|
|
\* \\fo?bar* {10} (glob)
|
|
|
|
Literal match ending in " (re)":
|
|
|
|
$ echo 'foo (re)'
|
|
foo (re)
|
|
|
|
Windows: \r\n is handled like \n and can be escaped:
|
|
|
|
#if windows
|
|
$ printf 'crlf\r\ncr\r\tcrlf\r\ncrlf\r\n'
|
|
crlf
|
|
cr\r (no-eol) (esc)
|
|
\tcrlf (esc)
|
|
crlf\r (esc)
|
|
#endif
|
|
|
|
Combining esc with other markups - and handling lines ending with \r instead of \n:
|
|
|
|
$ printf 'foo/bar\r'
|
|
fo?/bar\r (no-eol) (glob) (esc)
|
|
#if windows
|
|
$ printf 'foo\\bar\r'
|
|
foo/bar\r (no-eol) (esc)
|
|
#endif
|
|
$ printf 'foo/bar\rfoo/bar\r'
|
|
foo.bar\r \(no-eol\) (re) (esc)
|
|
foo.bar\r \(no-eol\) (re)
|
|
|
|
testing hghave
|
|
|
|
$ hghave true
|
|
$ hghave false
|
|
skipped: missing feature: nail clipper
|
|
[1]
|
|
$ hghave no-true
|
|
skipped: system supports yak shaving
|
|
[1]
|
|
$ hghave no-false
|
|
|
|
Conditional sections based on hghave:
|
|
|
|
#if true
|
|
$ echo tested
|
|
tested
|
|
#else
|
|
$ echo skipped
|
|
#endif
|
|
|
|
#if false
|
|
$ echo skipped
|
|
#else
|
|
$ echo tested
|
|
tested
|
|
#endif
|
|
|
|
#if no-false
|
|
$ echo tested
|
|
tested
|
|
#else
|
|
$ echo skipped
|
|
#endif
|
|
|
|
#if no-true
|
|
$ echo skipped
|
|
#else
|
|
$ echo tested
|
|
tested
|
|
#endif
|
|
|
|
Exit code:
|
|
|
|
$ (exit 1)
|
|
[1]
|