fix(openmetrics): Make openmetrics always an array like all other infoxml fields

Signed-off-by: Joas Schilling <coding@schilljs.com>
This commit is contained in:
Joas Schilling 2026-01-24 13:12:08 +01:00
parent 45bae0ea48
commit cc6f49b762
No known key found for this signature in database
GPG key ID: F72FA5B49FFA96B0
3 changed files with 6 additions and 6 deletions

View file

@ -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'])) {

View file

@ -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;

View file

@ -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);