blob: c64623a72238aec45aaed1b561e9770e6148f59e [file] [log] [blame]
Ned Nguyene5d04852019-02-19 16:33:15 -07001# -*- coding: utf-8 -*-
2# Copyright 2019 The Chromium OS Authors. All rights reserved.
3# Use of this source code is governed by a BSD-style license that can be
4# found in the LICENSE file.
5"""Board build dependency service tests."""
6
7from __future__ import print_function
8
Alex Kleinb7cdbe62019-02-22 11:41:32 -07009from chromite.api.controller import board_build_dependency
Ned Nguyene5d04852019-02-19 16:33:15 -070010from chromite.lib import cros_test_lib
11
12
13class BoardBuilDependencyTest(cros_test_lib.TestCase):
14 """Unittests for board_build_dependency."""
15
16 def testCreateDepGraphProtoFromJsonMap(self):
17 json_deps = {
18 'target_board': 'deathstar',
19 'package_deps': {
20 'commander/darthvader-1.49.3.3': {
21 'action': 'merge',
22 'category': 'commander',
23 'cpes': [],
24 'deps': ['troop/clone', 'troop/robot'],
25 'rev_deps': [],
26 'full_name': 'commander/darthvader-1.49.3.3',
27 'name': 'darthvader',
28 'version': '1.49.3.3'
29 },
30 'troop/clone-1.2.3': {
31 'action': 'merge',
32 'category': 'troop',
33 'cpes': [],
34 'deps': [],
35 'rev_deps': ['commander/darthvader'],
36 'full_name': 'troop/clone-1.2.3',
37 'name': 'clone',
38 'version': '1.2.3'
39 },
40 'troop/robot-2.3.4': {
41 'action': 'merge',
42 'category': 'troop',
43 'cpes': [],
44 'deps': [],
45 'rev_deps': ['commander/darthvader'],
46 'full_name': 'troop/robot-2.3.4',
Ned Nguyen8be10052019-02-26 08:58:45 -070047 'name': 'robot',
Ned Nguyene5d04852019-02-19 16:33:15 -070048 'version': '2.3.4'
49 },
50 },
51 'source_path_mapping': {
Ned Nguyen8be10052019-02-26 08:58:45 -070052 'commander/darthvader-1.49.3.3': ['/control/room'],
53 'troop/clone-1.2.3': ['/bunker'],
54 'troop/robot-2.3.4': ['/factory'],
Ned Nguyene5d04852019-02-19 16:33:15 -070055 },
56 }
57
58 depgraph_proto = board_build_dependency.CreateDepGraphProtoFromJsonMap(
59 json_deps)
60 self.assertEqual(depgraph_proto.build_target.name, 'deathstar')
61 darthvader_dep = None
62 for package_dep_info in depgraph_proto.package_deps:
63 if package_dep_info.package_info.package_name == 'darthvader':
64 darthvader_dep = package_dep_info
65 self.assertTrue(darthvader_dep)
66 self.assertEquals(darthvader_dep.dependency_packages[0].category,
67 'troop')
68 self.assertEquals(darthvader_dep.dependency_packages[0].package_name,
69 'clone')
70 self.assertEquals(darthvader_dep.dependency_source_paths[0].path,
71 '/control/room')