Axel Andersson 816553f1bc Added powertrain-build entrypoint
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
2024-10-30 10:33:42 +01:00

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)