blob: b239d5a2b9793b30d57671a85f2d42b085a2fd9a [file] [log] [blame]
Ned Nguyen3bbd2072019-01-28 19:33:41 -07001# Copyright 2019 The Chromium OS Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5"""Test cros_extract_deps."""
6
Ned Nguyen3bbd2072019-01-28 19:33:41 -07007from chromite.lib import cros_test_lib
8from chromite.scripts import cros_extract_deps
9
Mike Frysinger807d8282022-04-28 22:45:17 -040010
Greg Edelstona4c9b3b2020-01-07 17:51:13 -070011pytestmark = cros_test_lib.pytestmark_inside_only
12
Ned Nguyen3bbd2072019-01-28 19:33:41 -070013
14class FlattenDepTreeTest(cros_test_lib.TestCase):
15 """Tests for cros_extract_deps.FlattenDepTree."""
16
17 def testFlattenDepTreeSimple(self):
18 dep_tree = {
19 'deathstar/darthvader-2.3': {
20 'action': 'merge',
21 'deps': {
22 'deathstar/trooper-1.2': {
23 'action': 'merge',
24 'deps': {
25 'weapon/blasterpistol-2.1': {
26 'action': 'merge',
27 'deps': {},
28 'deptype': 'runtime',
29 }
30 },
31 'deptype': 'runtime',
32 },
33 'deathstar/pilot-2.3': {
34 'action': 'merge',
35 'deps': {},
36 'deptype': 'runtime',
37 },
38 'deathstar/commander-2.3': {
39 'action': 'merge',
40 'deps': {},
41 'deptype': 'runtime',
42 },
43 },
44 },
45 }
46 flatten_dep_tree = {
47 'weapon/blasterpistol-2.1': {
48 'rev_deps': ['deathstar/trooper-1.2'],
49 'category': 'weapon',
50 'version': '2.1',
51 'name': 'blasterpistol',
52 'deps': [],
53 'action': 'merge',
54 'cpes': [],
55 'full_name': 'weapon/blasterpistol-2.1',
56 },
57 'deathstar/darthvader-2.3': {
58 'rev_deps': [],
59 'category': 'deathstar',
60 'version': '2.3',
61 'name': 'darthvader',
62 'deps': [
63 'deathstar/commander-2.3', 'deathstar/pilot-2.3',
64 'deathstar/trooper-1.2',
65 ],
66 'action': 'merge',
67 'cpes': [],
68 'full_name': 'deathstar/darthvader-2.3',
69 },
70 'deathstar/pilot-2.3': {
71 'rev_deps': ['deathstar/darthvader-2.3'],
72 'category': 'deathstar',
73 'version': '2.3',
74 'name': 'pilot',
75 'deps': [],
76 'action': 'merge',
77 'cpes': [],
78 'full_name': 'deathstar/pilot-2.3',
79 },
80 'deathstar/commander-2.3': {
81 'rev_deps': ['deathstar/darthvader-2.3'],
82 'category': 'deathstar',
83 'version': '2.3',
84 'name': 'commander',
85 'deps': [],
86 'action': 'merge',
87 'cpes': [],
88 'full_name': 'deathstar/commander-2.3',
89 },
90 'deathstar/trooper-1.2': {
91 'rev_deps': ['deathstar/darthvader-2.3'],
92 'category': 'deathstar',
93 'version': '1.2',
94 'name': 'trooper',
95 'deps': ['weapon/blasterpistol-2.1'],
96 'action': 'merge',
97 'cpes': [],
98 'full_name': 'deathstar/trooper-1.2',
99 }
100 }
Mike Frysinger2d589a12019-08-25 14:15:12 -0400101 self.assertEqual(
Ned Nguyen3bbd2072019-01-28 19:33:41 -0700102 cros_extract_deps.FlattenDepTree(dep_tree), flatten_dep_tree)
Mike Frysinger44b83812019-12-10 00:09:30 -0500103
104
105class GetCPEFromCPVTest(cros_test_lib.RunCommandTestCase):
106 """Tests for cros_extract_deps.GetCPEFromCPV."""
107
108 def testGetCPEFromCPV(self):
109 """Check GetCPEFromCPV behavior."""
110 stdout = """Remote-ID: cpe:/a:curl:curl ID: cpe
111Remote-ID: cpe:/a:curl:libcurl ID: cpe
112Remote-ID: cpe:/a:haxx:curl ID: cpe
113Remote-ID: cpe:/a:haxx:libcurl ID: cpe
114Homepage: https://curl.haxx.se/
115License: MIT
116"""
117 self.rc.AddCmdResult(['equery', 'm', '-U', 'net-misc/curl'], stdout=stdout)
118 self.assertEqual([
119 'cpe:/a:curl:curl:7.3.0',
120 'cpe:/a:curl:libcurl:7.3.0',
121 'cpe:/a:haxx:curl:7.3.0',
122 'cpe:/a:haxx:libcurl:7.3.0',
123 ], cros_extract_deps.GetCPEFromCPV('net-misc', 'curl', '7.3.0'))