Beispiel #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))
Beispiel #2
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))
Beispiel #3
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)
Beispiel #4
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)
Beispiel #5
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)
Beispiel #6
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)
Beispiel #7
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)
Beispiel #8
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)
Beispiel #9
0
 def parse(self, input):
     tok = Tokenizer(input)
     parser = Parser(tok)
     return parser.parse()
Beispiel #10
0
 def extractResponseNames(self, content):
   parser = Parser(Tokenizer(content))
   ast = parser.parse()
   names = []
   self.extractResponseNamesInternal(ast, names)
   return names