Beispiel #1
0
    def test_make_directory(self):
        expected = file_types.File(Path('dir/file.txt'))
        copy_file = self.context['copy_file']

        result = copy_file('file.txt', directory='dir')
        self.assertSameFile(result, expected)

        src = self.context['generic_file']('file.txt')
        result = copy_file(src, directory='dir')
        self.assertSameFile(result, expected)

        result = copy_file('file.txt', directory='dir/')
        self.assertSameFile(result, expected)

        result = copy_file('file.txt', directory=Path('dir'))
        self.assertSameFile(result, expected)

        result = copy_file('dir1/file.txt', directory='dir2')
        self.assertSameFile(result,
                            file_types.File(Path('dir2/dir1/file.txt')))

        result = copy_file('copied.txt', 'file.txt', directory='dir')
        self.assertSameFile(result, file_types.File(Path('copied.txt')))

        self.assertRaises(ValueError,
                          copy_file,
                          file='file.txt',
                          directory=Path('dir', Root.srcdir))
Beispiel #2
0
    def test_private_outputs(self):
        output = [file_types.File(Path('foo.txt')),
                  file_types.File(Path('bar.txt'))]
        output[1].private = True

        self.assertEdge(Edge(self.build, output),
                        output, public_output=output[0])
Beispiel #3
0
    def make_file_list(self, prefix=''):
        files = [file_types.File(Path(i, Root.builddir))
                 for i in [prefix + 'file1', prefix + 'file2']]
        src_files = [file_types.File(Path(i, Root.srcdir))
                     for i in [prefix + 'file1', prefix + 'file2']]

        file_list = self.context['copy_files'](src_files)
        return file_list, files, src_files
Beispiel #4
0
    def make_file_list(self):
        files = [
            file_types.File(Path(i, Root.builddir))
            for i in ['file1', 'file2']
        ]
        src_files = [
            file_types.File(Path(i, Root.srcdir)) for i in ['file1', 'file2']
        ]

        file_list = self.builtin_dict['copy_files'](src_files)
        return file_list, files, src_files
Beispiel #5
0
 def test_type_multiple_files(self):
     result = self.context['build_step'](['hello.tab.h', 'hello.tab.c'],
                                         cmd=['bison', 'hello.y'],
                                         type=self.context['generic_file'])
     expected = [
         file_types.File(Path('hello.tab.h', Root.builddir)),
         file_types.File(Path('hello.tab.c', Root.builddir))
     ]
     for i, j in zip(result, expected):
         self.assertSameFile(i, j)
         self.assertCommand(i.creator, [['bison', 'hello.y']], phony=False)
Beispiel #6
0
    def test_command(self):
        file = file_types.File(Path('foo.c', Root.srcdir))
        output = file_types.File(Path('foo.o'))
        self.compdb.append(file=file, output=output, command='cc foo.c')

        self.assertEqual(self._db_to_json(), [
            {
                'directory': self.env.builddir.string(),
                'command': 'cc foo.c',
                'file': file.path.string(self.base_dirs),
                'output': output.path.string(self.base_dirs)
            },
        ])
Beispiel #7
0
    def test_extra_deps(self):
        dep = file_types.File(Path('dep.txt', Root.srcdir))
        dep2 = file_types.File(Path('dep.txt', Root.builddir))
        output = file_types.File(Path('file.txt'))

        self.assertEdge(Edge(self.build, output, extra_deps=dep),
                        output, extra_deps=[dep])
        self.assertEdge(Edge(self.build, output, extra_deps=dep2),
                        output, extra_deps=[dep2])
        self.assertEdge(Edge(self.build, output, extra_deps=dep.path),
                        output, extra_deps=[dep])
        self.assertEdge(Edge(self.build, output, extra_deps=dep2.path),
                        output, extra_deps=[dep2])
        self.assertEdge(Edge(self.build, output, extra_deps='dep.txt'),
                        output, extra_deps=[dep])
Beispiel #8
0
 def test_type(self):
     result = self.context['build_step']('lex.yy.c',
                                         cmd=['lex', 'foo.lex'],
                                         type=self.context['generic_file'])
     expected = file_types.File(Path('lex.yy.c', Root.builddir))
     self.assertSameFile(result, expected)
     self.assertCommand(result.creator, [['lex', 'foo.lex']], phony=False)
Beispiel #9
0
 def setUp(self):
     self.env = make_env()
     self.build = BuildInputs(self.env, Path('build.bfg', Root.srcdir))
     self.context = builtin.BuildContext(self.env, self.build, None)
     self.context.path_stack.append(
         builtin.BuildContext.PathEntry(self.build.bfgpath))
     self.bfgfile = file_types.File(self.build.bfgpath)
