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))
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])
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
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
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)
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) }, ])
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])
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)
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)
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' }, ])
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') }, ])
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' }, ])
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)
def test_no_command_or_arguments(self): with self.assertRaises(ValueError): self.compdb.append( file=file_types.File(Path('foo.c', Root.srcdir)))
def setUp(self): self.env = make_env() self.build, self.context = self._make_context(self.env) self.bfgfile = file_types.File(self.build.bfgpath)
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])
def test_description(self): output = file_types.File(Path('file.txt')) self.assertEdge(Edge(self.build, output, description='desc'), output, description='desc')
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)
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)
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)
def test_simple(self): output = file_types.File(Path('file.txt')) self.assertEdge(Edge(self.build, output), output)
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)