def test_parse_project_descriptor_with_customized_bit_compilation(self):
     yaml_contents = {
         'name': 'bender bender rodriguez',
         'version': '1.0',
         'description': 'kill all humans',
         'build': {
             'packages': {
                 'cpmhub/http': None
             },
             'bits': {
                 'sqlite3': {
                     'version': '3.32.3',
                     'cflags': ['-DCUSTOM_BIT_DEFINE'],
                     'target': 'arduinoNano33'
                 }
             }
         }
     }
     project = project_descriptor_parser.parse_yaml(yaml_contents)
     assert project.build.packages == [
         project_descriptor.PackageDescription('cpmhub/http')
     ]
     assert project.build.declared_bits[
         0] == project_descriptor.DeclaredBit(
             name='sqlite3',
             version='3.32.3',
             cflags=['-DCUSTOM_BIT_DEFINE'],
             target='arduinoNano33')
 def test_parse_project_descriptor_with_default_target_image(self):
     yaml_contents = {
         'name': 'bender bender rodriguez',
         'version': '1.0',
         'description': 'kill all humans',
         'targets': {
             'default': {
                 'image': 'cpmbits/bender',
                 'main': 'main.c',
                 'test_image': 'cpmbits/bender_test',
                 'test_dockerfile': 'test.Dockerfile',
                 'toolchain_prefix': 'arm-linux-gnueabi-'
             }
         }
     }
     project = project_descriptor_parser.parse_yaml(yaml_contents)
     assert project.targets == {
         'default':
         project_descriptor.TargetDescription(
             'default',
             image='cpmbits/bender',
             main='main.c',
             test_image='cpmbits/bender_test',
             test_dockerfile='test.Dockerfile',
             toolchain_prefix='arm-linux-gnueabi-')
     }
 def test_parse_project_descriptor_with_target_build_compilation_plan(self):
     yaml_contents = {
         'name': 'bender bender rodriguez',
         'version': '1.0',
         'description': 'kill all humans',
         'targets': {
             'arduino': {
                 'dockerfile': 'Dockerfile',
                 'build': {
                     'packages': {
                         'arduino': {},
                     },
                     'ldflags': ['-Wl,--wrap=malloc']
                 },
                 'post_build': ['./scripts/package.sh']
             }
         }
     }
     project = project_descriptor_parser.parse_yaml(yaml_contents)
     assert project.targets['arduino'].build.packages == [
         project_descriptor.PackageDescription('arduino')
     ]
     assert project.targets['arduino'].build.ldflags == [
         '-Wl,--wrap=malloc'
     ]
     assert project.build_packages() == [
         project_descriptor.PackageDescription('arduino')
     ]
     assert project.targets['arduino'].dockerfile == 'Dockerfile'
     assert project.targets['arduino'].post_build == [
         './scripts/package.sh'
     ]
    def test_parse_project_descriptor_with_just_the_project_information(
            self, filesystem):
        yaml_payload = '''name: 'bender bender rodriguez'
version: '1.0'
description: 'kill all humans'
build:
    packages:
    bits:
    cflags:
test:
targets:
'''
        yaml = YAML()
        yaml_document = yaml.load(yaml_payload)
        project_descriptor = project_descriptor_parser.parse_yaml(
            yaml_document)
        project_descriptor.yaml_document = yaml_document

        project_descriptor_editor.update('.', project_descriptor, {
            'name': 'pepito',
            'version': '1.0.0'
        })

        filesystem.write_file.assert_called_with(
            f'./{PROJECT_DESCRIPTOR_FILE}', '''name: pepito
version: 1.0.0
description: kill all humans
build:
  packages:
  bits:
  cflags:
test:
targets:
''')
Example #5
0
 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 test_parse_project_descriptor_with_build_compilation_plan(self):
     yaml_contents = {
         'name': 'bender bender rodriguez',
         'version': '1.0',
         'description': 'kill all humans',
         'build': {
             'packages': {
                 'cpmhub/bits': {
                     'cflags': ['-DHOLA']
                 },
                 'cpmhub/http': None
             },
             'bits': {
                 'sqlite3': '3.32.3'
             },
             'cflags': ['-std=c++11'],
             'ldflags': ['-pg'],
             'libraries': ['pthread']
         }
     }
     project = project_descriptor_parser.parse_yaml(yaml_contents)
     assert project.build.packages == [
         project_descriptor.PackageDescription('cpmhub/bits',
                                               cflags=['-DHOLA']),
         project_descriptor.PackageDescription('cpmhub/http')
     ]
     assert project.build.cflags == ['-std=c++11']
     assert project.build.ldflags == ['-pg']
     assert project.build.libraries == ['pthread']
     assert len(project.build.declared_bits) == 1
     assert project.build.declared_bits[
         0] == project_descriptor.DeclaredBit('sqlite3', '3.32.3')
