cros_extract_deps: Sort deps and rev_deps in flattened deps graph
This is to make the deps graph output more human readable.
BUG=chromium:917174
TEST=unittests
Change-Id: I20552beb98d889bb0d27efad4b3c9b519d9b926a
Reviewed-on: https://chromium-review.googlesource.com/1441911
Commit-Ready: Ned Nguyen <nednguyen@google.com>
Tested-by: Ned Nguyen <nednguyen@google.com>
Reviewed-by: Chris McDonald <cjmcdonald@chromium.org>
diff --git a/scripts/cros_extract_deps_unittest.py b/scripts/cros_extract_deps_unittest.py
new file mode 100644
index 0000000..865dfc7
--- /dev/null
+++ b/scripts/cros_extract_deps_unittest.py
@@ -0,0 +1,102 @@
+# -*- 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
+
+from chromite.lib import cros_test_lib
+from chromite.scripts import cros_extract_deps
+
+
+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.assertEquals(
+ cros_extract_deps.FlattenDepTree(dep_tree), flatten_dep_tree)