Exemplo n.º 1
0
 def test_basic(self):
     self.assertEqual(self.parse('echo hello'),
                      Pipeline([Command(['echo', 'hello'], [])], False))
     self.assertEqual(self.parse('echo ""'),
                      Pipeline([Command(['echo', ''], [])], False))
     self.assertEqual(self.parse("""echo -DFOO='a'"""),
                      Pipeline([Command(['echo', '-DFOO=a'], [])], False))
     self.assertEqual(self.parse('echo -DFOO="a"'),
                      Pipeline([Command(['echo', '-DFOO=a'], [])], False))
Exemplo n.º 2
0
 def test_redirection(self):
     self.assertEqual(self.parse('echo hello > c'),
                      Pipeline([Command(['echo', 'hello'], 
                                        [((('>'),), 'c')])], False))
     self.assertEqual(self.parse('echo hello > c >> d'),
                      Pipeline([Command(['echo', 'hello'], [(('>',), 'c'),
                                                  (('>>',), 'd')])], False))
     self.assertEqual(self.parse('a 2>&1'),
                      Pipeline([Command(['a'], [(('>&',2), '1')])], False))
Exemplo n.º 3
0
    def test_pipeline(self):
        self.assertEqual(self.parse('a | b'),
                         Pipeline([Command(['a'], []),
                                   Command(['b'], [])],
                                  False))

        self.assertEqual(self.parse('a | b | c'),
                         Pipeline([Command(['a'], []),
                                   Command(['b'], []),
                                   Command(['c'], [])],
                                  False))
Exemplo n.º 4
0
    def parse_pipeline(self):
        negate = False

        commands = [self.parse_command()]
        while self.look() == ('|',):
            self.lex()
            commands.append(self.parse_command())
        return Pipeline(commands, negate, self.pipefail)
Exemplo n.º 5
0
    def test_list(self):        
        self.assertEqual(self.parse('a ; b'),
                         Seq(Pipeline([Command(['a'], [])], False),
                             ';',
                             Pipeline([Command(['b'], [])], False)))

        self.assertEqual(self.parse('a & b'),
                         Seq(Pipeline([Command(['a'], [])], False),
                             '&',
                             Pipeline([Command(['b'], [])], False)))

        self.assertEqual(self.parse('a && b'),
                         Seq(Pipeline([Command(['a'], [])], False),
                             '&&',
                             Pipeline([Command(['b'], [])], False)))

        self.assertEqual(self.parse('a || b'),
                         Seq(Pipeline([Command(['a'], [])], False),
                             '||',
                             Pipeline([Command(['b'], [])], False)))

        self.assertEqual(self.parse('a && b || c'),
                         Seq(Seq(Pipeline([Command(['a'], [])], False),
                                 '&&',
                                 Pipeline([Command(['b'], [])], False)),
                             '||',
                             Pipeline([Command(['c'], [])], False)))

        self.assertEqual(self.parse('a; b'),
                         Seq(Pipeline([Command(['a'], [])], False),
                             ';',
                             Pipeline([Command(['b'], [])], False)))