Esempio n. 1
0
    def test_evaluate_two_defaults(self):
        """Test evaluate_defaults() with two defaults."""

        modules = [
            ('cc_defaults', {
                'name': 'libfoo-defaults',
                'a': 'libfoo_default_a',
                'b': 'libfoo_default_b',
            }),
            ('cc_defaults', {
                'name': 'libbar-defaults',
                'a': 'libbar_default_a',
                'b': 'libbar_default_b',
                'c': 'libbar_default_c',
            }),
            ('cc_library', {
                'name': 'libfoo',
                'defaults': ['libfoo-defaults', 'libbar-defaults'],
                'a': 'specified_a',
            }),
        ]

        modules = evaluate_defaults(modules)

        module = modules[-1][1]
        self.assertEqual(module['name'], 'libfoo')
        self.assertEqual(module['a'], 'specified_a')
        self.assertEqual(module['b'], 'libfoo_default_b')
        self.assertEqual(module['c'], 'libbar_default_c')
Esempio n. 2
0
    def test_evaluate_two_defaults(self):
        """Test evaluate_defaults() with two defaults."""

        modules = [
            ('cc_defaults', {
                'name': 'libfoo-defaults',
                'a': 'libfoo_default_a',
                'b': 'libfoo_default_b',
            }),
            ('cc_defaults', {
                'name': 'libbar-defaults',
                'a': 'libbar_default_a',
                'b': 'libbar_default_b',
                'c': 'libbar_default_c',
            }),
            ('cc_library', {
                'name': 'libfoo',
                'defaults': ['libfoo-defaults', 'libbar-defaults'],
                'a': 'specified_a',
            }),
        ]

        modules = evaluate_defaults(modules)

        module = modules[-1][1]
        self.assertEqual(module['name'], 'libfoo')
        self.assertEqual(module['a'], 'specified_a')
        self.assertEqual(module['b'], 'libfoo_default_b')
        self.assertEqual(module['c'], 'libbar_default_c')
Esempio n. 3
0
    def parse_root_bp(self, root_bp_path):
        """Parse blueprint files and add module definitions."""

        parser = RecursiveParser()
        parser.parse_file(root_bp_path)
        parsed_items = evaluate_defaults(parser.modules)

        self._add_modules_from_parsed_pairs(parsed_items)
Esempio n. 4
0
    def test_skip_modules_without_name(self):
        """Test whether evaluate_defaults() skips modules without names."""

        modules = [('special_rules', {})]

        try:
            modules = evaluate_defaults(modules)
        except KeyError:
            self.fail('modules without names must not cause KeyErrors')
Esempio n. 5
0
    def test_skip_modules_without_name(self):
        """Test whether evaluate_defaults() skips modules without names."""

        modules = [('special_rules', {})]

        try:
            modules = evaluate_defaults(modules)
        except KeyError:
            self.fail('modules without names must not cause KeyErrors')
Esempio n. 6
0
    def parse_root_bp(self, root_bp_path, namespaces=None):
        """Parse blueprint files and add module definitions."""

        namespaces = {''} if namespaces is None else set(namespaces)

        parser = RecursiveParser()
        parser.parse_file(root_bp_path)
        parsed_items = evaluate_defaults(parser.modules)
        parsed_items = fill_module_namespaces(root_bp_path, parsed_items)

        self._add_modules_from_parsed_pairs(parsed_items, namespaces)
Esempio n. 7
0
    def parse_root_bp(self, root_bp_path, namespaces=None):
        """Parse blueprint files and add module definitions."""

        namespaces = {''} if namespaces is None else set(namespaces)

        parser = RecursiveParser()
        parser.parse_file(root_bp_path)
        parsed_items = evaluate_defaults(parser.modules)
        parsed_items = fill_module_namespaces(root_bp_path, parsed_items)

        self._add_modules_from_parsed_pairs(parsed_items, namespaces)
