From 461fae9a8b6c2449841ba5e887a70ef6b29b62ec Mon Sep 17 00:00:00 2001 From: badMade <106821302+badMade@users.noreply.github.com> Date: Wed, 22 Apr 2026 21:05:59 +0000 Subject: [PATCH] =?UTF-8?q?=F0=9F=A7=AA=20Add=20test=20suite=20for=20main?= =?UTF-8?q?=20build=5Fparser=20function?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com> --- tests/test_main.py | 60 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 tests/test_main.py diff --git a/tests/test_main.py b/tests/test_main.py new file mode 100644 index 0000000000..484de6ab70 --- /dev/null +++ b/tests/test_main.py @@ -0,0 +1,60 @@ +import argparse +import unittest + +from src.main import build_parser + + +class TestMainParser(unittest.TestCase): + def setUp(self) -> None: + self.parser = build_parser() + + def test_build_parser_returns_argument_parser(self) -> None: + self.assertIsInstance(self.parser, argparse.ArgumentParser) + self.assertEqual( + self.parser.description, + "Python porting workspace for the Claude Code rewrite effort", + ) + + def test_parser_has_expected_commands(self) -> None: + # Check a few simple commands that require no extra arguments + args = self.parser.parse_args(["summary"]) + self.assertEqual(args.command, "summary") + + args = self.parser.parse_args(["manifest"]) + self.assertEqual(args.command, "manifest") + + args = self.parser.parse_args(["tool-pool"]) + self.assertEqual(args.command, "tool-pool") + + def test_parser_commands_with_arguments(self) -> None: + # Check a command with default arguments + args = self.parser.parse_args(["subsystems"]) + self.assertEqual(args.command, "subsystems") + self.assertEqual(args.limit, 32) + + # Check overriding default arguments + args = self.parser.parse_args(["subsystems", "--limit", "10"]) + self.assertEqual(args.command, "subsystems") + self.assertEqual(args.limit, 10) + + # Check command requiring positional arguments + args = self.parser.parse_args(["route", "test prompt", "--limit", "2"]) + self.assertEqual(args.command, "route") + self.assertEqual(args.prompt, "test prompt") + self.assertEqual(args.limit, 2) + + def test_parser_invalid_command(self) -> None: + # argparse uses sys.exit(2) for invalid arguments + with self.assertRaises(SystemExit) as cm: + self.parser.parse_args(["this-command-does-not-exist"]) + self.assertEqual(cm.exception.code, 2) + + def test_parser_missing_required_command(self) -> None: + # argparse uses sys.exit(2) when a required subcommand is missing + with self.assertRaises(SystemExit) as cm: + self.parser.parse_args([]) + self.assertEqual(cm.exception.code, 2) + + +if __name__ == "__main__": + unittest.main()