
The entrypoint will make it easier to install powertrain-build to an isolated venv without having to call python -m powertrain_build. Change-Id: I3850c97d17707f9bc03640bd1d997508637d97ba
47 lines
1.9 KiB
Python
47 lines
1.9 KiB
Python
"""Tests for the cli module."""
|
|
|
|
from pathlib import Path
|
|
from unittest import TestCase
|
|
from unittest.mock import patch
|
|
|
|
from powertrain_build.cli import main
|
|
|
|
|
|
class TestCli(TestCase):
|
|
"""Test the cli module."""
|
|
|
|
def test_main(self):
|
|
"""Test that the main function parses arguments and calls correct function."""
|
|
# Simple command without arguments
|
|
with patch("powertrain_build.wrapper.run_wrapper") as run_wrapper_mock:
|
|
main(["wrapper"])
|
|
run_wrapper_mock.assert_called_once()
|
|
args = run_wrapper_mock.call_args[0][0]
|
|
self.assertEqual(args.func, run_wrapper_mock)
|
|
self.assertEqual(args.command, "wrapper")
|
|
# Sub-command with arguments
|
|
with patch("powertrain_build.interface.generate_adapters.generate_adapters") as generate_adapters_mock:
|
|
main([
|
|
"interface", "generate-adapters",
|
|
"--dp-interface",
|
|
"--hal-interface",
|
|
"--service-interface",
|
|
"--update-config",
|
|
"path/to/config",
|
|
"path/to/output",
|
|
])
|
|
generate_adapters_mock.assert_called_once()
|
|
args = generate_adapters_mock.call_args[0][0]
|
|
self.assertEqual(args.func, generate_adapters_mock)
|
|
self.assertEqual(args.command, "interface")
|
|
self.assertEqual(args.interface_command, "generate-adapters")
|
|
self.assertTrue(args.dp_interface)
|
|
self.assertTrue(args.hal_interface)
|
|
self.assertTrue(args.service_interface)
|
|
self.assertEqual(args.config, Path("path/to/config"))
|
|
self.assertEqual(args.output, Path("path/to/output"))
|
|
# Command without enough arguments
|
|
with self.assertRaises(SystemExit) as system_exit:
|
|
main(["interface", "generate-adapters"])
|
|
self.assertEqual(system_exit.exception.code, 2)
|