humigence / tests /test_cli_root.py
lilbablo's picture
feat: initial release - production-ready QLoRA fine-tuning toolkit
369b6f0
"""Tests for CLI root callback functionality."""
from unittest.mock import patch
from typer.testing import CliRunner
from humigence.cli import app
runner = CliRunner(mix_stderr=False)
def test_root_shows_help():
"""Test that --no-wizard shows help instead of launching wizard."""
result = runner.invoke(app, ["--no-wizard"])
assert result.exit_code == 0
assert "Commands" in result.stdout
def test_root_wizard_with_env_vars(monkeypatch):
"""Test that wizard launches when environment variables are set."""
monkeypatch.setenv("HUMIGENCE_DEFAULT_CMD", "wizard")
monkeypatch.setenv("HUMIGENCE_WIZARD_RUN", "plan")
# Mock the run_wizard function to avoid actual wizard execution
with patch("humigence.cli.run_wizard") as mock_run_wizard:
mock_run_wizard.return_value = 0
result = runner.invoke(app, [])
assert result.exit_code == 0
def test_root_wizard_fallback_to_help():
"""Test that non-TTY environments fall back to help."""
# Mock non-TTY environment
import sys
# Save original values
original_stdin_isatty = sys.stdin.isatty
original_stdout_isatty = sys.stdout.isatty
try:
# Mock non-TTY
sys.stdin.isatty = lambda: False
sys.stdout.isatty = lambda: False
result = runner.invoke(app, [])
assert result.exit_code == 0
assert "Commands" in result.stdout
finally:
# Restore original values
sys.stdin.isatty = original_stdin_isatty
sys.stdout.isatty = original_stdout_isatty
def test_root_wizard_with_train_flag():
"""Test that --train flag is properly handled."""
result = runner.invoke(app, ["--train", "--no-wizard"])
assert result.exit_code == 0
assert "Commands" in result.stdout
def test_root_wizard_with_config_override():
"""Test that --config flag is properly handled."""
result = runner.invoke(app, ["--config", "custom_config.json", "--no-wizard"])
assert result.exit_code == 0
assert "Commands" in result.stdout
def test_root_wizard_with_run_override():
"""Test that --run flag is properly handled."""
result = runner.invoke(app, ["--run", "pipeline", "--no-wizard"])
assert result.exit_code == 0
assert "Commands" in result.stdout
def test_root_wizard_environment_variables(monkeypatch):
"""Test that environment variables are properly respected."""
monkeypatch.setenv("HUMIGENCE_DEFAULT_CMD", "help")
result = runner.invoke(app, [])
assert result.exit_code == 0
assert "Commands" in result.stdout
def test_root_wizard_training_environment_variable(monkeypatch):
"""Test that TRAIN environment variable is properly handled."""
monkeypatch.setenv("TRAIN", "1")
result = runner.invoke(app, ["--no-wizard"])
assert result.exit_code == 0
assert "Commands" in result.stdout
def test_root_wizard_wizard_run_environment_variable(monkeypatch):
"""Test that HUMIGENCE_WIZARD_RUN environment variable is properly handled."""
monkeypatch.setenv("HUMIGENCE_WIZARD_RUN", "validate")
result = runner.invoke(app, ["--no-wizard"])
assert result.exit_code == 0
assert "Commands" in result.stdout