| # -*- 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')) |