You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@creadur.apache.org by cl...@apache.org on 2026/01/20 14:19:24 UTC
(creadur-rat) 02/02: updated cli tests
This is an automated email from the ASF dual-hosted git repository.
claude pushed a commit to branch feature/restructure
in repository https://gitbox.apache.org/repos/asf/creadur-rat.git
commit 6e3b2365dd1940e6f181f64d293f92b51028dfb0
Author: Claude Warren <cl...@xenei.com>
AuthorDate: Sun Jan 18 17:48:48 2026 +0000
updated cli tests
---
.../main/java/org/apache/rat/cli/CLIOption.java | 21 ++----------
.../org/apache/rat/cli/CLIOptionCollection.java | 38 +++++++++++++++++++++-
.../main/java/org/apache/rat/cli/CLIProvider.java | 5 ++-
.../src/main/java/org/apache/rat/cli/Help.java | 6 ++--
.../src/main/java/org/apache/rat/cli/Report.java | 21 +++++++-----
.../src/test/java/org/apache/rat/cli/HelpTest.java | 10 +++---
.../java/org/apache/rat/cli/ReportOptionsTest.java | 11 +++----
.../test/java/org/apache/rat/cli/ReportTest.java | 17 ++++++----
.../src/test/java/org/apache/rat/ReporterTest.java | 1 +
.../testhelpers/data/OptionTestDataProvider.java | 4 ++-
.../testhelpers/data/ReportTestDataProvider.java | 3 +-
pom.xml | 8 +++--
spotbugs-ignore.xml | 1 +
13 files changed, 89 insertions(+), 57 deletions(-)
diff --git a/apache-rat-cli/src/main/java/org/apache/rat/cli/CLIOption.java b/apache-rat-cli/src/main/java/org/apache/rat/cli/CLIOption.java
index b59f1dbf..9e420a76 100644
--- a/apache-rat-cli/src/main/java/org/apache/rat/cli/CLIOption.java
+++ b/apache-rat-cli/src/main/java/org/apache/rat/cli/CLIOption.java
@@ -19,7 +19,6 @@
package org.apache.rat.cli;
import org.apache.commons.cli.Option;
-import org.apache.commons.cli.Options;
import org.apache.commons.lang3.StringUtils;
import org.apache.rat.ui.AbstractOption;
import org.apache.rat.ui.ArgumentTracker;
@@ -27,19 +26,10 @@ import org.apache.rat.ui.ArgumentTracker;
/**
* The CLI option definition.
*/
-public class CLIOption extends AbstractOption<CLIOption> {
+public final class CLIOption extends AbstractOption<CLIOption> {
- /** The Help option */
- static final Option HELP = new Option("?", "help", false, "Print help for the RAT command line interface and exit.");
- /** The additional options */
- static final Options ADDITIONAL_OPTIONS = new Options();
-
- static {
- ADDITIONAL_OPTIONS.addOption(HELP);
- }
-
- public CLIOption(final Option option) {
- super(option, ArgumentTracker.extractKey(option));
+ public CLIOption(final CLIOptionCollection collection, final Option option) {
+ super(collection, option, ArgumentTracker.extractKey(option));
}
@Override
@@ -61,11 +51,6 @@ public class CLIOption extends AbstractOption<CLIOption> {
return ArgumentTracker.extractKey(option);
}
- @Override
- public Options getAdditionalOptions() {
- return ADDITIONAL_OPTIONS;
- }
-
@Override
public String getExample() {
StringBuilder sb = new StringBuilder("-");
diff --git a/apache-rat-cli/src/main/java/org/apache/rat/cli/CLIOptionCollection.java b/apache-rat-cli/src/main/java/org/apache/rat/cli/CLIOptionCollection.java
index b2e14c60..4c8b1160 100644
--- a/apache-rat-cli/src/main/java/org/apache/rat/cli/CLIOptionCollection.java
+++ b/apache-rat-cli/src/main/java/org/apache/rat/cli/CLIOptionCollection.java
@@ -1,4 +1,40 @@
package org.apache.rat.cli;
-public class CLIOptionCollection {
+import java.util.Collections;
+import java.util.Map;
+import java.util.function.Function;
+
+import org.apache.commons.cli.Option;
+import org.apache.commons.cli.Options;
+import org.apache.rat.ui.AbstractOptionCollection;
+
+public class CLIOptionCollection extends AbstractOptionCollection<CLIOption> {
+ /** The Help option */
+ static final Option HELP = new Option("?", "help", false, "Print help for the RAT command line interface and exit.");
+ /** The additional options */
+ static final Options ADDITIONAL_OPTIONS = new Options();
+
+ static {
+ ADDITIONAL_OPTIONS.addOption(HELP);
+ }
+
+ CLIOptionCollection() {
+ super(Collections.emptyList(), ADDITIONAL_OPTIONS);
+ }
+
+ @Override
+ public Function<Option, CLIOption> getMapper() {
+ return option -> new CLIOption(this, option);
+ }
+
+ @Override
+ protected Map<Option, String> defaultOverrides() {
+ return Collections.emptyMap();
+ }
+
+
+ @Override
+ public void addOverride(final Option option, final String value) {
+ throw new UnsupportedOperationException();
+ }
}
diff --git a/apache-rat-cli/src/main/java/org/apache/rat/cli/CLIProvider.java b/apache-rat-cli/src/main/java/org/apache/rat/cli/CLIProvider.java
index 298ccc76..f82f6acb 100644
--- a/apache-rat-cli/src/main/java/org/apache/rat/cli/CLIProvider.java
+++ b/apache-rat-cli/src/main/java/org/apache/rat/cli/CLIProvider.java
@@ -18,7 +18,6 @@
*/
package org.apache.rat.cli;
-import org.apache.rat.ui.OptionFactory;
import org.apache.rat.ui.UI;
import org.apache.rat.ui.spi.UIProvider;
@@ -36,8 +35,8 @@ public class CLIProvider implements UIProvider {
}
@Override
- public OptionFactory.Config<CLIOption> getFactoryConfig() {
- return new OptionFactory.Config<>(null, CLIOption::new, CLIOption.ADDITIONAL_OPTIONS);
+ public CLIOptionCollection getOptionCollection() {
+ return new CLIOptionCollection();
}
}
}
diff --git a/apache-rat-cli/src/main/java/org/apache/rat/cli/Help.java b/apache-rat-cli/src/main/java/org/apache/rat/cli/Help.java
index 00da957f..1c3735f9 100644
--- a/apache-rat-cli/src/main/java/org/apache/rat/cli/Help.java
+++ b/apache-rat-cli/src/main/java/org/apache/rat/cli/Help.java
@@ -24,7 +24,7 @@ import java.util.Collections;
import java.util.List;
import org.apache.commons.cli.Options;
-import org.apache.rat.OptionCollection;
+import org.apache.rat.OptionCollectionParser;
import org.apache.rat.config.exclusion.StandardCollection;
import org.apache.rat.help.AbstractHelp;
@@ -98,8 +98,8 @@ public class Help extends AbstractHelp {
public String printArgumentTypes() {
String argumentPadding = createPadding(helpFormatter.getLeftPadding() + HELP_PADDING);
- for (OptionCollection.ArgumentType argType : OptionCollection.ArgumentType.values()) {
- if (argType != OptionCollection.ArgumentType.NONE) {
+ for (OptionCollectionParser.ArgumentType argType : OptionCollectionParser.ArgumentType.values()) {
+ if (argType != OptionCollectionParser.ArgumentType.NONE) {
writer.format("%n<%s>%n", argType.getDisplayName());
helpFormatter.printWrapped(writer, helpFormatter.getWidth(), helpFormatter.getLeftPadding() + HELP_PADDING + HELP_PADDING,
argumentPadding + argType.description().get());
diff --git a/apache-rat-cli/src/main/java/org/apache/rat/cli/Report.java b/apache-rat-cli/src/main/java/org/apache/rat/cli/Report.java
index 3a7e5609..2a8fed9e 100644
--- a/apache-rat-cli/src/main/java/org/apache/rat/cli/Report.java
+++ b/apache-rat-cli/src/main/java/org/apache/rat/cli/Report.java
@@ -23,8 +23,9 @@ import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
+import org.apache.commons.cli.Options;
import org.apache.commons.io.function.IOSupplier;
-import org.apache.rat.OptionCollection;
+import org.apache.rat.OptionCollectionParser;
import org.apache.rat.ReportConfiguration;
import org.apache.rat.Reporter;
import org.apache.rat.VersionInfo;
@@ -49,6 +50,7 @@ public final class Report {
*/
public static void main(final String[] args) throws Exception {
VersionInfo versionInfo = new VersionInfo(Report.class);
+ CLIOptionCollection optionCollection = new CLIOptionCollection();
DefaultLog.getInstance().info(String.format("%s %s on %s %s (%s)",
versionInfo.getTitle(), versionInfo.getVersion(), versionInfo.getSpecTitle(), versionInfo.getSpecVersion(),
versionInfo.getSpecVendor()));
@@ -59,7 +61,7 @@ public final class Report {
System.exit(0);
}
- Reporter.Output result = generateReport(new File("."), args);
+ Reporter.Output result = generateReport(optionCollection, new File("."), args);
if (result != null) {
result.writeSummary(DefaultLog.getInstance().asWriter());
@@ -76,10 +78,10 @@ public final class Report {
* Prints the usage message on the specified output stream.
* @param out The OutputStream supplier
*/
- private static void printUsage(final IOSupplier<OutputStream> out) {
+ private static void printUsage(final Options options, final IOSupplier<OutputStream> out) {
try (OutputStream stream = out.get();
PrintWriter writer = new PrintWriter(stream)) {
- new Help(writer).printUsage(OptionCollection.buildOptions(CLIOption.ADDITIONAL_OPTIONS));
+ new Help(writer).printUsage(options);
} catch (IOException e) {
throw new RuntimeException(e);
}
@@ -92,17 +94,18 @@ public final class Report {
* @return The Client output.
* @throws Exception on error.
*/
- static Reporter.Output generateReport(final File workingDirectory, final String[] args) throws Exception {
+ static Reporter.Output generateReport(final CLIOptionCollection optionCollection, final File workingDirectory, final String[] args) throws Exception {
Reporter.Output output = null;
- ArgumentContext argumentContext = OptionCollection.parseCommands(workingDirectory, args, CLIOption.ADDITIONAL_OPTIONS);
+ OptionCollectionParser optionParser = new OptionCollectionParser(optionCollection);
+ ArgumentContext argumentContext = optionParser.parseCommands(workingDirectory, args);
ReportConfiguration configuration = argumentContext.getConfiguration();
if (configuration != null) {
- if (argumentContext.getCommandLine().hasOption(CLIOption.HELP)) {
- printUsage(argumentContext.getConfiguration().getOutput());
+ if (argumentContext.getCommandLine().hasOption(CLIOptionCollection.HELP)) {
+ printUsage(optionCollection.getOptions(), argumentContext.getConfiguration().getOutput());
} else if (!configuration.hasSource()) {
String msg = "No directories or files specified for scanning. Did you forget to close a multi-argument option?";
DefaultLog.getInstance().error(msg);
- printUsage(argumentContext.getConfiguration().getOutput());
+ printUsage(optionCollection.getOptions(), argumentContext.getConfiguration().getOutput());
} else {
configuration.validate();
Reporter reporter = new Reporter(configuration);
diff --git a/apache-rat-cli/src/test/java/org/apache/rat/cli/HelpTest.java b/apache-rat-cli/src/test/java/org/apache/rat/cli/HelpTest.java
index 7c90a381..7e111a22 100644
--- a/apache-rat-cli/src/test/java/org/apache/rat/cli/HelpTest.java
+++ b/apache-rat-cli/src/test/java/org/apache/rat/cli/HelpTest.java
@@ -24,7 +24,7 @@ import java.util.Set;
import java.util.stream.Collectors;
import org.apache.commons.cli.Option;
import org.apache.commons.cli.Options;
-import org.apache.rat.OptionCollection;
+import org.apache.rat.OptionCollectionParser;
import org.apache.rat.testhelpers.TextUtils;
import org.junit.jupiter.api.Test;
@@ -33,9 +33,11 @@ import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.assertTrue;
public class HelpTest {
+ private CLIOptionCollection cliCollection = new CLIOptionCollection();
+
@Test
public void verifyAllOptionsListed() {
- Options opts = OptionCollection.buildOptions(CLIOption.ADDITIONAL_OPTIONS);
+ Options opts = cliCollection.getOptions();
StringWriter out = new StringWriter();
new Help(out).printUsage(opts);
@@ -55,8 +57,8 @@ public class HelpTest {
@Test
public void verifyArgumentsListed() {
- Options opts = OptionCollection.buildOptions(CLIOption.ADDITIONAL_OPTIONS);
- Set<String> argTypes = Arrays.stream(OptionCollection.ArgumentType.values()).map(OptionCollection.ArgumentType::getDisplayName).collect(Collectors.toSet());
+ Options opts = cliCollection.getOptions();
+ Set<String> argTypes = Arrays.stream(OptionCollectionParser.ArgumentType.values()).map(OptionCollectionParser.ArgumentType::getDisplayName).collect(Collectors.toSet());
StringWriter out = new StringWriter();
new Help(out).printUsage(opts);
String result = out.toString();
diff --git a/apache-rat-cli/src/test/java/org/apache/rat/cli/ReportOptionsTest.java b/apache-rat-cli/src/test/java/org/apache/rat/cli/ReportOptionsTest.java
index f445cd78..9c88510a 100644
--- a/apache-rat-cli/src/test/java/org/apache/rat/cli/ReportOptionsTest.java
+++ b/apache-rat-cli/src/test/java/org/apache/rat/cli/ReportOptionsTest.java
@@ -22,8 +22,7 @@ import java.nio.file.Path;
import java.util.stream.Stream;
import org.apache.rat.Reporter;
-import org.apache.rat.api.RatException;
-import org.apache.rat.testhelpers.FileUtils;
+import org.apache.rat.utils.FileUtils;
import org.apache.rat.testhelpers.data.OptionTestDataProvider;
import org.apache.rat.testhelpers.data.TestData;
@@ -37,7 +36,6 @@ import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.MethodSource;
-import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
@@ -59,7 +57,7 @@ public class ReportOptionsTest {
static Stream<Arguments> getTestData() {
- return optionTestDataProvider.getUITestMap().values().stream().map(testData ->
+ return optionTestDataProvider.getUITestMap(new CLIOptionCollection()).values().stream().map(testData ->
Arguments.of(testData.getTestName(), testData));
// TODO add help test
}
@@ -72,13 +70,14 @@ public class ReportOptionsTest {
@MethodSource("getTestData")
void testOptionsUpdateConfig(String name, TestData test) throws Exception {
Path basePath = testPath.resolve(test.getTestName());
+ CLIOptionCollection optionCollection = new CLIOptionCollection();
FileUtils.mkDir(basePath.toFile());
test.setupFiles(basePath);
if (test.getExpectedException() != null) {
- assertThatThrownBy(() -> Report.generateReport(basePath.toFile(), test.getCommandLine(basePath.toString()))
+ assertThatThrownBy(() -> Report.generateReport(optionCollection, basePath.toFile(), test.getCommandLine(basePath.toString()))
).hasMessageContaining(test.getExpectedException().getMessage());
} else {
- Reporter.Output result = Report.generateReport(basePath.toFile(), test.getCommandLine(basePath.toString()));
+ Reporter.Output result = Report.generateReport(optionCollection, basePath.toFile(), test.getCommandLine(basePath.toString()));
ValidatorData data = new ValidatorData(result, basePath.toString());
test.getValidator().accept(data);
}
diff --git a/apache-rat-cli/src/test/java/org/apache/rat/cli/ReportTest.java b/apache-rat-cli/src/test/java/org/apache/rat/cli/ReportTest.java
index 891fb46e..f22051d7 100644
--- a/apache-rat-cli/src/test/java/org/apache/rat/cli/ReportTest.java
+++ b/apache-rat-cli/src/test/java/org/apache/rat/cli/ReportTest.java
@@ -25,10 +25,10 @@ import java.util.Map;
import java.util.stream.Stream;
import org.apache.commons.cli.Option;
import org.apache.commons.lang3.tuple.ImmutablePair;
-import org.apache.rat.OptionCollection;
+import org.apache.rat.OptionCollectionParser;
import org.apache.rat.Reporter;
import org.apache.rat.commandline.Arg;
-import org.apache.rat.testhelpers.FileUtils;
+import org.apache.rat.utils.FileUtils;
import org.apache.rat.testhelpers.TextUtils;
import org.apache.rat.testhelpers.data.DataUtils;
import org.apache.rat.testhelpers.data.ReportTestDataProvider;
@@ -53,6 +53,8 @@ public class ReportTest {
private static final ReportTestDataProvider reportTestDataProvider = new ReportTestDataProvider();
+ private static final CLIOptionCollection cliCollection = new CLIOptionCollection();
+
/**
* This method is a known workaround for
* {@link <a href="https://github.com/junit-team/junit5/issues/2811">junit 5 issue #2811</a> }.
@@ -65,14 +67,14 @@ public class ReportTest {
static Stream<Arguments> getTestData() {
- Map<String, TestData> tests = reportTestDataProvider.getOptionTestMap(Collections.emptyList());
- TestData test = new TestData("", Arrays.asList(ImmutablePair.of(CLIOption.HELP, new String[]{}),
+ Map<String, TestData> tests = reportTestDataProvider.getOptionTestMap(cliCollection);
+ TestData test = new TestData("", Arrays.asList(ImmutablePair.of(CLIOptionCollection.HELP, new String[]{}),
ImmutablePair.of(Arg.OUTPUT_FILE.option(), new String[]{"helpText"})),
DataUtils.NO_SETUP,
validatorData -> {
try {
String result = TextUtils.readFile(validatorData.getBaseDir().resolve("helpText").toFile());
- for (Option option : OptionCollection.buildOptions(CLIOption.ADDITIONAL_OPTIONS).getOptions()) {
+ for (Option option : cliCollection.getOptions().getOptions()) {
if (option.getOpt() != null) {
TextUtils.assertContains("-" + option.getOpt() + (option.getLongOpt() == null ? " " : ","), result);
}
@@ -99,14 +101,15 @@ public class ReportTest {
@ParameterizedTest( name = "{index} {0}")
@MethodSource("getTestData")
void testOptionsUpdateConfig(String name, TestData test) throws Exception {
+ CLIOptionCollection optionCollection = new CLIOptionCollection();
Path basePath = testPath.resolve(test.getTestName());
FileUtils.mkDir(basePath.toFile());
test.setupFiles(basePath);
if (test.getExpectedException() != null) {
- assertThatThrownBy(() -> Report.generateReport(basePath.toFile(), test.getCommandLine(basePath.toString()))
+ assertThatThrownBy(() -> Report.generateReport(optionCollection, basePath.toFile(), test.getCommandLine(basePath.toString()))
).hasMessageContaining(test.getExpectedException().getMessage());
} else {
- Reporter.Output result = Report.generateReport(basePath.toFile(), test.getCommandLine(basePath.toString()));
+ Reporter.Output result = Report.generateReport(optionCollection, basePath.toFile(), test.getCommandLine(basePath.toString()));
ValidatorData data = new ValidatorData(result, basePath.toString());
test.getValidator().accept(data);
}
diff --git a/apache-rat-core/src/test/java/org/apache/rat/ReporterTest.java b/apache-rat-core/src/test/java/org/apache/rat/ReporterTest.java
index d1da47cb..e057c81c 100644
--- a/apache-rat-core/src/test/java/org/apache/rat/ReporterTest.java
+++ b/apache-rat-core/src/test/java/org/apache/rat/ReporterTest.java
@@ -534,6 +534,7 @@ public class ReporterTest {
Reporter.Output output = ctxt.getConfiguration() != null ? new Reporter(ctxt.getConfiguration()).execute() :
Reporter.Output.builder().build();
ValidatorData data = new ValidatorData(output, basePath.toString());
+ data.getOutput().format(data.getConfiguration());
test.getValidator().accept(data);
}
}
diff --git a/apache-rat-core/src/test/java/org/apache/rat/testhelpers/data/OptionTestDataProvider.java b/apache-rat-core/src/test/java/org/apache/rat/testhelpers/data/OptionTestDataProvider.java
index af44bab7..8c0144dd 100644
--- a/apache-rat-core/src/test/java/org/apache/rat/testhelpers/data/OptionTestDataProvider.java
+++ b/apache-rat-core/src/test/java/org/apache/rat/testhelpers/data/OptionTestDataProvider.java
@@ -80,7 +80,9 @@ public class OptionTestDataProvider extends AbstractTestDataProvider {
public Map<String, TestData> getUITestMap(final AbstractOptionCollection<?> optionCollection) {
final ConfigurationException noLicenses = new ConfigurationException("At least one license must be defined");
Map<String, TestData> result = getOptionTestMap(optionCollection);
- result.get("configuration-no-defaults").setException(noLicenses);
+ for (Option option : Arg.CONFIGURATION_NO_DEFAULTS.group().getOptions()) {
+ result.get(option.getLongOpt()).setException(noLicenses);
+ }
result.get("licenses-approved/withoutDefaults").setException(noLicenses);
result.get("licenses-approved-file/withoutDefaults").setException(noLicenses);
result.get("license-families-approved/withoutDefaults").setException(noLicenses);
diff --git a/apache-rat-core/src/test/java/org/apache/rat/testhelpers/data/ReportTestDataProvider.java b/apache-rat-core/src/test/java/org/apache/rat/testhelpers/data/ReportTestDataProvider.java
index 3249f6c2..bd2e88ae 100644
--- a/apache-rat-core/src/test/java/org/apache/rat/testhelpers/data/ReportTestDataProvider.java
+++ b/apache-rat-core/src/test/java/org/apache/rat/testhelpers/data/ReportTestDataProvider.java
@@ -985,11 +985,10 @@ public class ReportTestDataProvider extends AbstractTestDataProvider {
File outFile = validatorData.getBaseDir().resolve("outexample").toFile();
try {
- validatorData.getOutput().format(validatorData.getConfiguration());
String actualText = TextUtils.readFile(outFile);
TextUtils.assertContainsExactly(1, "Apache License 2.0: 1 ", actualText);
TextUtils.assertContainsExactly(1, "STANDARD: 1 ", actualText);
- } catch (IOException | RatException e) {
+ } catch (IOException e) {
throw new RuntimeException(e);
}
})
diff --git a/pom.xml b/pom.xml
index 54f9cf6b..a597619b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -503,7 +503,6 @@ agnostic home for software distribution comprehension and audit tools.
<!-- we only want to see our own problems in all subpackages -->
<onlyAnalyze>org.apache.rat.-</onlyAnalyze>
<!-- in order to have a global spotbugs configuration an exclusion file needs to exist in all submodules -->
- <excludeFilterFile>${project.basedir}/spotbugs-ignore.xml</excludeFilterFile>
<plugins>
<plugin>
<groupId>com.h3xstream.findsecbugs</groupId>
@@ -713,6 +712,9 @@ agnostic home for software distribution comprehension and audit tools.
<plugin>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs-maven-plugin</artifactId>
+ <configuration>
+ <excludeFilterFile>spotbugs-ignore.xml</excludeFilterFile>
+ </configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
@@ -988,8 +990,8 @@ agnostic home for software distribution comprehension and audit tools.
<module>apache-rat-core-tests</module>
<module>apache-rat-cli</module>
<module>apache-rat-maven-parent</module>
- <module>apache-rat-ant-parent</module>
- <module>apache-rat</module>
+<!-- <module>apache-rat-ant-parent</module>-->
+<!-- <module>apache-rat</module>-->
</modules>
<licenses>
<license>
diff --git a/spotbugs-ignore.xml b/spotbugs-ignore.xml
index 39e672f5..7e66dc7a 100644
--- a/spotbugs-ignore.xml
+++ b/spotbugs-ignore.xml
@@ -17,4 +17,5 @@
-->
<FindBugsFilter>
+
</FindBugsFilter>