Example #7
0
 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']
Example #8
0
 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'
Example #9
0
 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 test_parse_project_descriptor_with_test_compilation_plan(self):
     yaml_contents = {
         'name': 'bender bender rodriguez',
         'version': '1.0',
         'description': 'kill all humans',
         'test': {
             'packages': {
                 'cpmhub/bits': {},
                 'cpmhub/http': {}
             }
         }
     }
     project = project_descriptor_parser.parse_yaml(yaml_contents)
     assert project.test.packages == [
         project_descriptor.PackageDescription('cpmhub/bits'),
         project_descriptor.PackageDescription('cpmhub/http')
     ]
 def test_parse_project_descriptor_with_default_target_image(self):
     yaml_contents = {
         'name': 'bender bender rodriguez',
         'version': '1.0',
         'description': 'kill all humans',
         'targets': {
             'default': {
                 'image': 'cpmbits/bender',
                 'main': 'main.c'
             }
         }
     }
     project = project_descriptor_parser.parse_yaml(yaml_contents)
     assert project.targets == {
         'default':
         project_descriptor.TargetDescription('default',
                                              image='cpmbits/bender',
                                              main='main.c')
     }
Example #12
0
 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-'
 def test_parse_project_descriptor_with_target_test_compilation_plan(self):
     yaml_contents = {
         'name': 'bender bender rodriguez',
         'version': '1.0',
         'description': 'kill all humans',
         'targets': {
             'arduino': {
                 'image': 'cpmbits/arduino',
                 'test': {
                     'packages': {
                         'arduino': {},
                     }
                 }
             }
         }
     }
     project = project_descriptor_parser.parse_yaml(yaml_contents)
     assert project.targets['arduino'].test.packages == [
         project_descriptor.PackageDescription('arduino')
     ]
 def test_parse_project_descriptor_with_just_the_project_information(self):
     yaml_contents = {
         'name': 'bender bender rodriguez',
         'version': '1.0',
         'description': 'kill all humans',
         'build': {
             'packages': None,
             'bits': None,
             'cflags': None
         },
         'test': None,
         'targets': None
     }
     project = project_descriptor_parser.parse_yaml(yaml_contents)
     assert project == project_descriptor.ProjectDescriptor(
         name='bender bender rodriguez',
         version='1.0',
         description='kill all humans',
         targets={
             'default': project_descriptor.TargetDescription('default')
         })
 def test_parse_project_descriptor_with_target_build_compilation_plan(self):
     yaml_contents = {
         'name': 'bender bender rodriguez',
         'version': '1.0',
         'description': 'kill all humans',
         'targets': {
             'arduino': {
                 'dockerfile': 'Dockerfile',
                 'build': {
                     'packages': {
                         'arduino': {},
                     }
                 }
             }
         }
     }
     project = project_descriptor_parser.parse_yaml(yaml_contents)
     assert project.targets['arduino'].build.packages == [
         project_descriptor.PackageDescription('arduino')
     ]
     assert project.targets['arduino'].dockerfile == 'Dockerfile'