Beispiel #10
0
    def test_arguments_funky_shell_list(self):
        file = file_types.File(Path('foo.c', Root.srcdir))
        output = file_types.File(Path('foo.o'))
        self.compdb.append(file=file,
                           output=output,
                           arguments=shell_list(
                               ['cmd', shell_literal('<') + 'foo bar']))

        self.assertEqual(self._db_to_json(), [
            {
                'directory': self.env.builddir.string(),
                'command': 'cmd <{}'.format(shell_quote('foo bar')),
                'file': file.path.string(self.base_dirs),
                'output': 'foo.o'
            },
        ])
Beispiel #11
0
    def test_directory(self):
        directory = self.env.builddir.append('subdir')
        file = file_types.File(Path('foo.c', Root.srcdir))
        output = file_types.File(Path('foo.o'))
        self.compdb.append(directory=directory,
                           file=file,
                           output=output,
                           command='cc foo.c')

        self.assertEqual(self._db_to_json(), [
            {
                'directory': directory.string(),
                'command': 'cc foo.c',
                'file': file.path.string(self.base_dirs),
                'output': os.path.join('..', 'foo.o')
            },
        ])
Beispiel #12
0
    def test_arguments(self):
        file = file_types.File(Path('foo.c', Root.srcdir))
        output = file_types.File(Path('foo.o'))
        self.compdb.append(file=file,
                           output=output,
                           arguments=['cc', file, '-o' + output])

        self.assertEqual(self._db_to_json(), [
            {
                'directory':
                self.env.builddir.string(),
                'arguments': [
                    'cc',
                    file.path.string(self.base_dirs),
                    '-o' + output.path.string(self.base_dirs)
                ],
                'file':
                file.path.string(self.base_dirs),
                'output':
                'foo.o'
            },
        ])
Beispiel #13
0
    def test_make_simple(self):
        expected = file_types.File(Path('file.txt'))
        result = self.context['copy_file'](file='file.txt')
        self.assertSameFile(result, expected)

        result = self.context['copy_file']('file.txt', 'src.txt')
        self.assertSameFile(result, expected)

        result = self.context['copy_file']('file.txt')
        self.assertSameFile(result, expected)

        src = self.context['generic_file']('file.txt')
        result = self.context['copy_file'](src)
        self.assertSameFile(result, expected)
Beispiel #14
0
 def test_no_command_or_arguments(self):
     with self.assertRaises(ValueError):
         self.compdb.append(
             file=file_types.File(Path('foo.c', Root.srcdir)))
Beispiel #15
0
 def setUp(self):
     self.env = make_env()
     self.build, self.context = self._make_context(self.env)
     self.bfgfile = file_types.File(self.build.bfgpath)
Beispiel #16
0
 def test_extra_deps(self):
     dep = self.context['generic_file']('dep.txt')
     expected = file_types.File(Path('file.txt'))
     result = self.context['copy_file'](file='file.txt', extra_deps=[dep])
     self.assertSameFile(result, expected)
     self.assertEqual(result.creator.extra_deps, [dep])
Beispiel #17
0
 def test_description(self):
     output = file_types.File(Path('file.txt'))
     self.assertEdge(Edge(self.build, output, description='desc'),
                     output, description='desc')
Beispiel #18
0
 def setUp(self):
     self.env = make_env(self.mock_platform, clear_variables=True)
     self.build, self.context = self._make_context(self.env)
     self.bfgfile = file_types.File(self.build.bfgpath)
Beispiel #19
0
 def test_final_output(self):
     output = file_types.File(Path('file.txt'))
     final = file_types.File(Path('final.txt'))
     self.assertEdge(Edge(self.build, output, final),
                     output, public_output=final)
Beispiel #20
0
 def test_multiple_outputs(self):
     output = [file_types.File(Path('foo.txt')),
               file_types.File(Path('bar.txt'))]
     self.assertEdge(Edge(self.build, output), output)
Beispiel #21
0
 def test_simple(self):
     output = file_types.File(Path('file.txt'))
     self.assertEdge(Edge(self.build, output), output)
Beispiel #22
0
 def setUp(self):
     self.env = make_env()
     self.build = BuildInputs(self.env, Path('build.bfg', Root.srcdir))
     self.builtin_dict = self.bind()
     self.bfgfile = file_types.File(self.build.bfgpath)