43 lines
1.8 KiB
PHP
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);
|
|
}
|