Skip to main content
Glama
test_cli.py4.81 kB
"""Essential tests for CLI functionality.""" import pytest from promptheus.cli import build_parser, parse_arguments def test_build_parser_basic(): """Test that the argument parser builds correctly.""" parser = build_parser(include_subcommands=False) # Should have the basic arguments assert parser is not None def test_parse_args_history_command(): """Test parsing with history subcommand.""" parser = build_parser(include_subcommands=True) args = parser.parse_args(["history"]) assert args.command == "history" assert not args.clear assert args.limit == 20 def test_parse_args_prompt_value_not_treated_as_command(): """Ensure free-form prompt strings are accepted when no subcommand is used.""" args = parse_arguments(["Write a blog post"]) assert args.prompt == "Write a blog post" assert args.command is None def test_parse_args_prompt_allows_options_after_text(): """Prompt tokens followed by flags should still parse correctly.""" args = parse_arguments(["Write a blog post", "--copy"]) assert args.prompt == "Write a blog post" assert args.copy is True def test_parse_args_history_clear(): """Test parsing with history clear.""" parser = build_parser(include_subcommands=True) args = parser.parse_args(["history", "--clear"]) assert args.command == "history" assert args.clear def test_parse_args_history_limit(): """Test parsing with history limit.""" parser = build_parser(include_subcommands=True) args = parser.parse_args(["history", "--limit", "50"]) assert args.command == "history" assert args.limit == 50 def test_parse_args_file_flag(): """Test parsing with file flag.""" parser = build_parser(include_subcommands=False) args = parser.parse_args(["--file", "test.txt"]) assert args.file == "test.txt" def test_parse_args_with_provider(): """Test parsing with provider flag.""" parser = build_parser(include_subcommands=False) args = parser.parse_args(["--provider", "google"]) assert args.provider == "google" def test_parse_args_with_model(): """Test parsing with model flag.""" parser = build_parser(include_subcommands=False) args = parser.parse_args(["--model", "gpt-4"]) assert args.model == "gpt-4" def test_parse_args_with_flags(): """Test parsing with various boolean flags.""" parser = build_parser(include_subcommands=False) args = parser.parse_args(["--skip-questions", "--copy"]) assert args.skip_questions assert args.copy def test_parse_args_skip_questions_flag(): """Test parsing with skip-questions flag.""" parser = build_parser(include_subcommands=False) args = parser.parse_args(["--skip-questions"]) assert args.skip_questions # Test the short form args = parser.parse_args(["-s"]) assert args.skip_questions def test_parse_args_refine_flag(): """Test parsing with refine flag.""" parser = build_parser(include_subcommands=False) args = parser.parse_args(["--refine"]) assert args.refine def test_parse_args_verbose_flag(): """Test parsing with verbose flag.""" parser = build_parser(include_subcommands=False) args = parser.parse_args(["-v"]) assert args.verbose def test_parse_args_file_and_provider(): """Test that file and provider arguments work together correctly.""" parser = build_parser(include_subcommands=False) args = parser.parse_args(["--file", "test.txt", "--provider", "openai"]) assert args.file == "test.txt" assert args.provider == "openai" def test_parse_args_multiple_flags(): """Test parsing with multiple flags.""" parser = build_parser(include_subcommands=False) args = parser.parse_args([ "--provider", "anthropic", "--model", "claude-3", "--skip-questions", "--copy" ]) assert args.provider == "anthropic" assert args.model == "claude-3" assert args.skip_questions assert args.copy def test_parse_args_output_format(): """Test parsing with output format flag.""" parser = build_parser(include_subcommands=False) args = parser.parse_args(["-o", "json"]) assert args.output_format == "json" args = parser.parse_args(["--output-format", "plain"]) assert args.output_format == "plain" def test_build_parser_help(): """Test that help can be generated without errors.""" parser = build_parser(include_subcommands=True) # This should not raise an exception help_text = parser.format_help() assert "Promptheus" in help_text assert "AI-powered prompt engineering CLI tool" in help_text def test_parse_args_mcp_command(): """Test parsing with the mcp subcommand.""" args = parse_arguments(["mcp"]) assert args.command == "mcp"

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/abhichandra21/Promptheus'

If you have feedback or need assistance with the MCP directory API, please join our Discord server