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!")