import io import json import unittest from contextlib import redirect_stdout from hello_hut.cli import main def run(*argv): out = io.StringIO() with redirect_stdout(out): code = main(list(argv)) return code, out.getvalue() class CliTest(unittest.TestCase): def test_count(self): code, out = run("Ada", "--count", "3") self.assertEqual(code, 0) self.assertEqual(out.splitlines(), ["Hello, Ada!"] * 3) def test_count_must_be_positive(self): code, out = run("Ada", "--count", "0") self.assertEqual(code, 2) self.assertEqual(out, "") def test_json(self): code, out = run("Ada", "--format", "json") self.assertEqual(code, 0) self.assertEqual(json.loads(out), {"greeting": "Hello, Ada!", "name": "Ada"}) def test_lang(self): code, out = run("Ada", "--lang", "es") self.assertEqual(out.strip(), "Hola, Ada!")