Add happy cases for functional tests of example 1 (#91)

This commit is contained in:
Christopher Hertel 2025-10-12 14:52:58 +02:00 • committed by GitHub
commit 9ff6516e5b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 64 additions and 13 deletions

View file

@ -19,20 +19,42 @@ abstract class InspectorSnapshotTestCase extends TestCase
{
private const INSPECTOR_VERSION = '0.16.8';
/**
* @param array<string, mixed> $toolArgs
*/
#[DataProvider('provideMethods')]
public function testResourcesListOutputMatchesSnapshot(string $method): void
{
$process = (new Process([
'npx',
\sprintf('@modelcontextprotocol/inspector@%s', self::INSPECTOR_VERSION),
'--cli',
'php',
$this->getServerScript(),
'--method',
$method,
]))->mustRun();
public function testMethodOutputMatchesSnapshot(
string $method,
?string $toolName = null,
array $toolArgs = [],
?string $uri = null,
): void {
$inspector = \sprintf('@modelcontextprotocol/inspector@%s', self::INSPECTOR_VERSION);
$args = [
'npx', $inspector, '--cli', 'php', $this->getServerScript(), '--method', $method,
];
// Options for tools/call
if (null !== $toolName) {
$args[] = '--tool-name';
$args[] = $toolName;
foreach ($toolArgs as $key => $value) {
$args[] = '--tool-arg';
$args[] = \sprintf('%s=%s', $key, $value);
}
}
// Options for resources/read
if (null !== $uri) {
$args[] = '--uri';
$args[] = $uri;
}
$output = (new Process($args))
->mustRun()
->getOutput();
$output = $process->getOutput();
$snapshotFile = $this->getSnapshotFilePath($method);
if (!file_exists($snapshotFile)) {

View file

@ -17,6 +17,17 @@ final class StdioCalculatorExampleTest extends InspectorSnapshotTestCase
{
return [
...parent::provideListMethods(),
'Calculate Sum' => [
'method' => 'tools/call',
'toolName' => 'calculate',
'toolArgs' => ['a' => 12.5, 'b' => 7.3, 'operation' => 'add'],
],
'Read Config' => [
'method' => 'resources/read',
'toolName' => null, // can be removed with newer PHPUnit versions
'toolArgs' => [], // can be removed with newer PHPUnit versions
'uri' => 'config://calculator/settings',
],
];
}

View file

@ -0,0 +1,9 @@
{
"contents": [
{
"uri": "config://calculator/settings",
"mimeType": "application/json",
"text": "{\n \"precision\": 2,\n \"allow_negative\": true\n}"
}
]
}

View file

@ -0,0 +1,9 @@
{
"content": [
{
"type": "text",
"text": "19.8"
}
],
"isError": false
}