Esempio n. 8
0
def main():
    """Main function."""

    args = _parse_args()

    parser = RecursiveParser()
    parser.parse_file(args.root_bp)

    all_bad_deps = _check_modules_deps(evaluate_defaults(parser.modules))
    for name, bad_deps in all_bad_deps:
        print('ERROR: {!r} must not depend on {}'.format(name, bad_deps),
              file=sys.stderr)

    if all_bad_deps:
        sys.exit(1)
Esempio n. 9
0
    def test_evaluate_recursive_diamond(self):
        """Test whether evaluate_defaults() can evaluate diamond defaults
        recursively."""

        modules = [
            ('cc_defaults', {
                'name': 'libfoo-defaults',
                'defaults': ['libtest-defaults'],
                'a': 'libfoo_default_a',
                'b': 'libfoo_default_b',
            }),
            ('cc_defaults', {
                'name': 'libbar-defaults',
                'defaults': ['libtest-defaults'],
                'a': 'libbar_default_a',
                'b': 'libbar_default_b',
                'c': 'libbar_default_c',
                'd': 'libbar_default_d',
            }),
            ('cc_defaults', {
                'name': 'libtest-defaults',
                'a': 'libtest_default_a',
                'b': 'libtest_default_b',
                'c': 'libtest_default_c',
                'e': 'libtest_default_e',
            }),
            ('cc_library', {
                'name': 'libfoo',
                'defaults': ['libfoo-defaults', 'libbar-defaults'],
                'a': 'specified_a',
            }),
        ]

        modules = evaluate_defaults(modules)

        module = modules[-1][1]
        self.assertEqual(module['name'], 'libfoo')
        self.assertEqual(module['a'], 'specified_a')
        self.assertEqual(module['b'], 'libfoo_default_b')
        self.assertEqual(module['c'], 'libtest_default_c')
        self.assertEqual(module['d'], 'libbar_default_d')
        self.assertEqual(module['e'], 'libtest_default_e')
Esempio n. 10
0
    def test_evaluate_recursive_diamond(self):
        """Test whether evaluate_defaults() can evaluate diamond defaults
        recursively."""

        modules = [
            ('cc_defaults', {
                'name': 'libfoo-defaults',
                'defaults': ['libtest-defaults'],
                'a': 'libfoo_default_a',
                'b': 'libfoo_default_b',
            }),
            ('cc_defaults', {
                'name': 'libbar-defaults',
                'defaults': ['libtest-defaults'],
                'a': 'libbar_default_a',
                'b': 'libbar_default_b',
                'c': 'libbar_default_c',
                'd': 'libbar_default_d',
            }),
            ('cc_defaults', {
                'name': 'libtest-defaults',
                'a': 'libtest_default_a',
                'b': 'libtest_default_b',
                'c': 'libtest_default_c',
                'e': 'libtest_default_e',
            }),
            ('cc_library', {
                'name': 'libfoo',
                'defaults': ['libfoo-defaults', 'libbar-defaults'],
                'a': 'specified_a',
            }),
        ]

        modules = evaluate_defaults(modules)

        module = modules[-1][1]
        self.assertEqual(module['name'], 'libfoo')
        self.assertEqual(module['a'], 'specified_a')
        self.assertEqual(module['b'], 'libfoo_default_b')
        self.assertEqual(module['c'], 'libtest_default_c')
        self.assertEqual(module['d'], 'libbar_default_d')
        self.assertEqual(module['e'], 'libtest_default_e')
def parse_blueprint(root_bp_path):
    """Parse Android.bp files."""
    parser = RecursiveParser()
    parser.parse_file(root_bp_path)
    parsed_items = evaluate_defaults(parser.modules)
    return fill_module_namespaces(root_bp_path, parsed_items)
def parse_blueprint(root_bp_path):
    """Parse Android.bp files."""
    parser = RecursiveParser()
    parser.parse_file(root_bp_path)
    parsed_items = evaluate_defaults(parser.modules)
    return fill_module_namespaces(root_bp_path, parsed_items)