Example #1
0
 def test_concat_path(self):
     self.assertEqual(
         Pattern('%.c') + path.Path('bar'),
         safe_str.jbos(safe_str.literal('%'), '.c', path.Path('bar')))
     self.assertEqual(
         path.Path('foo') + Pattern('%.h'),
         safe_str.jbos(path.Path('foo'), safe_str.literal('%'), '.h'))
Example #2
0
 def test_concat_str(self):
     self.assertEqual(Pattern('%.c') + 'bar', safe_str.jbos(
         safe_str.literal('%'), '.cbar'
     ))
     self.assertEqual('foo' + Pattern('%.h'), safe_str.jbos(
         'foo', safe_str.literal('%'), '.h'
     ))
Example #3
0
    def test_expand_word_jbos(self):
        p = Placeholder('files')
        zero = AttrDict(files=[])
        one = AttrDict(files=[literal('foo')])
        two = AttrDict(files=[literal('foo'), literal('bar')])
        foo = jbos('{', literal('foo'), '}')
        bar = jbos('{', literal('bar'), '}')

        j = '{' + p + '}'
        self.assertEqual(Placeholder.expand_word(j, zero), [])
        self.assertEqual(Placeholder.expand_word(j, one), [foo])
        self.assertEqual(Placeholder.expand_word(j, two), [foo, bar])

        j = '{' + p[0] + '}'
        with self.assertRaises(IndexError):
            Placeholder.expand_word(j, zero)
        self.assertEqual(Placeholder.expand_word(j, one), [foo])
        self.assertEqual(Placeholder.expand_word(j, two), [foo])

        j = '{' + p[0:1] + '}'
        self.assertEqual(Placeholder.expand_word(j, zero), [])
        self.assertEqual(Placeholder.expand_word(j, one), [foo])
        self.assertEqual(Placeholder.expand_word(j, two), [foo])

        j = jbos('foo')
        self.assertEqual(Placeholder.expand_word(j, zero), [j])
        self.assertEqual(Placeholder.expand_word(j, one), [j])
        self.assertEqual(Placeholder.expand_word(j, two), [j])

        with self.assertRaises(ValueError):
            Placeholder.expand_word(p + p, zero)
Example #4
0
 def test_concat_path(self):
     self.assertEqual(
         Variable('foo') + path.Path('bar'),
         safe_str.jbos(safe_str.literal('$(foo)'), path.Path('bar')))
     self.assertEqual(
         path.Path('foo') + Variable('bar'),
         safe_str.jbos(path.Path('foo'), safe_str.literal('$(bar)')))
Example #5
0
 def test_concat_str(self):
     self.assertEqual(Variable('foo') + 'bar', safe_str.jbos(
         safe_str.literal('${foo}'), 'bar'
     ))
     self.assertEqual('foo' + Variable('bar'), safe_str.jbos(
         'foo', safe_str.literal('${bar}')
     ))
Example #6
0
 def test_concat_var(self):
     self.assertEqual(
         Variable('foo') + Variable('bar'),
         safe_str.jbos(safe_str.literal('$(foo)'),
                       safe_str.literal('$(bar)')))
     self.assertEqual(
         Variable('foo', True) + Variable('bar'),
         safe_str.jbos(safe_str.literal("'$(foo)'"),
                       safe_str.literal('$(bar)')))
Example #7
0
 def test_concat_var(self):
     self.assertEqual(
         Function('foo', '1', '2') + Function('bar', '3', '4'),
         safe_str.jbos(safe_str.literal('$(foo 1,2)'),
                       safe_str.literal('$(bar 3,4)')))
     self.assertEqual(
         Function('foo', '1', '2', quoted=True) + Function('bar', '3', '4'),
         safe_str.jbos(safe_str.literal("'$(foo 1,2)'"),
                       safe_str.literal('$(bar 3,4)')))
Example #8
0
    def test_concat_str(self):
        self.assertEqual(
            Function('fn', '1', '2') + 'foo',
            safe_str.jbos(safe_str.literal('$(fn 1,2)'), 'foo'))
        self.assertEqual('foo' + Function('fn', '1', '2'),
                         safe_str.jbos('foo', safe_str.literal('$(fn 1,2)')))

        self.assertEqual(
            Function('fn', '1', '2', quoted=True) + 'foo',
            safe_str.jbos(safe_str.literal("'$(fn 1,2)'"), 'foo'))
        self.assertEqual('foo' + Function('fn', '1', '2', quoted=True),
                         safe_str.jbos('foo', safe_str.literal("'$(fn 1,2)'")))
