blob: 76fede8fc34356e67ba5ca0971331f8c3ef2b4fa [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):
Alex Klein1699fab2022-09-08 08:46:06 -060015 """Tests for cros_extract_deps.FlattenDepTree."""
Ned Nguyen3bbd2072019-01-28 19:33:41 -070016
Alex Klein1699fab2022-09-08 08:46:06 -060017 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",
Ned Nguyen3bbd2072019-01-28 19:33:41 -070032 },
Alex Klein1699fab2022-09-08 08:46:06 -060033 "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 },
Ned Nguyen3bbd2072019-01-28 19:33:41 -070043 },
44 },
Ned Nguyen3bbd2072019-01-28 19:33:41 -070045 }
Alex Klein1699fab2022-09-08 08:46:06 -060046 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",
64 "deathstar/pilot-2.3",
65 "deathstar/trooper-1.2",
66 ],
67 "action": "merge",
68 "cpes": [],
69 "full_name": "deathstar/darthvader-2.3",
70 },
71 "deathstar/pilot-2.3": {
72 "rev_deps": ["deathstar/darthvader-2.3"],
73 "category": "deathstar",
74 "version": "2.3",
75 "name": "pilot",
76 "deps": [],
77 "action": "merge",
78 "cpes": [],
79 "full_name": "deathstar/pilot-2.3",
80 },
81 "deathstar/commander-2.3": {
82 "rev_deps": ["deathstar/darthvader-2.3"],
83 "category": "deathstar",
84 "version": "2.3",
85 "name": "commander",
86 "deps": [],
87 "action": "merge",
88 "cpes": [],
89 "full_name": "deathstar/commander-2.3",
90 },
91 "deathstar/trooper-1.2": {
92 "rev_deps": ["deathstar/darthvader-2.3"],
93 "category": "deathstar",
94 "version": "1.2",
95 "name": "trooper",
96 "deps": ["weapon/blasterpistol-2.1"],
97 "action": "merge",
98 "cpes": [],
99 "full_name": "deathstar/trooper-1.2",
100 },
101 }
102 self.assertEqual(
103 cros_extract_deps.FlattenDepTree(dep_tree), flatten_dep_tree
104 )
Mike Frysinger44b83812019-12-10 00:09:30 -0500105
106
107class GetCPEFromCPVTest(cros_test_lib.RunCommandTestCase):
Alex Klein1699fab2022-09-08 08:46:06 -0600108 """Tests for cros_extract_deps.GetCPEFromCPV."""
Mike Frysinger44b83812019-12-10 00:09:30 -0500109
Alex Klein1699fab2022-09-08 08:46:06 -0600110 def testGetCPEFromCPV(self):
111 """Check GetCPEFromCPV behavior."""
112 stdout = """Remote-ID: cpe:/a:curl:curl ID: cpe
Mike Frysinger44b83812019-12-10 00:09:30 -0500113Remote-ID: cpe:/a:curl:libcurl ID: cpe
114Remote-ID: cpe:/a:haxx:curl ID: cpe
115Remote-ID: cpe:/a:haxx:libcurl ID: cpe
116Homepage: https://curl.haxx.se/
117License: MIT
118"""
Alex Klein1699fab2022-09-08 08:46:06 -0600119 self.rc.AddCmdResult(
120 ["equery", "m", "-U", "net-misc/curl"], stdout=stdout
121 )
122 self.assertEqual(
123 [
124 "cpe:/a:curl:curl:7.3.0",
125 "cpe:/a:curl:libcurl:7.3.0",
126 "cpe:/a:haxx:curl:7.3.0",
127 "cpe:/a:haxx:libcurl:7.3.0",
128 ],
129 cros_extract_deps.GetCPEFromCPV("net-misc", "curl", "7.3.0"),
130 )