Skip to main content
Glama

Voice Mode

by mbailey
test_release_notes_prompt.py•4.97 kB
"""Tests for the release notes prompt.""" import pytest from unittest.mock import patch, MagicMock from voice_mode.prompts.release_notes import release_notes_prompt def test_release_notes_prompt_parses_changelog(): """Test that the prompt correctly parses changelog entries.""" mock_changelog = """# Changelog ## [2.0.0] - 2025-01-01 ### Added - Feature A - Feature B ### Fixed - Bug fix 1 ## [1.1.0] - 2024-12-15 ### Changed - Updated something ## [1.0.0] - 2024-12-01 ### Initial Release - First version """ with patch("voice_mode.prompts.release_notes.changelog_resource") as mock_resource: mock_resource.fn.return_value = mock_changelog result = release_notes_prompt.fn(versions="2") # Should show oldest first assert "[1.1.0]" in result assert "[2.0.0]" in result assert "[1.0.0]" not in result # Only 2 versions requested # Check order (oldest first) assert result.index("[1.1.0]") < result.index("[2.0.0]") # Check content is included assert "Feature A" in result assert "Updated something" in result # Check clean output (no header/footer) assert "Voice Mode Release Notes" not in result assert "https://github.com/mbailey/voicemode" not in result def test_release_notes_prompt_handles_missing_changelog(): """Test that the prompt handles missing CHANGELOG gracefully.""" with patch("voice_mode.prompts.release_notes.changelog_resource") as mock_resource: mock_resource.fn.return_value = "CHANGELOG.md not found in package." result = release_notes_prompt.fn() assert "CHANGELOG.md not found" in result def test_release_notes_prompt_handles_error(): """Test that the prompt handles errors from the resource.""" with patch("voice_mode.prompts.release_notes.changelog_resource") as mock_resource: mock_resource.fn.return_value = "Error reading CHANGELOG.md: Permission denied" result = release_notes_prompt.fn() assert "Error reading CHANGELOG.md" in result def test_release_notes_prompt_default_versions(): """Test that the prompt defaults to 5 versions.""" mock_changelog = """# Changelog ## [6.0.0] - 2025-06-01 ### Added - Version 6 ## [5.0.0] - 2025-05-01 ### Added - Version 5 ## [4.0.0] - 2025-04-01 ### Added - Version 4 ## [3.0.0] - 2025-03-01 ### Added - Version 3 ## [2.0.0] - 2025-02-01 ### Added - Version 2 ## [1.0.0] - 2025-01-01 ### Added - Version 1 """ with patch("voice_mode.prompts.release_notes.changelog_resource") as mock_resource: mock_resource.fn.return_value = mock_changelog result = release_notes_prompt.fn() # No versions specified # Should show 5 versions (default) assert "[2.0.0]" in result assert "[3.0.0]" in result assert "[4.0.0]" in result assert "[5.0.0]" in result assert "[6.0.0]" in result assert "[1.0.0]" not in result # Only 5 versions def test_release_notes_prompt_handles_empty_string(): """Test that the prompt handles empty string parameter from Claude Code.""" mock_changelog = """# Changelog ## [6.0.0] - 2025-06-01 ### Added - Version 6 ## [5.0.0] - 2025-05-01 ### Added - Version 5 ## [4.0.0] - 2025-04-01 ### Added - Version 4 ## [3.0.0] - 2025-03-01 ### Added - Version 3 ## [2.0.0] - 2025-02-01 ### Added - Version 2 ## [1.0.0] - 2025-01-01 ### Added - Version 1 """ with patch("voice_mode.prompts.release_notes.changelog_resource") as mock_resource: mock_resource.fn.return_value = mock_changelog # Test with empty string (what Claude Code sends) result = release_notes_prompt.fn(versions="") # Should use default of 5 versions assert "[2.0.0]" in result assert "[3.0.0]" in result assert "[4.0.0]" in result assert "[5.0.0]" in result assert "[6.0.0]" in result assert "[1.0.0]" not in result # Only 5 versions def test_release_notes_prompt_respects_version_limit(): """Test that the prompt respects the version limit parameter.""" mock_changelog = """# Changelog ## [3.0.0] - 2025-03-01 ### Added - Version 3 ## [2.0.0] - 2025-02-01 ### Added - Version 2 ## [1.0.0] - 2025-01-01 ### Added - Version 1 """ with patch("voice_mode.prompts.release_notes.changelog_resource") as mock_resource: mock_resource.fn.return_value = mock_changelog # Test with 1 version result = release_notes_prompt.fn(versions="1") assert "[3.0.0]" in result assert "[2.0.0]" not in result assert "[1.0.0]" not in result # Test with all versions result = release_notes_prompt.fn(versions="10") assert "[3.0.0]" in result assert "[2.0.0]" in result assert "[1.0.0]" in result

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/mbailey/voicemode'

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