mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-12-19 01:27:40 +00:00
Teach the built-in shell test runner in lit to handle '|&'-style pipes.
This is directly cloned from the logic in the TCL test bits of lit. Hopefully will fix most of the windows build bot fallout. llvm-svn: 159528
This commit is contained in:
parent
fff4579249
commit
c13346fe54
@ -134,6 +134,8 @@ class ShLexer:
|
||||
if c == '|':
|
||||
if self.maybe_eat('|'):
|
||||
return ('||',)
|
||||
if self.maybe_eat('&'):
|
||||
return ('|&',)
|
||||
return (c,)
|
||||
if c == '&':
|
||||
if self.maybe_eat('&'):
|
||||
@ -205,7 +207,7 @@ class ShParser:
|
||||
|
||||
# Otherwise see if it is a terminator.
|
||||
assert isinstance(tok, tuple)
|
||||
if tok[0] in ('|',';','&','||','&&'):
|
||||
if tok[0] in ('|','|&',';','&','||','&&'):
|
||||
break
|
||||
|
||||
# Otherwise it must be a redirection.
|
||||
@ -224,9 +226,18 @@ class ShParser:
|
||||
negate = True
|
||||
|
||||
commands = [self.parse_command()]
|
||||
while self.look() == ('|',):
|
||||
self.lex()
|
||||
commands.append(self.parse_command())
|
||||
while 1:
|
||||
tok = self.look()
|
||||
if tok == ('|',):
|
||||
self.lex()
|
||||
commands.append(self.parse_command())
|
||||
continue
|
||||
if tok == ('|&',):
|
||||
self.lex()
|
||||
commands[-1].redirects.insert(0, (('>&',2),'1'))
|
||||
commands.append(self.parse_command())
|
||||
continue
|
||||
break
|
||||
return Pipeline(commands, negate)
|
||||
|
||||
def parse(self):
|
||||
|
Loading…
Reference in New Issue
Block a user