blob: ec3325563dc5987d73ba1c66ccec58b40df8adf7 [file] [log] [blame]
#!/usr/bin/env fuchsia-vendored-python
# Copyright 2023 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import contextlib
import io
import unittest
import list_packages
class TestPrintPackages(unittest.TestCase):
def validate(self, input, output):
f = io.StringIO()
with contextlib.redirect_stdout(f):
list_packages.print_packages(input)
self.assertEqual(f.getvalue(), output)
def test_single_set_single_package(self):
self.validate({"set": ["package"]}, "package\n")
def test_multiple_set_multiple_package(self):
self.validate(
{
"set0": ["package0", "package2"],
"set1": ["package1", "package3"],
},
"""package0
package1
package2
package3
""",
)
class TestPrintPackagesVerbose(unittest.TestCase):
def validate(self, input, output):
f = io.StringIO()
with contextlib.redirect_stdout(f):
list_packages.print_packages_verbose(input)
self.assertEqual(f.getvalue(), output)
def test_single_set_single_package(self):
self.validate({"set": ["package"]}, "package [set]\n")
def test_multiple_set_multiple_package(self):
self.validate(
{
"set0": ["package0", "package2", "package4"],
"set1": ["package1", "package3", "package4"],
},
"""package0 [set0]
package1 [set1]
package2 [set0]
package3 [set1]
package4 [set0 set1]
""",
)
class TestExtractPackagesFromListing(unittest.TestCase):
def validate(self, listing, filter_, output):
self.assertEqual(
list_packages.extract_packages_from_listing(listing, filter_),
output,
)
def test_segment_in_manifests(self):
self.validate(
{"content": {"manifests": ["package"]}}, lambda s: True, ["package"]
)
def test_path_in_manifests(self):
self.validate(
{"content": {"manifests": ["prefix/package"]}},
lambda s: True,
["package"],
)
def test_filter(self):
self.validate(
{"content": {"manifests": ["package0", "package1"]}},
lambda s: s == "package1",
["package1"],
)
if __name__ == "__main__":
unittest.main()