Example #9
0
    def test_concat_path(self):
        self.assertEqual(
            Function('fn', '1', '2') + path.Path('foo'),
            safe_str.jbos(safe_str.literal('$(fn 1,2)'), path.Path('foo')))
        self.assertEqual(
            path.Path('foo') + Function('fn', '1', '2'),
            safe_str.jbos(path.Path('foo'), safe_str.literal('$(fn 1,2)')))

        self.assertEqual(
            Function('fn', '1', '2', quoted=True) + path.Path('foo'),
            safe_str.jbos(safe_str.literal("'$(fn 1,2)'"), path.Path('foo')))
        self.assertEqual(
            path.Path('foo') + Function('fn', '1', '2', quoted=True),
            safe_str.jbos(path.Path('foo'), safe_str.literal("'$(fn 1,2)'")))
Example #10
0
    def test_complex(self):
        p = self.execpath
        (test_exe, driver_exe, mid_driver_exe, mid_test_exe, inner_driver_exe,
         inner_test_exe) = self.make_complex()

        cmd, deps = self._build_commands()
        self.assertEqual(deps, [test_exe, mid_test_exe, inner_test_exe])

        self.assertEqual(cmd, [
            [test_exe],
            [driver_exe, literal(
                '"' + p('mid_driver') + ' ' + p('mid_test') + r' \"' +
                p('inner_driver') + r' \\\"' + p('inner_test') +
                ' --foo' + r'\\\"\""'
            )],
        ])

        arg = wshell.split(cmd[1][1].string)
        self.assertEqual(arg, [
            p('mid_driver') + ' ' + p('mid_test') + ' "' + p('inner_driver') +
            r' \"' + p('inner_test') + ' --foo' + r'\""'
        ])

        arg = wshell.split(arg[0])
        self.assertEqual(arg, [
            p('mid_driver'),
            p('mid_test'),
            p('inner_driver') + ' "' + p('inner_test') + ' --foo' + '"'
        ])

        arg = wshell.split(arg[2])
        self.assertEqual(arg, [
            p('inner_driver'),
            p('inner_test') + ' --foo'
        ])
Example #11
0
    def test_complex(self):
        p = self.execpath
        (test_exe, driver_exe, mid_driver_exe, mid_test_exe, inner_driver_exe,
         inner_test_exe) = self.make_complex()

        cmd, deps = self._build_commands()
        self.assertEqual(deps, [test_exe, mid_test_exe, inner_test_exe])

        self.assertEqual(cmd, [
            [test_exe],
            [driver_exe, literal(
                "'" + p('mid_driver') + ' ' + p('mid_test') + r" '\''" +
                p('inner_driver') + r" '\''\'\'''\''" + p('inner_test') +
                ' --foo' + r"'\''\'\'"
            )],
        ])

        arg = pshell.split(cmd[1][1].string, escapes=True)
        self.assertEqual(arg, [
            p('mid_driver') + ' ' + p('mid_test') + " '" + p('inner_driver') +
            r" '\''" + p('inner_test') + ' --foo' + r"'\'"
        ])

        arg = pshell.split(arg[0], escapes=True)
        self.assertEqual(arg, [
            p('mid_driver'),
            p('mid_test'),
            p('inner_driver') + " '" + p('inner_test') + ' --foo' + "'"
        ])

        arg = pshell.split(arg[2], escapes=True)
        self.assertEqual(arg, [
            p('inner_driver'),
            p('inner_test') + ' --foo'
        ])
Example #12
0
 def test_shell(self):
     s = safe_str.jbos('$foo', safe_str.literal('$bar'))
     self.out.write(s, Syntax.shell)
     if platform_info().family == 'windows':
         expected = '$$foo$bar'
     else:
         expected = quoted('$$foo') + '$bar'
     self.assertEqual(self.out.stream.getvalue(), expected)
Example #13
0
 def test_shell(self):
     out = Writer(StringIO())
     s = safe_str.jbos('$foo', safe_str.literal('$bar'))
     out.write(s, Syntax.shell)
     if platform_name() == 'windows':
         expected = '$$foo$bar'
     else:
         expected = quoted('$$foo') + '$bar'
     self.assertEqual(out.stream.getvalue(), expected)
