\n{}"); foreach (['filesystem', 'sanitize', 'session', 'log'] as $helper) { require $root . '/bl-kernel/helpers/' . $helper . '.class.php'; } require $root . '/bl-kernel/abstract/dbjson.class.php'; require $root . '/bl-kernel/abstract/plugin.class.php'; $site = new class { public function language() { return 'en'; } }; $L = new class { public function add($words) {} }; try { require $root . '/bl-kernel/boot/rules/60.plugins.php'; if (array_keys($plugins['all']) !== ['pluginBluditGithub'] || array_keys($pluginsInstalled) !== ['pluginBluditGithub']) { throw new RuntimeException('A helper was discovered as a plugin or the real plugin was not installed.'); } if (!class_exists('BluditGithubImport', false)) { throw new RuntimeException('Import helper was not loaded during initialization.'); } // Uninstalled plugins are discovered too; loading must also work before installation. if ($plugins['all']['pluginBluditGithub']->directoryName() !== 'bludit-github') { throw new RuntimeException('Directory identity changed.'); } echo "PASS: real Bludit 3.x plugin discovery, installed Plugin constructor, metadata and language loading\n"; } finally { Filesystem::deleteRecursive($dir); }