From cc6f49b762f5ba9b84f4d30e2da5e3b64abed332 Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Sat, 24 Jan 2026 13:12:08 +0100 Subject: [PATCH] fix(openmetrics): Make openmetrics always an array like all other infoxml fields Signed-off-by: Joas Schilling --- lib/private/App/InfoParser.php | 3 +++ lib/private/OpenMetrics/ExporterManager.php | 5 +---- tests/lib/InfoXmlTest.php | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/private/App/InfoParser.php b/lib/private/App/InfoParser.php index 677f45d7ae0..4301c2b8fd7 100644 --- a/lib/private/App/InfoParser.php +++ b/lib/private/App/InfoParser.php @@ -196,6 +196,9 @@ class InfoParser { if (isset($array['dependencies']['backend']) && !is_array($array['dependencies']['backend'])) { $array['dependencies']['backend'] = [$array['dependencies']['backend']]; } + if (isset($array['openmetrics']['exporter']) && !is_array($array['openmetrics']['exporter'])) { + $array['openmetrics']['exporter'] = [$array['openmetrics']['exporter']]; + } // Ensure some fields are always arrays if (isset($array['screenshot']) && !is_array($array['screenshot'])) { diff --git a/lib/private/OpenMetrics/ExporterManager.php b/lib/private/OpenMetrics/ExporterManager.php index f81acf9a477..43a2e18ccfb 100644 --- a/lib/private/OpenMetrics/ExporterManager.php +++ b/lib/private/OpenMetrics/ExporterManager.php @@ -63,10 +63,7 @@ class ExporterManager { if (!isset($appInfo[self::XML_ENTRY]) || !is_array($appInfo[self::XML_ENTRY])) { continue; } - foreach ($appInfo[self::XML_ENTRY] as $classEntries) { - // When multiple exporters are specified, $classEntries will be an array, instead of a string - $classnames = is_array($classEntries) ? $classEntries : [$classEntries]; - + foreach ($appInfo[self::XML_ENTRY] as $classnames) { foreach ($classnames as $classname) { if (isset($this->skippedClasses[$classname])) { continue; diff --git a/tests/lib/InfoXmlTest.php b/tests/lib/InfoXmlTest.php index 4e2620439d2..9ef4bdc3178 100644 --- a/tests/lib/InfoXmlTest.php +++ b/tests/lib/InfoXmlTest.php @@ -132,8 +132,8 @@ class InfoXmlTest extends TestCase { } } - if (isset($appInfo['openmetrics'])) { - foreach ($appInfo['openmetrics'] as $class) { + if (isset($appInfo['openmetrics']['exporter'])) { + foreach ($appInfo['openmetrics']['exporter'] as $class) { $this->assertTrue(class_exists($class), 'Asserting exporter "' . $class . '"exists'); $exporter = Server::get($class); $this->assertInstanceOf($class, $exporter);