blob: 71b57ce9dbdb38811c325cde6ab55b11f7784031 [file]
# Copyright 2026 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.
"""Unit tests for the plugins module."""
import unittest
from plugins import (
PluginArgumentError,
PluginArgumentParser,
SectionResult,
)
class PluginsTest(unittest.TestCase):
"""Tests for the plugins module."""
def test_section_result_to_dict(self) -> None:
"""Tests SectionResult attribute access and to_dict conversion."""
sr = SectionResult(
name="Section A",
results=[{"x": 1}],
note="Notice",
)
self.assertEqual(sr.name, "Section A")
self.assertEqual(sr.results, [{"x": 1}])
self.assertEqual(sr.note, "Notice")
self.assertIsNone(sr.error)
self.assertEqual(
sr.to_dict(),
{
"name": "Section A",
"note": "Notice",
"results": [{"x": 1}],
},
)
sr_err = SectionResult(
name="Section B",
error="Something failed",
)
self.assertEqual(
sr_err.to_dict(),
{
"name": "Section B",
"error": "Something failed",
},
)
def test_section_result_from_dict(self) -> None:
"""Tests SectionResult.from_dict construction."""
data = {
"name": "Section From Dict",
"results": [{"a": 1}],
"note": "A note",
"error": None,
}
sr = SectionResult.from_dict(data)
self.assertEqual(sr.name, "Section From Dict")
self.assertEqual(sr.results, [{"a": 1}])
self.assertEqual(sr.note, "A note")
self.assertIsNone(sr.error)
sr_err = SectionResult.from_dict(
{"name": "Failed Section", "error": "Disk full"}
)
self.assertEqual(sr_err.name, "Failed Section")
self.assertEqual(sr_err.error, "Disk full")
self.assertIsNone(sr_err.results)
def test_plugin_argument_parser(self) -> None:
"""Tests PluginArgumentParser raises PluginArgumentError on invalid args."""
parser = PluginArgumentParser(prog="test_plugin")
parser.add_argument("--limit", type=int, required=True)
with self.assertRaises(PluginArgumentError) as ctx:
parser.parse_args(["--limit", "10", "--unknown"])
self.assertIn(
"Error: unrecognized arguments: --unknown", str(ctx.exception)
)
if __name__ == "__main__":
unittest.main()