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