mirror of
https://github.com/facebook/sapling.git
synced 2024-12-28 23:54:12 +03:00
a6b159822f
Summary: Python 3 is more strict about bad escape characters. As far as I can tell, this was always wrong, and when corrected, works both in Python 2 and Python 3. Reviewed By: quark-zju Differential Revision: D19673184 fbshipit-source-id: b8b358327db8ce2e51761f8f98784bdd4b396423
137 lines
2.1 KiB
Perl
137 lines
2.1 KiB
Perl
#chg-compatible
|
|
|
|
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
|
|
|
|
$ hg debugpython -- "$TESTDIR/hghave" true
|
|
$ hg debugpython -- "$TESTDIR/hghave" false
|
|
skipped: missing feature: nail clipper
|
|
[80]
|
|
$ hg debugpython -- "$TESTDIR/hghave" no-true
|
|
skipped: system supports yak shaving
|
|
[80]
|
|
$ hg debugpython -- "$TESTDIR/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]
|