blob: 5316ab8734f6525e77fdb7f2bd552504e2bf1833 [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
Greg Edelstona4c9b3b2020-01-07 17:51:13 -070010pytestmark = cros_test_lib.pytestmark_inside_only
11
Ned Nguyen3bbd2072019-01-28 19:33:41 -070012
13class FlattenDepTreeTest(cros_test_lib.TestCase):
14 """Tests for cros_extract_deps.FlattenDepTree."""
15
16 def testFlattenDepTreeSimple(self):
17 dep_tree = {
18 'deathstar/darthvader-2.3': {
19 'action': 'merge',
20 'deps': {
21 'deathstar/trooper-1.2': {
22 'action': 'merge',
23 'deps': {
24 'weapon/blasterpistol-2.1': {
25 'action': 'merge',
26 'deps': {},
27 'deptype': 'runtime',
28 }
29 },
30 'deptype': 'runtime',
31 },
32 'deathstar/pilot-2.3': {
33 'action': 'merge',
34 'deps': {},
35 'deptype': 'runtime',
36 },
37 'deathstar/commander-2.3': {
38 'action': 'merge',
39 'deps': {},
40 'deptype': 'runtime',
41 },
42 },
43 },
44 }
45 flatten_dep_tree = {
46 'weapon/blasterpistol-2.1': {
47 'rev_deps': ['deathstar/trooper-1.2'],
48 'category': 'weapon',
49 'version': '2.1',
50 'name': 'blasterpistol',
51 'deps': [],
52 'action': 'merge',
53 'cpes': [],
54 'full_name': 'weapon/blasterpistol-2.1',
55 },
56 'deathstar/darthvader-2.3': {
57 'rev_deps': [],
58 'category': 'deathstar',
59 'version': '2.3',
60 'name': 'darthvader',
61 'deps': [
62 'deathstar/commander-2.3', 'deathstar/pilot-2.3',
63 'deathstar/trooper-1.2',
64 ],
65 'action': 'merge',
66 'cpes': [],
67 'full_name': 'deathstar/darthvader-2.3',
68 },
69 'deathstar/pilot-2.3': {
70 'rev_deps': ['deathstar/darthvader-2.3'],
71 'category': 'deathstar',
72 'version': '2.3',
73 'name': 'pilot',
74 'deps': [],
75 'action': 'merge',
76 'cpes': [],
77 'full_name': 'deathstar/pilot-2.3',
78 },
79 'deathstar/commander-2.3': {
80 'rev_deps': ['deathstar/darthvader-2.3'],
81 'category': 'deathstar',
82 'version': '2.3',
83 'name': 'commander',
84 'deps': [],
85 'action': 'merge',
86 'cpes': [],
87 'full_name': 'deathstar/commander-2.3',
88 },
89 'deathstar/trooper-1.2': {
90 'rev_deps': ['deathstar/darthvader-2.3'],
91 'category': 'deathstar',
92 'version': '1.2',
93 'name': 'trooper',
94 'deps': ['weapon/blasterpistol-2.1'],
95 'action': 'merge',
96 'cpes': [],
97 'full_name': 'deathstar/trooper-1.2',
98 }
99 }
Mike Frysinger2d589a12019-08-25 14:15:12 -0400100 self.assertEqual(
Ned Nguyen3bbd2072019-01-28 19:33:41 -0700101 cros_extract_deps.FlattenDepTree(dep_tree), flatten_dep_tree)
Mike Frysinger44b83812019-12-10 00:09:30 -0500102
103
104class GetCPEFromCPVTest(cros_test_lib.RunCommandTestCase):
105 """Tests for cros_extract_deps.GetCPEFromCPV."""
106
107 def testGetCPEFromCPV(self):
108 """Check GetCPEFromCPV behavior."""
109 stdout = """Remote-ID: cpe:/a:curl:curl ID: cpe
110Remote-ID: cpe:/a:curl:libcurl ID: cpe
111Remote-ID: cpe:/a:haxx:curl ID: cpe
112Remote-ID: cpe:/a:haxx:libcurl ID: cpe
113Homepage: https://curl.haxx.se/
114License: MIT
115"""
116 self.rc.AddCmdResult(['equery', 'm', '-U', 'net-misc/curl'], stdout=stdout)
117 self.assertEqual([
118 'cpe:/a:curl:curl:7.3.0',
119 'cpe:/a:curl:libcurl:7.3.0',
120 'cpe:/a:haxx:curl:7.3.0',
121 'cpe:/a:haxx:libcurl:7.3.0',
122 ], cros_extract_deps.GetCPEFromCPV('net-misc', 'curl', '7.3.0'))