blob: 4f5475bccb8f47c6283321fa9a12c4478461c470 [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
13
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'))