]> git.frustrated-labs.net Git - gradle-configvalidator-plugin.git/commitdiff
add a console reporter and sample integration test
authorAlexander Goussas <[email protected]>
Mon, 29 Dec 2025 14:19:25 +0000 (09:19 -0500)
committerAlexander Goussas <[email protected]>
Mon, 29 Dec 2025 14:19:25 +0000 (09:19 -0500)
lib/src/main/java/io/github/aloussase/configvalidator/reporting/ConsoleReporter.java [new file with mode: 0644]
lib/src/test/java/io/github/aloussase/configvalidator/RuleEngineTest.java [new file with mode: 0644]

diff --git a/lib/src/main/java/io/github/aloussase/configvalidator/reporting/ConsoleReporter.java b/lib/src/main/java/io/github/aloussase/configvalidator/reporting/ConsoleReporter.java
new file mode 100644 (file)
index 0000000..8bee272
--- /dev/null
@@ -0,0 +1,38 @@
+package io.github.aloussase.configvalidator.reporting;
+
+import io.github.aloussase.configvalidator.Validation;
+
+import java.util.ArrayList;
+import java.util.List;
+
+final public class ConsoleReporter implements ResultsReporter {
+    @Override
+    public void report(List<Validation> validationResults) {
+        final var errors = new ArrayList<Validation.Error>();
+        int successCount = 0;
+
+        for (final var result : validationResults) {
+            switch (result) {
+                case Validation.Error err -> errors.add(err);
+                default -> successCount += 1;
+            }
+        }
+
+        final var sb = new StringBuilder("=== Validation Results ===\n\n");
+
+        sb
+                .append("Success: ").append(successCount).append(", ")
+                .append("Errors: ").append(errors.size()).append("\n");
+
+        sb.append("Error Report:\n\n");
+
+        for (final var err : errors) {
+            sb.append(err.subject().name());
+            sb.append(": ");
+            sb.append(err.message());
+            sb.append("\n");
+        }
+
+        System.out.println(sb);
+    }
+}
diff --git a/lib/src/test/java/io/github/aloussase/configvalidator/RuleEngineTest.java b/lib/src/test/java/io/github/aloussase/configvalidator/RuleEngineTest.java
new file mode 100644 (file)
index 0000000..115502d
--- /dev/null
@@ -0,0 +1,50 @@
+package io.github.aloussase.configvalidator;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import io.github.aloussase.configvalidator.reporting.ConsoleReporter;
+import io.github.aloussase.configvalidator.rules.parser.YamlRuleParser;
+import io.github.aloussase.configvalidator.sources.AndesConfigurationVariableSource;
+import okhttp3.OkHttpClient;
+import org.junit.jupiter.api.Test;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.stream.Collectors;
+
+class RuleEngineTest {
+
+    ///  NOTE: This test is not to be run in CI.
+    @Test
+    public void test() {
+        final var apiUrl = System.getenv("ANDES_API_URL");
+        final var bluePrint = System.getenv("ANDES_BLUEPRINT");
+        final var authToken = System.getenv("ANDES_AUTH_TOKEN");
+        final var deploymentId = System.getenv("ANDES_DEPLOYMENT_ID");
+
+        if (apiUrl == null || authToken == null || deploymentId == null || bluePrint == null) {
+            return;
+        }
+
+        final var reporter = new ConsoleReporter();
+        final var parser = new YamlRuleParser();
+
+        final var httpClient = new OkHttpClient.Builder().build();
+        final var objectMapper = new ObjectMapper();
+        final var dataSource = new AndesConfigurationVariableSource(httpClient, apiUrl, bluePrint, authToken, deploymentId, objectMapper);
+
+        final var engine = new RuleEngine(reporter, parser, dataSource);
+
+        try (
+                final var is = new InputStreamReader(getClass().getResourceAsStream("/sample-rules.yaml"));
+                final var br = new BufferedReader(is)
+        ) {
+            engine.run(
+                    br.lines().collect(Collectors.joining("\n")),
+                    "DEV"
+            );
+        } catch (IOException ignored) {
+        }
+    }
+
+}
\ No newline at end of file