testmcpy 0.2.14__tar.gz → 0.2.16__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {testmcpy-0.2.14/testmcpy.egg-info → testmcpy-0.2.16}/PKG-INFO +1 -1
- {testmcpy-0.2.14 → testmcpy-0.2.16}/pyproject.toml +1 -1
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/cli/commands/run.py +21 -6
- {testmcpy-0.2.14 → testmcpy-0.2.16/testmcpy.egg-info}/PKG-INFO +1 -1
- {testmcpy-0.2.14 → testmcpy-0.2.16}/LICENSE +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/MANIFEST.in +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/NOTICE +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/README.md +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/setup.cfg +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/__init__.py +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/auth_debugger.py +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/auth_flow_recorder.py +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/cli/__init__.py +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/cli/app.py +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/cli/commands/__init__.py +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/cli/commands/mcp.py +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/cli/commands/server.py +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/cli/commands/tools.py +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/cli/commands/tui.py +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/config.py +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/core/__init__.py +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/core/chat_session.py +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/core/docs_optimizer.py +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/core/mcp_manager.py +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/core/tool_comparison.py +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/core/tool_discovery.py +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/error_handlers.py +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/evals/__init__.py +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/evals/auth_evaluators.py +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/evals/base_evaluators.py +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/formatters/__init__.py +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/formatters/base.py +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/formatters/curl.py +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/formatters/graphql.py +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/formatters/javascript_client.py +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/formatters/json_yaml.py +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/formatters/protobuf.py +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/formatters/python.py +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/formatters/python_client.py +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/formatters/thrift.py +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/formatters/typescript.py +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/formatters/typescript_client.py +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/llm_profiles.py +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/mcp_profiles.py +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/research/claude_sdk_detailed_exploration.py +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/research/claude_sdk_poc.py +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/research/claude_sdk_working_poc.py +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/research/test_ollama_tools.py +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/server/__init__.py +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/server/api.py +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/server/api.py.bak +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/server/helpers/__init__.py +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/server/helpers/mcp_config.py +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/server/models.py +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/server/routers/__init__.py +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/server/routers/auth.py +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/server/routers/generation_logs.py +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/server/routers/llm.py +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/server/routers/mcp_profiles.py +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/server/routers/results.py +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/server/routers/smoke_reports.py +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/server/routers/test_profiles.py +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/server/routers/tests.py +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/server/routers/tools.py +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/server/state.py +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/server/websocket.py +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/smoke_test.py +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/src/__init__.py +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/src/llm_integration.py +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/src/mcp_client.py +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/src/model_registry.py +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/src/models.py +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/src/runner_tools.py +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/src/test_runner.py +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/storage.py +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/test_profiles.py +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/ui/README.md +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/ui/dist/assets/index-CaEBvXci.css +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/ui/dist/assets/index-mv4agCEg.js +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/ui/dist/index.html +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/ui/index.html +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/ui/package-lock.json +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/ui/package.json +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/ui/postcss.config.js +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/ui/src/App.jsx +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/ui/src/components/CompareToolsTab.jsx +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/ui/src/components/ErrorAlert.jsx +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/ui/src/components/ErrorBoundary.jsx +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/ui/src/components/LLMProfileSelector.jsx +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/ui/src/components/LoadingSpinner.jsx +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/ui/src/components/MCPProfileSelector.jsx +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/ui/src/components/OptimizeDocsModal.jsx +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/ui/src/components/ParameterCard.jsx +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/ui/src/components/SchemaCodeViewer.jsx +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/ui/src/components/SkeletonLoader.jsx +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/ui/src/components/TestGenerationModal.jsx +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/ui/src/components/TestProfileSelector.jsx +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/ui/src/components/TestResultPanel.jsx +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/ui/src/components/TestStatusIndicator.jsx +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/ui/src/components/ToolComparison.jsx +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/ui/src/components/ToolDebugModal.jsx +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/ui/src/components/TypeBadge.jsx +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/ui/src/contexts/TestRunContext.jsx +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/ui/src/hooks/useKeyboardShortcuts.js +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/ui/src/hooks/useSafeFetch.js +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/ui/src/index.css +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/ui/src/main.jsx +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/ui/src/pages/AuthDebugger.jsx +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/ui/src/pages/ChatInterface.jsx +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/ui/src/pages/Configuration.jsx +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/ui/src/pages/GenerationHistory.jsx +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/ui/src/pages/LLMProfiles.jsx +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/ui/src/pages/MCPExplorer.jsx +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/ui/src/pages/MCPProfiles.jsx +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/ui/src/pages/ProfilesManager.jsx +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/ui/src/pages/Reports.jsx +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/ui/src/pages/TestManager.jsx +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/ui/src/utils/__tests__/formatConverters.test.js +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/ui/src/utils/formatConverters.js +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/ui/tailwind.config.js +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/ui/vite.config.js +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy.egg-info/SOURCES.txt +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy.egg-info/dependency_links.txt +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy.egg-info/entry_points.txt +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy.egg-info/requires.txt +0 -0
- {testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy.egg-info/top_level.txt +0 -0
|
@@ -90,7 +90,7 @@ testmcpy = [
|
|
|
90
90
|
|
|
91
91
|
[project]
|
|
92
92
|
name = "testmcpy"
|
|
93
|
-
version = "0.2.
|
|
93
|
+
version = "0.2.16"
|
|
94
94
|
description = "A comprehensive testing framework for validating LLM tool calling capabilities with MCP services"
|
|
95
95
|
authors = [{name = "Amin Ghadersohi"}]
|
|
96
96
|
license = "Apache-2.0"
|
|
@@ -272,12 +272,27 @@ def run(
|
|
|
272
272
|
test_cases.append(TestCase.from_dict(data))
|
|
273
273
|
|
|
274
274
|
elif test_path.is_dir():
|
|
275
|
-
for
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
275
|
+
# Use rglob for recursive search in subdirectories
|
|
276
|
+
# Support both .yaml and .yml extensions, plus .json
|
|
277
|
+
for pattern in ["*.yaml", "*.yml", "*.json"]:
|
|
278
|
+
for file in test_path.rglob(pattern):
|
|
279
|
+
# Skip files in hidden directories (e.g., .results/, .smoke_reports/)
|
|
280
|
+
if any(part.startswith(".") for part in file.relative_to(test_path).parts):
|
|
281
|
+
continue
|
|
282
|
+
with open(file) as f:
|
|
283
|
+
if file.suffix == ".json":
|
|
284
|
+
data = json.load(f)
|
|
285
|
+
else:
|
|
286
|
+
data = yaml.safe_load(f)
|
|
287
|
+
if data is None:
|
|
288
|
+
continue
|
|
289
|
+
# Check if this is a valid test file (has prompt or tests key)
|
|
290
|
+
if "tests" in data:
|
|
291
|
+
for test_data in data["tests"]:
|
|
292
|
+
test_cases.append(TestCase.from_dict(test_data))
|
|
293
|
+
elif "prompt" in data:
|
|
294
|
+
# Handle single test case files
|
|
295
|
+
test_cases.append(TestCase.from_dict(data))
|
|
281
296
|
|
|
282
297
|
console.print(f"\n[bold]Found {len(test_cases)} test case(s)[/bold]")
|
|
283
298
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{testmcpy-0.2.14 → testmcpy-0.2.16}/testmcpy/ui/src/utils/__tests__/formatConverters.test.js
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|