Example #14
0
    def test_jbos(self):
        self.assertEqual(
            posix.escape_line(jbos('foo', literal('bar'))),
            shell_list([jbos(shell_literal('foo'), literal('bar'))]))

        s = jbos(r'foo\bar', literal(r'baz\quux'))
        with mock.patch('bfg9000.shell.posix.platform_info',
                        return_value=self.FakePlatform('posix')):
            self.assertEqual(
                posix.escape_line(s),
                shell_list(
                    [jbos(shell_literal(r'foo\bar'), literal(r'baz\quux'))]))

        with mock.patch('bfg9000.shell.posix.platform_info',
                        return_value=self.FakePlatform('windows')):
            self.assertEqual(
                posix.escape_line(s),
                shell_list(
                    [jbos(shell_literal(r'foo\\bar'), literal(r'baz\quux'))]))
Example #15
0
 def test_jbos(self):
     j = jbos('foo', literal('='), 'bar baz')
     self.assertEqual(textify(j), 'foo=bar baz')
     self.assertEqual(textify(j, True), 'foo="bar baz"')
Example #16
0
 def test_use(self):
     self.assertEqual(
         Pattern('%.c').use(), safe_str.jbos(safe_str.literal('%'), '.c'))
Example #17
0
 def test_convert_to_str(self):
     with self.assertRaises(NotImplementedError):
         str(safe_str.literal('foo'))
     with self.assertRaises(NotImplementedError):
         str(safe_str.shell_literal('foo'))
Example #18
0
 def test_target(self):
     self.out.write(safe_str.literal('foo: $bar|baz,quux'), Syntax.target)
     self.assertEqual(self.out.stream.getvalue(), 'foo: $bar|baz,quux')
Example #19
0
 def test_concat_pattern(self):
     self.assertEqual(
         Pattern('%.c') + Pattern('%.h'),
         safe_str.jbos(safe_str.literal('%'), '.c', safe_str.literal('%'),
                       '.h'))
Example #20
0
 def test_shell(self):
     out = Writer(StringIO())
     s = safe_str.jbos('$foo', safe_str.literal('$bar'))
     out.write(s, Syntax.shell)
     self.assertEqual(out.stream.getvalue(), quoted('$$foo') + '$bar')
Example #21
0
 def test_clean(self):
     out = Writer(StringIO())
     s = safe_str.jbos('$foo', safe_str.literal('$bar'))
     out.write(s, Syntax.clean)
     self.assertEqual(out.stream.getvalue(), '$$foo$bar')
Example #22
0
 def test_variable(self):
     out = Writer(StringIO())
     s = safe_str.jbos('$foo', safe_str.literal('bar'))
     out.write(s, Syntax.variable)
     self.assertEqual(out.stream.getvalue(), '$foobar')
Example #23
0
 def test_clean(self):
     out = Writer(StringIO())
     out.write(safe_str.literal('foo: $bar|baz,quux'), Syntax.clean)
     self.assertEqual(out.stream.getvalue(), 'foo: $bar|baz,quux')
Example #24
0
 def test_input(self):
     s = safe_str.jbos('$foo', safe_str.literal('$bar'))
     self.out.write(s, Syntax.input)
     self.assertEqual(self.out.stream.getvalue(), '$$foo$bar')
Example #25
0
    def test_driver(self):
        driver_exe, test_exe = self.make_driver()

        cmd, deps = self._build_commands()
        self.assertEqual(cmd, [[driver_exe, literal(self.execpath('test'))]])
        self.assertEqual(deps, [driver_exe, test_exe])
Example #26
0
 def test_clean(self):
     self.out.write(safe_str.literal('foo: $bar'), Syntax.clean)
     self.assertEqual(self.out.stream.getvalue(), 'foo: $bar')
Example #27
0
 def test_use(self):
     self.assertEqual(Variable('foo').use(), safe_str.literal('${foo}'))
Example #28
0
 def test_shell(self):
     out = Writer(StringIO())
     out.write(safe_str.literal('foo: $bar'), Syntax.shell)
     self.assertEqual(out.stream.getvalue(), 'foo: $bar')
Example #29
0
 def test_jbos(self):
     self.assertEqual(
         windows.escape_line(jbos('foo', literal('bar'))),
         shell_list([jbos(shell_literal('foo'), literal('bar'))]))
Example #30
0
 def test_literal(self):
     self.assertEqual(textify(literal('foo bar')), 'foo bar')
     self.assertEqual(textify(literal('foo bar'), True), 'foo bar')