mirror of
https://github.com/facebook/sapling.git
synced 2024-10-07 07:17:55 +03:00
run-tests: drop required (feature !) style lines when the output is missing
Essentially, these were acting as a verbose (?) flag, since they weren't being dropped when required. Foozy has a nice description [1]. Basically, a couple more places needed to check the features before treating it as optional. I don't like how test-run-tests.py had to be hacked, but _hghave() can't be made a static method. The test change was a change while developing `debugssl`, prior to tightening up the cases where the message is printed, that this fix would have caught. [1] https://www.mercurial-scm.org/pipermail/mercurial-devel/2017-July/101941.html
This commit is contained in:
parent
71dc81544b
commit
72e29cff86
@ -1359,7 +1359,7 @@ class TTest(Test):
|
|||||||
while i < len(els):
|
while i < len(els):
|
||||||
el = els[i]
|
el = els[i]
|
||||||
|
|
||||||
r = TTest.linematch(el, lout)
|
r = self.linematch(el, lout)
|
||||||
if isinstance(r, str):
|
if isinstance(r, str):
|
||||||
if r == '+glob':
|
if r == '+glob':
|
||||||
lout = el[:-1] + ' (glob)\n'
|
lout = el[:-1] + ' (glob)\n'
|
||||||
@ -1385,9 +1385,7 @@ class TTest(Test):
|
|||||||
if m:
|
if m:
|
||||||
conditions = [c for c in m.group(2).split(' ')]
|
conditions = [c for c in m.group(2).split(' ')]
|
||||||
|
|
||||||
if self._hghave(conditions)[0]:
|
if not self._hghave(conditions)[0]:
|
||||||
lout = el
|
|
||||||
else:
|
|
||||||
optional.append(i)
|
optional.append(i)
|
||||||
|
|
||||||
i += 1
|
i += 1
|
||||||
@ -1416,9 +1414,16 @@ class TTest(Test):
|
|||||||
while expected.get(pos, None):
|
while expected.get(pos, None):
|
||||||
el = expected[pos].pop(0)
|
el = expected[pos].pop(0)
|
||||||
if el:
|
if el:
|
||||||
if (not optline.match(el)
|
if not el.endswith(b" (?)\n"):
|
||||||
and not el.endswith(b" (?)\n")):
|
m = optline.match(el)
|
||||||
break
|
if m:
|
||||||
|
conditions = [c for c in m.group(2).split(' ')]
|
||||||
|
|
||||||
|
if self._hghave(conditions)[0]:
|
||||||
|
# Don't append as optional line
|
||||||
|
continue
|
||||||
|
else:
|
||||||
|
break
|
||||||
postout.append(b' ' + el)
|
postout.append(b' ' + el)
|
||||||
|
|
||||||
if lcmd:
|
if lcmd:
|
||||||
@ -1481,8 +1486,7 @@ class TTest(Test):
|
|||||||
res += re.escape(c)
|
res += re.escape(c)
|
||||||
return TTest.rematch(res, l)
|
return TTest.rematch(res, l)
|
||||||
|
|
||||||
@staticmethod
|
def linematch(self, el, l):
|
||||||
def linematch(el, l):
|
|
||||||
retry = False
|
retry = False
|
||||||
if el == l: # perfect match (fast)
|
if el == l: # perfect match (fast)
|
||||||
return True
|
return True
|
||||||
@ -1493,8 +1497,11 @@ class TTest(Test):
|
|||||||
else:
|
else:
|
||||||
m = optline.match(el)
|
m = optline.match(el)
|
||||||
if m:
|
if m:
|
||||||
|
conditions = [c for c in m.group(2).split(' ')]
|
||||||
|
|
||||||
el = m.group(1) + b"\n"
|
el = m.group(1) + b"\n"
|
||||||
retry = "retry"
|
if not self._hghave(conditions)[0]:
|
||||||
|
retry = "retry" # Not required by listed features
|
||||||
|
|
||||||
if el.endswith(b" (esc)\n"):
|
if el.endswith(b" (esc)\n"):
|
||||||
if PYTHON3:
|
if PYTHON3:
|
||||||
|
@ -624,7 +624,6 @@ without client certificate:
|
|||||||
|
|
||||||
$ P="$CERTSDIR" hg id https://localhost:$HGPORT/
|
$ P="$CERTSDIR" hg id https://localhost:$HGPORT/
|
||||||
warning: connecting to localhost using legacy security technology (TLS 1.0); see https://mercurial-scm.org/wiki/SecureConnections for more info (?)
|
warning: connecting to localhost using legacy security technology (TLS 1.0); see https://mercurial-scm.org/wiki/SecureConnections for more info (?)
|
||||||
(the full certificate chain may not be available locally; see "hg help debugssl") (windows !)
|
|
||||||
abort: error: *handshake failure* (glob)
|
abort: error: *handshake failure* (glob)
|
||||||
[255]
|
[255]
|
||||||
|
|
||||||
|
@ -39,7 +39,8 @@ def lm(expected, output):
|
|||||||
and output.endswith(b'\n')), 'missing newline'
|
and output.endswith(b'\n')), 'missing newline'
|
||||||
assert not re.search(br'[^ \w\\/\r\n()*?]', expected + output), \
|
assert not re.search(br'[^ \w\\/\r\n()*?]', expected + output), \
|
||||||
b'single backslash or unknown char'
|
b'single backslash or unknown char'
|
||||||
match = run_tests.TTest.linematch(expected, output)
|
test = run_tests.TTest('test-run-test.t', '.', '.')
|
||||||
|
match = test.linematch(expected, output)
|
||||||
if isinstance(match, str):
|
if isinstance(match, str):
|
||||||
return 'special: ' + match
|
return 'special: ' + match
|
||||||
elif isinstance(match, bytes):
|
elif isinstance(match, bytes):
|
||||||
|
@ -158,6 +158,57 @@ test diff colorisation
|
|||||||
python hash seed: * (glob)
|
python hash seed: * (glob)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
$ cat > test-failure.t << EOF
|
||||||
|
> $ true
|
||||||
|
> should go away (true !)
|
||||||
|
> $ true
|
||||||
|
> should stay (false !)
|
||||||
|
>
|
||||||
|
> Should remove first line, not second or third
|
||||||
|
> $ echo 'testing'
|
||||||
|
> baz*foo (glob) (true !)
|
||||||
|
> foobar*foo (glob) (false !)
|
||||||
|
> te*ting (glob) (true !)
|
||||||
|
>
|
||||||
|
> Should keep first two lines, remove third and last
|
||||||
|
> $ echo 'testing'
|
||||||
|
> test.ng (re) (true !)
|
||||||
|
> foo.ar (re) (false !)
|
||||||
|
> b.r (re) (true !)
|
||||||
|
> missing (?)
|
||||||
|
> awol (true !)
|
||||||
|
> EOF
|
||||||
|
$ rt test-failure.t
|
||||||
|
|
||||||
|
--- $TESTTMP/test-failure.t
|
||||||
|
+++ $TESTTMP/test-failure.t.err
|
||||||
|
@@ -1,11 +1,9 @@
|
||||||
|
$ true
|
||||||
|
- should go away (true !)
|
||||||
|
$ true
|
||||||
|
should stay (false !)
|
||||||
|
|
||||||
|
Should remove first line, not second or third
|
||||||
|
$ echo 'testing'
|
||||||
|
- baz*foo (glob) (true !)
|
||||||
|
foobar*foo (glob) (false !)
|
||||||
|
te*ting (glob) (true !)
|
||||||
|
|
||||||
|
@@ -13,6 +11,4 @@
|
||||||
|
$ echo 'testing'
|
||||||
|
test.ng (re) (true !)
|
||||||
|
foo.ar (re) (false !)
|
||||||
|
- b.r (re) (true !)
|
||||||
|
missing (?)
|
||||||
|
- awol (true !)
|
||||||
|
|
||||||
|
ERROR: test-failure.t output changed
|
||||||
|
!
|
||||||
|
Failed test-failure.t: output changed
|
||||||
|
# Ran 1 tests, 0 skipped, 1 failed.
|
||||||
|
python hash seed: * (glob)
|
||||||
|
[1]
|
||||||
|
|
||||||
basic failing test
|
basic failing test
|
||||||
$ cat > test-failure.t << EOF
|
$ cat > test-failure.t << EOF
|
||||||
> $ echo babar
|
> $ echo babar
|
||||||
|
Loading…
Reference in New Issue
Block a user