Skip to content

Commit

Permalink
Make it possible to utilize same metric twice in a group with metric …
Browse files Browse the repository at this point in the history
…option
  • Loading branch information
DZunke committed Apr 6, 2024
1 parent 6a242e4 commit fd651f2
Show file tree
Hide file tree
Showing 7 changed files with 30 additions and 3 deletions.
6 changes: 6 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,12 @@ groups:
paths:
- src
- tests
i_am_a_free_name_that_will_be_lost:
metric: fielsystem_file_count # This overwrites the key and is the metric to be utilized
title: "Just test files"
paths:
- src
- tests
group3:
title: Static Analysis Metrics"
metrics:
Expand Down
2 changes: 2 additions & 0 deletions panaly.dist.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ groups:
title: "My Metrics"
metrics:
a_static_integer: ~
a_second_static_integer:
metric: a_static_integer

storage:
single_json:
Expand Down
7 changes: 7 additions & 0 deletions src/Configuration/ConfigurationFile.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
use Panaly\Configuration\ConfigurationFile\Reporting;
use Panaly\Configuration\ConfigurationFile\Storage;

use function array_key_exists;
use function array_map;

readonly class ConfigurationFile
Expand Down Expand Up @@ -114,6 +115,12 @@ private static function convertToMetricConfig(array $metricConfig): array
$options ??= [];
unset($options['title']);

if (array_key_exists('metric', $options)) {
// Take the metric not from the key but from the option
$identifier = $options['metric'];
unset($options['metric']);
}

$metrics[] = new Metric($identifier, $title, $options);
}

Expand Down
6 changes: 5 additions & 1 deletion tests/Collector/CollectorTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,13 @@ public function testCollectingMetricsWithResults(): void
self::assertSame('Foo Bar Baz', $groups[0]->getTitle());

$metrics = $groups[0]->getMetrics();
self::assertCount(1, $metrics);
self::assertCount(2, $metrics);

self::assertSame('I am a default title', $metrics[0]->title);
self::assertSame(12, $metrics[0]->value->compute());

self::assertSame('I am a default title', $metrics[1]->title);
self::assertSame(12, $metrics[1]->value->compute());
}

private function getResultFromConfigFile(string $file): Result
Expand Down
5 changes: 4 additions & 1 deletion tests/Configuration/ConfigurationFileLoaderTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -43,10 +43,13 @@ public function testThatLoadingAValidConfigurationFileWillWork(): void
self::assertSame('foo', $configuration->metricGroups[0]->identifier);
self::assertSame('Foo Bar Baz', $configuration->metricGroups[0]->title);

self::assertCount(1, $configuration->metricGroups[0]->metrics);
self::assertCount(2, $configuration->metricGroups[0]->metrics);
self::assertSame('a_static_integer', $configuration->metricGroups[0]->metrics[0]->identifier);
self::assertSame([], $configuration->metricGroups[0]->metrics[0]->options);

self::assertSame('a_static_integer', $configuration->metricGroups[0]->metrics[1]->identifier);
self::assertSame([], $configuration->metricGroups[0]->metrics[1]->options);

self::assertCount(1, $configuration->storage);
self::assertSame('json', $configuration->storage[0]->identifier);
self::assertSame(['path' => 'var/metric_storage'], $configuration->storage[0]->options);
Expand Down
5 changes: 4 additions & 1 deletion tests/Configuration/ConfigurationFileTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ public function testThatCreatingWithMetricGroupsIsValid(): void
'metrics' => [
'baz' => ['title' => 'foo_baz', 'foo' => 'bar'],
'quo' => ['foo' => 'baz'],
'also_a_baz_metric' => ['metric' => 'baz'],
],
],
],
Expand All @@ -64,14 +65,16 @@ public function testThatCreatingWithMetricGroupsIsValid(): void
self::assertSame('foo', $configurationFile->metricGroups[0]->identifier);
self::assertSame('bar', $configurationFile->metricGroups[0]->title);

self::assertCount(2, $configurationFile->metricGroups[0]->metrics);
self::assertCount(3, $configurationFile->metricGroups[0]->metrics);

self::assertSame('baz', $configurationFile->metricGroups[0]->metrics[0]->identifier);
self::assertSame('foo_baz', $configurationFile->metricGroups[0]->metrics[0]->title);
self::assertSame(['foo' => 'bar'], $configurationFile->metricGroups[0]->metrics[0]->options);
self::assertSame('quo', $configurationFile->metricGroups[0]->metrics[1]->identifier);
self::assertNull($configurationFile->metricGroups[0]->metrics[1]->title);
self::assertSame(['foo' => 'baz'], $configurationFile->metricGroups[0]->metrics[1]->options);

self::assertSame('baz', $configurationFile->metricGroups[0]->metrics[2]->identifier);
}

public function testThatCreatingWithStorageIsValid(): void
Expand Down
2 changes: 2 additions & 0 deletions tests/Fixtures/valid-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ groups:
title: Foo Bar Baz
metrics:
a_static_integer: ~
a_second_static_integer:
metric: a_static_integer

storage:
json:
Expand Down

0 comments on commit fd651f2

Please sign in to comment.