blob: 58488abe6eb325fa1e15a27f650e300ca8027aee [file] [log] [blame]
# -*- coding: utf-8 -*-
# Copyright 2019 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Test cros_extract_deps."""
from __future__ import print_function
import sys
from chromite.lib import cros_test_lib
from chromite.scripts import cros_extract_deps
pytestmark = cros_test_lib.pytestmark_inside_only
assert sys.version_info >= (3, 6), 'This module requires Python 3.6+'
class FlattenDepTreeTest(cros_test_lib.TestCase):
"""Tests for cros_extract_deps.FlattenDepTree."""
def testFlattenDepTreeSimple(self):
dep_tree = {
'deathstar/darthvader-2.3': {
'action': 'merge',
'deps': {
'deathstar/trooper-1.2': {
'action': 'merge',
'deps': {
'weapon/blasterpistol-2.1': {
'action': 'merge',
'deps': {},
'deptype': 'runtime',
}
},
'deptype': 'runtime',
},
'deathstar/pilot-2.3': {
'action': 'merge',
'deps': {},
'deptype': 'runtime',
},
'deathstar/commander-2.3': {
'action': 'merge',
'deps': {},
'deptype': 'runtime',
},
},
},
}
flatten_dep_tree = {
'weapon/blasterpistol-2.1': {
'rev_deps': ['deathstar/trooper-1.2'],
'category': 'weapon',
'version': '2.1',
'name': 'blasterpistol',
'deps': [],
'action': 'merge',
'cpes': [],
'full_name': 'weapon/blasterpistol-2.1',
},
'deathstar/darthvader-2.3': {
'rev_deps': [],
'category': 'deathstar',
'version': '2.3',
'name': 'darthvader',
'deps': [
'deathstar/commander-2.3', 'deathstar/pilot-2.3',
'deathstar/trooper-1.2',
],
'action': 'merge',
'cpes': [],
'full_name': 'deathstar/darthvader-2.3',
},
'deathstar/pilot-2.3': {
'rev_deps': ['deathstar/darthvader-2.3'],
'category': 'deathstar',
'version': '2.3',
'name': 'pilot',
'deps': [],
'action': 'merge',
'cpes': [],
'full_name': 'deathstar/pilot-2.3',
},
'deathstar/commander-2.3': {
'rev_deps': ['deathstar/darthvader-2.3'],
'category': 'deathstar',
'version': '2.3',
'name': 'commander',
'deps': [],
'action': 'merge',
'cpes': [],
'full_name': 'deathstar/commander-2.3',
},
'deathstar/trooper-1.2': {
'rev_deps': ['deathstar/darthvader-2.3'],
'category': 'deathstar',
'version': '1.2',
'name': 'trooper',
'deps': ['weapon/blasterpistol-2.1'],
'action': 'merge',
'cpes': [],
'full_name': 'deathstar/trooper-1.2',
}
}
self.assertEqual(
cros_extract_deps.FlattenDepTree(dep_tree), flatten_dep_tree)
class GetCPEFromCPVTest(cros_test_lib.RunCommandTestCase):
"""Tests for cros_extract_deps.GetCPEFromCPV."""
def testGetCPEFromCPV(self):
"""Check GetCPEFromCPV behavior."""
stdout = """Remote-ID: cpe:/a:curl:curl ID: cpe
Remote-ID: cpe:/a:curl:libcurl ID: cpe
Remote-ID: cpe:/a:haxx:curl ID: cpe
Remote-ID: cpe:/a:haxx:libcurl ID: cpe
Homepage: https://curl.haxx.se/
License: MIT
"""
self.rc.AddCmdResult(['equery', 'm', '-U', 'net-misc/curl'], stdout=stdout)
self.assertEqual([
'cpe:/a:curl:curl:7.3.0',
'cpe:/a:curl:libcurl:7.3.0',
'cpe:/a:haxx:curl:7.3.0',
'cpe:/a:haxx:libcurl:7.3.0',
], cros_extract_deps.GetCPEFromCPV('net-misc', 'curl', '7.3.0'))