Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
t(tt.WORD, '$((a))', [0, len(s)], hasdollarset)])
s = '$('
self.assertRaises(tokenizer.MatchedPairError,
tokenize, s)
s = '$(;'
self.assertRaises(tokenizer.MatchedPairError,
tokenize, s)
s = '$(<'
self.assertRaises(tokenizer.MatchedPairError,
tokenize, s)
s = '$(<<'
self.assertRaises(tokenizer.MatchedPairError,
tokenize, s)
s = '$(a\\b)'
self.assertTokens(s, [
t(tt.WORD, '$(a\\b)', [0, len(s)], hasdollarset)])
s = '$(a <
def test_shellquote(self):
s = '"foo"'
self.assertTokens(s, [
t(tt.WORD, '"foo"', [0, 5], set([flags.word.QUOTED]))])
s = '"foo"bar\'baz\''
self.assertTokens(s, [
t(tt.WORD, s, [0, len(s)], set([flags.word.QUOTED]))])
self.assertRaises(tokenizer.MatchedPairError,
tokenize,
"'a")
lexrwlen = 0
elif insidecase and c != '\n':
reservedwordok = False
elif not _shellbreak(c):
reservedwordok = False
if not insidecomment and checkcase and c == '<':
ret += c
peekc = self._getc(True)
if peekc is None:
raise MatchedPairError(startlineno, 'unexpected EOF while looking for matching %r' % close, self)
if peekc == c:
ret += peekc
peekc = self._getc(True)
if peekc is None:
raise MatchedPairError(startlineno, 'unexpected EOF while looking for matching %r' % close, self)
elif peekc == '-':
ret += peekc
stripdoc = True
else:
self._ungetc(peekc)
if peekc != '<':
readingheredocdelim = True
lexfirstind = -1
continue
else:
c = peekc
elif checkcomment and not insidecomment and c == '#' and ((reservedwordok
and lexrwlen == 0) or insideword or lexwlen == 0):
insidecomment = True
def __init__(self, startline, message, tokenizer):
# TODO use startline?
super(MatchedPairError, self).__init__(message,
tokenizer.source,
tokenizer._shell_input_line_index - 1)
parsingcommand=True,
dquote=False)
elif c == '{':
return self._parse_matched_pair(None, '{', '}',
firstclose=True,
dquote=rdquote,
dolbrace=True)
elif c == '[':
return self._parse_matched_pair(None, '[', ']', dquote=rdquote)
else:
assert False # pragma: no cover
while count:
c = self._getc(doublequotes != "'" and not passnextchar)
if c is None:
raise MatchedPairError(startlineno, 'unexpected EOF while looking for matching %r' % close, self)
# bashlex/parse.y L3285
# if c == '\n':
# continue
if insidecomment:
ret += c
if c == '\n':
insidecomment = False
continue
elif lookforcomments and not insidecomment and c == '#' and (not ret
or ret[-1] == '\n' or _shellblank(ret[-1])):
insidecomment = True
# last char was backslash
if passnextchar: