Skip to main content
Glama
test_track_folders.py6.38 kB
"""Test track folders and grouping operations""" import pytest import pytest_asyncio import asyncio from .test_utils import ( ensure_clean_project, create_track_with_verification, assert_response_contains, assert_response_success ) @pytest.mark.asyncio async def test_track_folder_operations(reaper_mcp_client): """Test track folder operations""" # Ensure clean project state await ensure_clean_project(reaper_mcp_client) # Create parent folder track folder_track_index = await create_track_with_verification(reaper_mcp_client, 0) # Set track name for clarity result = await reaper_mcp_client.call_tool( "set_track_name", {"track_index": folder_track_index, "name": "Folder Track"} ) # Create child tracks and track their indices child_indices = [] for i in range(1, 4): child_index = await create_track_with_verification(reaper_mcp_client, i) child_indices.append(child_index) result = await reaper_mcp_client.call_tool( "set_track_name", {"track_index": child_index, "name": f"Child Track {i}"} ) # Set first track as folder parent result = await reaper_mcp_client.call_tool( "set_track_folder_state", {"track_index": folder_track_index, "folder_state": 1} ) assert_response_contains(result, "Set track folder state:") # Set last child track as last in folder if child_indices: last_child_index = child_indices[-1] result = await reaper_mcp_client.call_tool( "set_track_folder_state", {"track_index": last_child_index, "folder_state": -1} ) assert_response_contains(result, "Set track folder state:") # Get track depth of a child track result = await reaper_mcp_client.call_tool( "get_track_depth", {"track_index": 1} ) assert "Track depth:" in result.content[0].text # Get parent track of a child result = await reaper_mcp_client.call_tool( "get_parent_track", {"track_index": 1} ) assert "Parent track:" in result.content[0].text @pytest.mark.asyncio async def test_track_folder_compact_state(reaper_mcp_client): """Test track folder compact state operations""" # Create a folder track result = await reaper_mcp_client.call_tool( "insert_track_at_index", {"index": 0, "want_defaults": True} ) assert "Successfully inserted track" in result.content[0].text # Set as folder result = await reaper_mcp_client.call_tool( "set_track_folder_state", {"track_index": 0, "folder_state": 1} ) # Get initial compact state result = await reaper_mcp_client.call_tool( "get_track_folder_compact_state", {"track_index": 0} ) assert "Track folder compact state:" in result.content[0].text # Set to small (1) result = await reaper_mcp_client.call_tool( "set_track_folder_compact_state", {"track_index": 0, "compact_state": 1} ) assert "Set track folder compact state:" in result.content[0].text # Set to tiny (2) result = await reaper_mcp_client.call_tool( "set_track_folder_compact_state", {"track_index": 0, "compact_state": 2} ) assert "Set track folder compact state:" in result.content[0].text # Set back to open (0) result = await reaper_mcp_client.call_tool( "set_track_folder_compact_state", {"track_index": 0, "compact_state": 0} ) assert "Set track folder compact state:" in result.content[0].text @pytest.mark.asyncio async def test_track_height_operations(reaper_mcp_client): """Test track height operations""" # Create a track result = await reaper_mcp_client.call_tool( "insert_track_at_index", {"index": 0, "want_defaults": True} ) assert "Successfully inserted track" in result.content[0].text # Set track height result = await reaper_mcp_client.call_tool( "set_track_height", {"track_index": 0, "height": 100} ) assert "Set track height:" in result.content[0].text # Set track height with lock result = await reaper_mcp_client.call_tool( "set_track_height", {"track_index": 0, "height": 150, "lock_height": True} ) assert "Set track height:" in result.content[0].text # Set track height unlocked result = await reaper_mcp_client.call_tool( "set_track_height", {"track_index": 0, "height": 200, "lock_height": False} ) assert "Set track height:" in result.content[0].text @pytest.mark.asyncio async def test_nested_folders(reaper_mcp_client): """Test nested folder structures""" # Create main folder result = await reaper_mcp_client.call_tool( "insert_track_at_index", {"index": 0, "want_defaults": True} ) await reaper_mcp_client.call_tool( "set_track_name", {"track_index": 0, "name": "Main Folder"} ) # Create sub-folder result = await reaper_mcp_client.call_tool( "insert_track_at_index", {"index": 1, "want_defaults": True} ) await reaper_mcp_client.call_tool( "set_track_name", {"track_index": 1, "name": "Sub Folder"} ) # Create child tracks for i in range(2, 5): result = await reaper_mcp_client.call_tool( "insert_track_at_index", {"index": i, "want_defaults": True} ) await reaper_mcp_client.call_tool( "set_track_name", {"track_index": i, "name": f"Track {i-1}"} ) # Set folder structure # Main folder starts await reaper_mcp_client.call_tool( "set_track_folder_state", {"track_index": 0, "folder_state": 1} ) # Sub folder starts await reaper_mcp_client.call_tool( "set_track_folder_state", {"track_index": 1, "folder_state": 1} ) # Last track ends both folders await reaper_mcp_client.call_tool( "set_track_folder_state", {"track_index": 4, "folder_state": -2} ) # Check depths result = await reaper_mcp_client.call_tool( "get_track_depth", {"track_index": 2} ) assert "Track depth:" in result.content[0].text

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/shiehn/total-reaper-mcp'

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