Files
deskhub/DeskHub-Webseite/tests/fixtures/paths.php
T
2026-10-16 19:12:24 +00:00

43 lines
1.8 KiB
PHP

<?php
/**
* Hilfsfunktionen für Tests: findet Ordner, die auch außerhalb von DeskHub liegen können (Plugin-Webseite, Quellen
* der mitgelieferten Plugins). Fehlt ein Ordner, werden die betroffenen Tests übersprungen (Exit-Code 0).
*/
/** Projektordner (DeskHub). */
function tests_project_root(): string
{
return dirname(__DIR__, 2);
}
/** Ordner der Plugin-Webseite: DESKHUB_WEBSITE_DIR, sonst plugin-webseite/ im Projekt oder daneben. */
function website_dir_or_skip(string $testName): string
{
$candidates = array_filter([getenv('DESKHUB_WEBSITE_DIR') ?: null, tests_project_root() . '/plugin-webseite', dirname(tests_project_root()) . '/plugin-webseite']);
foreach ($candidates as $dir) {
if (is_file($dir . '/inc/lib.php')) return rtrim(str_replace(chr(92), '/', $dir), '/');
}
echo "{$testName}: übersprungen (Ordner plugin-webseite nicht gefunden; Pfad mit DESKHUB_WEBSITE_DIR angeben).\n";
exit(0);
}
/** Quellordner eines mitgelieferten Plugins/Beispiels (docs/, ../Plugins oder DESKHUB_PLUGIN_SRC), sonst null. */
function plugin_source_dir(string $name): ?string
{
$base = [getenv('DESKHUB_PLUGIN_SRC') ?: null, tests_project_root() . '/docs', dirname(tests_project_root()) . '/Plugins'];
foreach (array_filter($base) as $b) {
foreach (["{$b}/plugins/{$name}", "{$b}/{$name}"] as $dir) {
if (is_dir($dir) && is_file($dir . '/plugin.json')) return rtrim(str_replace(chr(92), '/', $dir), '/');
}
}
return null;
}
function plugin_source_dir_or_skip(string $name, string $testName): string
{
$dir = plugin_source_dir($name);
if ($dir !== null) return $dir;
echo "{$testName}: übersprungen (Quellordner '{$name}' nicht gefunden; Pfad mit DESKHUB_PLUGIN_SRC angeben).\n";
exit(0);
}