def test_compose_from_description_with_customized_bit_compilation(self, filesystem): yaml_load = { 'name': 'HalfLife3', 'build': { 'bits': { 'arduino': { 'version': '1.0.0', 'target': 'nano33', 'cflags': ['-DBIT_FLAG'] } } } } filesystem.find.side_effect = [['tests/test_one.cpp'], ['nano33/nano33.cpp'], []] filesystem.parent_directory.return_value = '.' project_description = project_descriptor_parser.parse_yaml(yaml_load) arduino_bit = ProjectDescriptor( name='arduino', targets={ 'nano33': TargetDescription( name='nano33', build=CompilationPlan( cflags=['-mcpu=atmel'], packages=[PackageDescription(path='nano33')] ) ) }, declared_bit=project_description.build.declared_bits[0] ) project_description.build.bits['arduino'] = arduino_bit project = project_composer.compose(project_description, 'default') assert project.target.bits[0].packages[0].path == 'bits/arduino/nano33' assert project.target.bits[0].packages[0].cflags == ['-mcpu=atmel', '-DBIT_FLAG']
def test_should_compose_project_from_project_description_with_one_build_package( self, filesystem): yaml_load = { 'name': 'HalfLife3', 'build': { 'packages': { 'shaders': { 'cflags': ['-DUSE_PORTAL_GUN'] } }, 'cflags': ['-Wall'], 'ldflags': ['-pg'], 'libraries': ['pthread'] } } filesystem.find.side_effect = [['shaders/shader.cpp'], ['shaders/water.c'], []] filesystem.parent_directory.return_value = '.' project_description = project_descriptor_parser.parse_yaml(yaml_load) project = project_composer.compose(project_description) assert len(project.targets['default'].packages) == 1 assert project.targets['default'].packages[0].path == 'shaders' assert project.targets['default'].packages[0].sources == [ 'shaders/shader.cpp', 'shaders/water.c' ] assert project.targets['default'].packages[0].cflags == [ '-DUSE_PORTAL_GUN' ] assert project.targets['default'].cflags == ['-Wall'] assert project.targets['default'].ldflags == ['-pg'] assert project.targets['default'].libraries == ['pthread'] assert project.targets['default'].include_directories == {'.'}
def load(self, directory): project_descriptor = project_descriptor_parser.parse_from(directory) # TODO: Target specific bits self.parse_build_bit_descriptors(project_descriptor.build.bits, project_descriptor.build.declared_bits, lambda description: description.build.declared_bits) self.parse_build_bit_descriptors(project_descriptor.test.bits, project_descriptor.test.declared_bits, lambda description: description.test.declared_bits) return project_composer.compose(project_descriptor)
def test_should_compose_project_from_project_description_with_one_test(self, filesystem): yaml_load = { 'name': 'HalfLife3', } filesystem.find.side_effect = [['tests/test_one.cpp']] filesystem.parent_directory.return_value = '.' project_description = project_descriptor_parser.parse_yaml(yaml_load) project = project_composer.compose(project_description, 'default') assert len(project.test.test_suites) == 1 assert project.test.test_suites[0].name == 'test_one' assert project.test.test_suites[0].main == 'tests/test_one.cpp'
def test_should_compose_project_from_project_description_without_packages(self): yaml_load = { 'name': 'HalfLife3', 'version': '1.0', 'description': 'I want to believe' } project_description = project_descriptor_parser.parse_yaml(yaml_load) project = project_composer.compose(project_description, 'default') assert project.name == 'HalfLife3' assert project.version == '1.0' assert project.description == 'I want to believe' assert project.target.name == 'default' assert project.target.main == 'main.cpp'
def load(self, directory, target_name='default'): project_descriptor = project_descriptor_parser.parse_from(directory) if not target_is_valid(project_descriptor, target_name): raise InvalidTarget # TODO: Target specific bits self.parse_bit_build_descriptors( project_descriptor.build.bits, project_descriptor.build.declared_bits, lambda description: description.build.declared_bits) self.parse_bit_build_descriptors( project_descriptor.test.bits, project_descriptor.test.declared_bits, lambda description: description.test.declared_bits) return project_composer.compose(project_descriptor, target_name)
def test_should_compose_project_from_project_description_with_one_target_build_package(self, filesystem): yaml_load = { 'name': 'HalfLife3', 'targets': { 'default': { 'build': { 'packages': { 'shaders': { 'cflags': ['-DUSE_PORTAL_GUN'] } }, 'cflags': ['-Wall'], 'ldflags': ['-pg'], 'libraries': ['pthread'] }, 'post_build': ['./post_build.sh'], 'main': 'main.c', 'image': 'cpmbits/docker', 'test_image': 'cpmbits/docker_test', 'test_dockerfile': 'test.Dockerfile', 'toolchain_prefix': 'arm-linux-gnueabi-' } } } filesystem.find.side_effect = [['shaders/shader.cpp'], ['shaders/water.c'], []] filesystem.parent_directory.return_value = '.' project_description = project_descriptor_parser.parse_yaml(yaml_load) project = project_composer.compose(project_description, 'default') assert len(project.target.packages) == 1 assert project.target.packages[0].path == 'shaders' assert project.target.packages[0].sources == ['shaders/shader.cpp', 'shaders/water.c'] assert project.target.packages[0].cflags == ['-DUSE_PORTAL_GUN', '-Wall'] assert project.target.cflags == ['-Wall'] assert project.target.ldflags == ['-pg'] assert project.target.libraries == ['pthread'] assert project.target.include_directories == {'.'} assert project.target.post_build == ['./post_build.sh'] assert project.target.main == 'main.c' assert project.target.image == 'cpmbits/docker' assert project.target.test_image == 'cpmbits/docker_test' assert project.target.test_dockerfile == 'test.Dockerfile' assert project.target.toolchain_prefix == 'arm-linux-gnueabi-'