assertEquals('production', $config->getMode()); $this->assertEquals('./templates', $config->getTemplatesDir()); $this->assertEquals('./templates/layouts', $config->getLayoutsDir()); $this->assertEquals('./templates/partials', $config->getPartialsDir()); $this->assertEquals('./filters', $config->getFiltersDir()); $this->assertEquals('./.scape/cache', $config->getCacheDir()); } public function testEnvironmentVariableOverrides(): void { putenv('SCAPE_MODE=debug'); putenv('SCAPE_TEMPLATES_DIR=/tmp/templates'); $config = new Config(); $this->assertEquals('debug', $config->getMode()); $this->assertEquals('/tmp/templates', $config->getTemplatesDir()); // Layouts/Partials should still fall back relative to templates if not set? // Or remain as defaults? Let's check spec. // Spec says they are managed via env vars. We'll assume they have independent defaults. } public function testProgrammaticOverridesPrecedence(): void { putenv('SCAPE_MODE=debug'); $config = new Config([ 'mode' => 'production', 'templates_dir' => '/custom/path' ]); $this->assertEquals('production', $config->getMode()); $this->assertEquals('/custom/path', $config->getTemplatesDir()); } }