Skip to content

Commit

Permalink
automatically check that config options have docs
Browse files Browse the repository at this point in the history
closes #3674
  • Loading branch information
splitbrain committed May 12, 2022
1 parent ffd2c6d commit f4b4490
Showing 1 changed file with 54 additions and 0 deletions.
54 changes: 54 additions & 0 deletions lib/plugins/config/_test/DocumentationTest.php
@@ -0,0 +1,54 @@
<?php

namespace dokuwiki\plugin\config\test;

use dokuwiki\HTTP\DokuHTTPClient;
use dokuwiki\plugin\config\core\Configuration;
use dokuwiki\plugin\config\core\Setting\SettingFieldset;
use dokuwiki\plugin\config\core\Setting\SettingHidden;

/**
* Ensure config options have documentation at dokuwiki.org
*
* @group plugin_config
* @group admin_plugins
* @group plugins
* @group bundled_plugins
* @group internet
*/
class DocumentationTest extends \DokuWikiTest
{
/**
* @return \Generator|array[]
*/
public function provideSettings()
{
$configuration = new Configuration();

foreach ($configuration->getSettings() as $setting) {
if (is_a($setting, SettingHidden::class)) continue;
if (is_a($setting, SettingFieldset::class)) continue;

$key = $setting->getKey();
$pretty = $setting->getPrettyKey();
if (!preg_match('/ href="(.*?)"/', $pretty, $m)) continue;
$url = $m[1];

yield [$key, $url];
}
}

/**
* @dataProvider provideSettings
* @param string $key Settingskey
* @param string $url Documentation URL
*/
public function testDocs($key, $url)
{
$http = new DokuHTTPClient();
$check = $http->get($url);
$fail = (bool)strpos($check, 'topic does not exist');
$msg = "Setting '$key' should have documentation at $url.";
$this->assertFalse($fail, $msg . ' ' . $http->status . ' ' . $http->error);
}
}

0 comments on commit f4b4490

Please sign in to comment.