Skip to main content
Glama

CTX: Context as Code (CaC) tool

by context-hub
MIT License
235
  • Apple
  • Linux
TestCase.php3.73 kB
<?php declare(strict_types=1); namespace Tests; use Butschster\ContextGenerator\Directories; use Butschster\ContextGenerator\DirectoriesInterface; use PHPUnit\Framework\TestCase as BaseTestCase; /** * Base TestCase for all tests * * Provides common functionality for tests including: * - Helper methods for fixture loading * - Common test setup and teardown */ abstract class TestCase extends BaseTestCase { /** * @var array<string> Temporary files to clean up */ private array $tempFiles = []; /** * @var array<string> Temporary directories to clean up */ private array $tempDirs = []; public function getDirs(): DirectoriesInterface { return $this->createDirectories(); } /** * Clean up temporary files and directories */ protected function tearDown(): void { parent::tearDown(); // Clean up temp files foreach ($this->tempFiles as $file) { if (\file_exists($file)) { \unlink($file); } } // Clean up temp directories foreach ($this->tempDirs as $dir) { $this->removeDirectory($dir); } } protected function createDirectories(string $rootPath = '/test'): Directories { return new Directories( rootPath: $rootPath, outputPath: $rootPath . '/output', configPath: $rootPath . '/config', jsonSchemaPath: $rootPath . '/schema.json', ); } /** * Get the path to the fixtures directory */ protected function getFixturesDir(string $subdirectory = ''): string { $basePath = __DIR__ . '/../fixtures'; if ($subdirectory !== '') { $basePath = $basePath . '/' . $subdirectory; } return $basePath; } /** * Create a temporary file with content * * @param string $content Content to write to the file * @param string $extension File extension (default: .txt) * @return string Path to the temporary file */ protected function createTempFile(string $content, string $extension = '.txt'): string { $tempFile = \tempnam(\sys_get_temp_dir(), 'test_') . $extension; \file_put_contents($tempFile, $content); // Register for cleanup $this->registerTempFile($tempFile); return $tempFile; } /** * Register a temporary file for cleanup */ protected function registerTempFile(string $filePath): void { $this->tempFiles[] = $filePath; } /** * Create a temporary directory * * @return string Path to the temporary directory */ protected function createTempDir(): string { $tempDir = \sys_get_temp_dir() . '/test_' . \uniqid(); \mkdir($tempDir, 0777, true); // Register for cleanup $this->registerTempDir($tempDir); return $tempDir; } /** * Register a temporary directory for cleanup */ protected function registerTempDir(string $dirPath): void { $this->tempDirs[] = $dirPath; } /** * Recursively remove a directory and all its contents */ private function removeDirectory(string $dir): void { if (!\is_dir($dir)) { return; } $items = \scandir($dir); foreach ($items as $item) { if ($item === '.' || $item === '..') { continue; } $path = $dir . '/' . $item; if (\is_dir($path)) { $this->removeDirectory($path); } else { \unlink($path); } } \rmdir($dir); } }

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/context-hub/generator'

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