Пример #1
0
 def testSemicolon(self):
     input = 'echo; cat;'
     parser = Parser(Tokenizer(input))
     ast = parser.parse()
     self.assertTrue(isinstance(ast, BinaryOp))
     self.assertEquals(';', ast.op)
     self.assertTrue(isinstance(ast.left, Process))
     self.assertTrue(isinstance(ast.right, Process))
Пример #2
0
 def testBackquoteWithSemicolon(self):
     input = 'echo `echo foo | cat`'
     parser = Parser(Tokenizer(input))
     ast = parser.parse()
     self.assertTrue(isinstance(ast, Process))
     self.assertEquals(2, len(ast.args))
     self.assertEquals(1, len(ast.args[1]))
     self.assertEquals(BACKQUOTE, ast.args[1][0][0])
     self.assertEquals('|', ast.args[1][0][1].op)
Пример #3
0
 def testBackquoteWithSpace(self):
     input = 'echo ` echo foo `'
     parser = Parser(Tokenizer(input))
     ast = parser.parse()
     self.assertTrue(isinstance(ast, Process))
     self.assertEquals(2, len(ast.args))
     self.assertEquals(1, len(ast.args[1]))
     self.assertEquals(BACKQUOTE, ast.args[1][0][0])
     self.assertTrue(isinstance(ast.args[1][0][1], Process))
     self.assertEquals([[(LITERAL, 'echo')], [(LITERAL, 'foo')]],
                       ast.args[1][0][1].args)
Пример #4
0
 def test(self):
     input = 'echo hoge$foo || echo piyo && cat'
     parser = Parser(Tokenizer(input))
     ast = parser.parse()
     self.assertTrue(isinstance(ast, BinaryOp))
     self.assertEquals('&&', ast.op)
     self.assertTrue(isinstance(ast.left, BinaryOp))
     self.assertEquals('||', ast.left.op)
     proc0 = ast.left.left
     self.assertTrue(isinstance(proc0, Process))
     self.assertEquals([[('literal', 'echo')],
                        [('literal', 'hoge'), ('substitution', '$foo')]],
                       proc0.args)
     self.assertFalse(proc0.redirects)
     proc1 = ast.left.right
     self.assertTrue(isinstance(proc1, Process))
     self.assertEquals([[('literal', 'echo')], [('literal', 'piyo')]],
                       proc1.args)
     self.assertFalse(proc1.redirects)
     proc2 = ast.right
     self.assertTrue(isinstance(proc2, Process))
     self.assertEquals([[('literal', 'cat')]], proc2.args)
     self.assertFalse(proc2.redirects)
Пример #5
0
 def parse(self, input):
     tok = Tokenizer(input)
     parser = Parser(tok)
     return parser.parse()
Пример #6
0
 def extractResponseNames(self, content):
   parser = Parser(Tokenizer(content))
   ast = parser.parse()
   names = []
   self.extractResponseNamesInternal(ast, names)
   return names