diff --git a/pom.xml b/pom.xml
index 0809acc..de67338 100644
--- a/pom.xml
+++ b/pom.xml
@@ -61,6 +61,12 @@
3.25.3
test
+
+ org.mockito
+ mockito-core
+ 5.11.0
+ test
+
diff --git a/src/main/java/org/asciidoctor/asciidoclet/AsciiDocTrees.java b/src/main/java/org/asciidoctor/asciidoclet/AsciiDocTrees.java
index 9ac8ec2..dbd0f69 100644
--- a/src/main/java/org/asciidoctor/asciidoclet/AsciiDocTrees.java
+++ b/src/main/java/org/asciidoctor/asciidoclet/AsciiDocTrees.java
@@ -98,12 +98,11 @@ private Tokens.Comment convertToAsciidoctor(Tokens.Comment comment) {
AsciidocComment result = new AsciidocComment(asciidoc, comment);
return result;
}
-
+
private String convertJavadocStringToAsciidoctorString(String javadocString) {
- return converter.convert(javadocString);
+ return converter.convert(javadocString);
}
-
-
+
@Override
public DocCommentTree getDocCommentTree(Element e) {
TreePath path = getPath(e);
@@ -154,19 +153,19 @@ public DocTreePath getDocTreePath(FileObject fileObject, PackageElement packageE
public Element getElement(DocTreePath path) {
return docTrees.getElement(path);
}
-
+
// Not giving @Override in order to make this class compilable under all of JDK 11, 17, 21.
public TypeMirror getType(DocTreePath path) {
// In order to make this method compilable with JDK11, which doesn't define DocTrees#getType method,
// and make this method work with JDK 17 and later, invoke the DocTrees#getType(DocTreePath) method reflectively.
// Once we decide to stop supporting JDK 11, just call getType directly.
- try {
- return (TypeMirror) DocTrees.class.getMethod("getType", DocTreePath.class).invoke(docTrees, path);
- } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
- throw new RuntimeException(e);
- }
+ try {
+ return (TypeMirror) DocTrees.class.getMethod("getType", DocTreePath.class).invoke(docTrees, path);
+ } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
+ throw new RuntimeException(e);
+ }
}
-
+
@Override
public List getFirstSentence(List extends DocTree> list) {
return docTrees.getFirstSentence(list);
diff --git a/src/main/java/org/asciidoctor/asciidoclet/Asciidoclet.java b/src/main/java/org/asciidoctor/asciidoclet/Asciidoclet.java
index 3012da6..ef2e80a 100644
--- a/src/main/java/org/asciidoctor/asciidoclet/Asciidoclet.java
+++ b/src/main/java/org/asciidoctor/asciidoclet/Asciidoclet.java
@@ -21,8 +21,6 @@
import jdk.javadoc.doclet.StandardDoclet;
import javax.lang.model.SourceVersion;
-import java.io.IOException;
-import java.io.UncheckedIOException;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Locale;
@@ -213,13 +211,11 @@ public SourceVersion getSupportedSourceVersion() {
@Override
public boolean run(DocletEnvironment environment) {
- docletOptions.validateOptions();
+ docletOptions.validate();
AsciidoctorConverter converter = new AsciidoctorConverter(docletOptions, reporter);
boolean result;
try (AsciidoctorFilteredEnvironment env = new AsciidoctorFilteredEnvironment(environment, converter)) {
result = standardDoclet.run(env);
- } catch (IOException e) {
- throw new UncheckedIOException(e);
}
return result && postProcess(environment);
}
diff --git a/src/main/java/org/asciidoctor/asciidoclet/AsciidoctorConverter.java b/src/main/java/org/asciidoctor/asciidoclet/AsciidoctorConverter.java
index bddd244..c95e862 100644
--- a/src/main/java/org/asciidoctor/asciidoclet/AsciidoctorConverter.java
+++ b/src/main/java/org/asciidoctor/asciidoclet/AsciidoctorConverter.java
@@ -17,17 +17,9 @@
import jdk.javadoc.doclet.Reporter;
import org.asciidoctor.Asciidoctor;
-import org.asciidoctor.Attributes;
-import org.asciidoctor.AttributesBuilder;
import org.asciidoctor.Options;
-import org.asciidoctor.OptionsBuilder;
-import org.asciidoctor.SafeMode;
-import org.asciidoctor.extension.RubyExtensionRegistry;
import org.asciidoctor.jruby.AsciidoctorJRuby;
-import java.io.IOException;
-import java.util.List;
-import java.util.Optional;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -40,36 +32,20 @@ class AsciidoctorConverter {
static final String MARKER = " \t \t";
- private static AttributesBuilder defaultAttributes() {
- return Attributes.builder()
- .attribute("at", "@")
- .attribute("slash", "/")
- .attribute("icons", null)
- .attribute("idprefix", "")
- .attribute("idseparator", "-")
- .attribute("javadoc", "")
- .attribute("showtitle", true)
- .attribute("source-highlighter", "coderay")
- .attribute("coderay-css", "class")
- .attribute("env-asciidoclet")
- .attribute("env", "asciidoclet");
- }
-
- private static OptionsBuilder defaultOptions() {
- return Options.builder()
- .safe(SafeMode.SAFE)
- .backend("html5");
- }
-
private static final Pattern TYPE_PARAM = Pattern.compile("\\s*<(\\w+)>(.*)");
private static final String INLINE_DOCTYPE = "inline";
+ private final DocletOptions docletOptions;
+ private final Reporter reporter;
+
private final Asciidoctor asciidoctor;
- private final Optional templates;
- private final Options options;
+ private final OutputTemplates templates;
AsciidoctorConverter(DocletOptions docletOptions, Reporter reporter) {
- this(docletOptions, reporter, OutputTemplates.create(reporter), createAsciidoctorInstance(docletOptions.gemPath()));
+ this.asciidoctor = createAsciidoctorInstance(docletOptions.gemPath());
+ this.reporter = reporter;
+ this.templates = OutputTemplates.create(reporter);
+ this.docletOptions = docletOptions;
}
private static Asciidoctor createAsciidoctorInstance(String gemPath) {
@@ -79,37 +55,6 @@ private static Asciidoctor createAsciidoctorInstance(String gemPath) {
return Asciidoctor.Factory.create();
}
- /**
- * Constructor used directly for testing purposes only.
- */
- AsciidoctorConverter(DocletOptions docletOptions, Reporter errorReporter, Optional templates, Asciidoctor asciidoctor) {
- this.asciidoctor = asciidoctor;
- this.templates = templates;
- this.options = buildOptions(docletOptions, errorReporter);
- }
-
- private Options buildOptions(DocletOptions docletOptions, Reporter errorReporter) {
- final OptionsBuilder opts = defaultOptions();
- if (docletOptions.baseDir().isPresent()) {
- opts.baseDir(docletOptions.baseDir().get());
- }
- templates.ifPresent(outputTemplates -> opts.templateDir(outputTemplates.templateDir().toFile()));
- opts.attributes(buildAttributes(docletOptions, errorReporter));
- if (docletOptions.requires().size() > 0) {
- RubyExtensionRegistry rubyExtensionRegistry = asciidoctor.rubyExtensionRegistry();
- for (String require : docletOptions.requires()) {
- rubyExtensionRegistry.requireLibrary(require);
- }
- }
- return opts.get();
- }
-
- private Attributes buildAttributes(DocletOptions docletOptions, Reporter errorReporter) {
- return defaultAttributes()
- .attributes(new AttributesLoader(asciidoctor, docletOptions, errorReporter).load())
- .get();
- }
-
/**
* Converts a generic document (class, field, method, etc.).
*
@@ -132,12 +77,6 @@ String convert(String doc) {
return buffer.toString();
}
- void cleanup() throws IOException {
- if (templates.isPresent()) {
- templates.get().delete();
- }
- }
-
/**
* Renders a document tag in the standard way.
*
@@ -181,21 +120,17 @@ private String convert(String input, boolean inline) {
if (input.trim().isEmpty()) {
return "";
}
+ Options options = new AsciidoctorOptionsFactory(asciidoctor, reporter)
+ .create(docletOptions, templates);
// Setting doctype to null results in an NPE from asciidoctor.
// the default value from the command line is "article".
// https://docs.asciidoctor.org/asciidoctor/latest/cli/man1/asciidoctor/#options
- // In general, in order to respect original doctype, we should do the following.
- // options.setDocType(inline ?
- // INLINE_DOCTYPE :
- // options.map().containsKey(Options.DOCTYPE) ?
- // (String)options.map().get(Options.DOCTYPE) :
- // "article");
- // However, this fix breaks AsciidoctorConverterTest#testParameterWithoutTypeTag.
- // For now, I simply set it to "article", always.
options.setDocType(inline ?
- INLINE_DOCTYPE :
- "article"); // upstream sets this to "".
-
+ INLINE_DOCTYPE :
+ options.map().containsKey(Options.DOCTYPE) ?
+ (String) options.map().get(Options.DOCTYPE) :
+ "article");
+
return asciidoctor.convert(cleanJavadocInput(input), options);
}
diff --git a/src/main/java/org/asciidoctor/asciidoclet/AsciidoctorFilteredEnvironment.java b/src/main/java/org/asciidoctor/asciidoclet/AsciidoctorFilteredEnvironment.java
index 7adbbb8..150de16 100644
--- a/src/main/java/org/asciidoctor/asciidoclet/AsciidoctorFilteredEnvironment.java
+++ b/src/main/java/org/asciidoctor/asciidoclet/AsciidoctorFilteredEnvironment.java
@@ -21,7 +21,6 @@
import javax.tools.JavaFileManager;
import javax.tools.StandardJavaFileManager;
-import java.io.IOException;
/**
* An operating environment defined for AsciiDoclet.
@@ -30,13 +29,11 @@ public class AsciidoctorFilteredEnvironment
extends DocEnvImpl
implements DocletEnvironment, AutoCloseable {
- private final AsciidoctorConverter converter;
private final StandardJavaFileManager fileManager;
private final AsciiDocTrees asciiDocTrees;
AsciidoctorFilteredEnvironment(DocletEnvironment environment, AsciidoctorConverter converter) {
super(((DocEnvImpl) environment).toolEnv, ((DocEnvImpl) environment).etable);
- this.converter = converter;
this.fileManager = new AsciidoctorFileManager(converter, (StandardJavaFileManager) environment.getJavaFileManager());
this.asciiDocTrees = new AsciiDocTrees(converter, fileManager, environment.getDocTrees());
}
@@ -52,7 +49,6 @@ public DocTrees getDocTrees() {
}
@Override
- public void close() throws IOException {
- converter.cleanup();
+ public void close() {
}
}
diff --git a/src/main/java/org/asciidoctor/asciidoclet/AsciidoctorOptionsFactory.java b/src/main/java/org/asciidoctor/asciidoclet/AsciidoctorOptionsFactory.java
new file mode 100644
index 0000000..9137153
--- /dev/null
+++ b/src/main/java/org/asciidoctor/asciidoclet/AsciidoctorOptionsFactory.java
@@ -0,0 +1,70 @@
+package org.asciidoctor.asciidoclet;
+
+import jdk.javadoc.doclet.Reporter;
+import org.asciidoctor.Asciidoctor;
+import org.asciidoctor.Attributes;
+import org.asciidoctor.AttributesBuilder;
+import org.asciidoctor.Options;
+import org.asciidoctor.OptionsBuilder;
+import org.asciidoctor.SafeMode;
+import org.asciidoctor.extension.RubyExtensionRegistry;
+
+class AsciidoctorOptionsFactory {
+
+ private static final String DEFAULT_BACKEND = "html5";
+
+ private final Asciidoctor asciidoctor;
+ private final Reporter reporter;
+
+ AsciidoctorOptionsFactory(Asciidoctor asciidoctor, Reporter reporter) {
+ this.asciidoctor = asciidoctor;
+ this.reporter = reporter;
+ }
+
+ Options create(DocletOptions docletOptions, OutputTemplates templates) {
+ final OptionsBuilder opts = defaultOptions();
+ if (docletOptions.baseDir().isPresent()) {
+ opts.baseDir(docletOptions.baseDir().get());
+ }
+ if (templates != null) {
+ opts.templateDir(templates.templateDir().toFile());
+ }
+
+ opts.attributes(buildAttributes(docletOptions));
+ if (docletOptions.requires().size() > 0) {
+ RubyExtensionRegistry rubyExtensionRegistry = asciidoctor.rubyExtensionRegistry();
+ for (String require : docletOptions.requires()) {
+ rubyExtensionRegistry.requireLibrary(require);
+ }
+ }
+ return opts.get();
+ }
+
+ private Attributes buildAttributes(DocletOptions docletOptions) {
+ return defaultAttributes()
+ .attributes(new AttributesLoader(asciidoctor, docletOptions, reporter).load())
+ .get();
+ }
+
+ private static OptionsBuilder defaultOptions() {
+ return Options.builder()
+ .safe(SafeMode.SAFE)
+ .backend(DEFAULT_BACKEND);
+ }
+
+ private static AttributesBuilder defaultAttributes() {
+ return org.asciidoctor.Attributes.builder()
+ .attribute("at", "@")
+ .attribute("slash", "/")
+ .attribute("icons", null)
+ .attribute("idprefix", "")
+ .attribute("idseparator", "-")
+ .attribute("javadoc", "")
+ .attribute("showtitle", true)
+ .attribute("source-highlighter", "coderay")
+ .attribute("coderay-css", "class")
+ .attribute("env-asciidoclet")
+ .attribute("env", "asciidoclet");
+ }
+
+}
diff --git a/src/main/java/org/asciidoctor/asciidoclet/AttributesLoader.java b/src/main/java/org/asciidoctor/asciidoclet/AttributesLoader.java
index 8f5ec10..5be9358 100644
--- a/src/main/java/org/asciidoctor/asciidoclet/AttributesLoader.java
+++ b/src/main/java/org/asciidoctor/asciidoclet/AttributesLoader.java
@@ -21,15 +21,11 @@
import org.asciidoctor.Options;
import org.asciidoctor.OptionsBuilder;
import org.asciidoctor.SafeMode;
-import org.asciidoctor.jruby.internal.IOUtils;
import javax.tools.Diagnostic;
import java.io.File;
-import java.io.IOException;
import java.io.Reader;
-import java.io.StringReader;
import java.nio.file.Files;
-import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
@@ -41,12 +37,12 @@ class AttributesLoader {
private final Asciidoctor asciidoctor;
private final DocletOptions docletOptions;
- private final Reporter errorReporter;
+ private final Reporter reporter;
- AttributesLoader(Asciidoctor asciidoctor, DocletOptions docletOptions, Reporter errorReporter) {
+ AttributesLoader(Asciidoctor asciidoctor, DocletOptions docletOptions, Reporter reporter) {
this.asciidoctor = asciidoctor;
this.docletOptions = docletOptions;
- this.errorReporter = errorReporter;
+ this.reporter = reporter;
}
Map load() {
@@ -80,7 +76,7 @@ private Map parseAttributesFile(Optional attrsFile, Map parseAttributes(Reader in, Map exist
options.baseDir(docletOptions.baseDir().get());
}
- final String content = read(in);
- final Map parsed = asciidoctor.load(content, options.build()).getAttributes();
- return parsed;
+ return asciidoctor.load(read(in), options.build()).getAttributes();
}
public static String read(Reader reader) {
- try (Scanner scanner = new Scanner(reader).useDelimiter("\\A")){
+ try (Scanner scanner = new Scanner(reader).useDelimiter("\\A")) {
return scanner.next();
}
}
diff --git a/src/main/java/org/asciidoctor/asciidoclet/DocletOptions.java b/src/main/java/org/asciidoctor/asciidoclet/DocletOptions.java
index 85d1601..b6c4f26 100644
--- a/src/main/java/org/asciidoctor/asciidoclet/DocletOptions.java
+++ b/src/main/java/org/asciidoctor/asciidoclet/DocletOptions.java
@@ -89,7 +89,7 @@ private Stream splitTrimStream(List list) {
.filter(s -> !s.isEmpty());
}
- void validateOptions() {
+ void validate() {
if (baseDir().isEmpty()) {
printWarning(AsciidocletOptions.BASEDIR + " must be present for includes or file reference features to work properly");
}
diff --git a/src/main/java/org/asciidoctor/asciidoclet/OutputTemplates.java b/src/main/java/org/asciidoctor/asciidoclet/OutputTemplates.java
index 4f5d85a..8441e7a 100644
--- a/src/main/java/org/asciidoctor/asciidoclet/OutputTemplates.java
+++ b/src/main/java/org/asciidoctor/asciidoclet/OutputTemplates.java
@@ -24,7 +24,6 @@
import java.io.UncheckedIOException;
import java.nio.file.Files;
import java.nio.file.Path;
-import java.util.Optional;
/**
* Sets up a temporary directory containing output templates for use by Asciidoctor.
@@ -39,32 +38,32 @@ private OutputTemplates(Path templateDir) {
this.templateDir = templateDir;
}
- static Optional create(Reporter errorReporter) {
- Path dir = prepareTemplateDir(errorReporter);
- return Optional.ofNullable(dir).map(OutputTemplates::new);
+ static OutputTemplates create(Reporter reporter) {
+ final Path dir = prepareTemplateDir(reporter);
+ return dir != null ? new OutputTemplates(dir) : null;
}
Path templateDir() {
return templateDir;
}
- void delete() throws IOException {
- for (String templateName : TEMPLATE_NAMES) {
- Files.deleteIfExists(templateDir.resolve(templateName));
- }
- Files.delete(templateDir);
- }
-
- private static Path prepareTemplateDir(Reporter errorReporter) {
+ /**
+ * Creates and returns a directory in OS's temps path holding Asciidoctor
+ * templates during conversion.
+ *
+ * @param reporter doclet {@link Reporter}.
+ * @return Path to templates, or null if it could not be created.
+ */
+ private static Path prepareTemplateDir(Reporter reporter) {
// copy our template resources to the templateDir so Asciidoctor can use them.
try {
- Path templateDir = Files.createTempDirectory("asciidoclet");
+ final Path templateDir = Files.createTempDirectory("asciidoclet");
for (String templateName : TEMPLATE_NAMES) {
prepareTemplate(templateDir, templateName);
}
return templateDir;
} catch (IOException e) {
- errorReporter.print(Diagnostic.Kind.WARNING, "Failed to prepare templates: " + e.getLocalizedMessage());
+ reporter.print(Diagnostic.Kind.WARNING, "Failed to prepare templates: " + e.getLocalizedMessage());
return null;
}
}
@@ -80,14 +79,15 @@ private static Path prepareTemplateDir(Reporter errorReporter) {
*/
private static void prepareTemplate(Path templateDir, String template) throws IOException {
final String templatePath = "templates/" + template;
- InputStream input = ModuleLayer.boot().findModule("asciidoclet")
+ final InputStream input = ModuleLayer.boot()
+ .findModule("asciidoclet")
.map(module -> getResourceAsStream(module, templatePath))
.orElseGet(() -> OutputTemplates.class.getClassLoader().getResourceAsStream(templatePath));
if (input == null) {
throw new IOException("Could not find template " + template);
}
- Path path = templateDir.resolve(template);
+ final Path path = templateDir.resolve(template);
try (OutputStream output = Files.newOutputStream(path)) {
input.transferTo(output);
} finally {
diff --git a/src/test/java/org/asciidoctor/asciidoclet/AsciidoctorOptionsFactoryTest.java b/src/test/java/org/asciidoctor/asciidoclet/AsciidoctorOptionsFactoryTest.java
new file mode 100644
index 0000000..cdfdbc7
--- /dev/null
+++ b/src/test/java/org/asciidoctor/asciidoclet/AsciidoctorOptionsFactoryTest.java
@@ -0,0 +1,134 @@
+package org.asciidoctor.asciidoclet;
+
+import org.asciidoctor.Asciidoctor;
+import org.asciidoctor.Options;
+import org.asciidoctor.SafeMode;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.mockito.Mockito;
+
+import java.io.File;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+class AsciidoctorOptionsFactoryTest {
+
+ private Asciidoctor asciidoctor = Asciidoctor.Factory.create();
+ private StubReporter reporter = new StubReporter();
+
+ private AsciidoctorOptionsFactory optionsFactory;
+
+ @BeforeEach
+ void setup() {
+ optionsFactory = new AsciidoctorOptionsFactory(asciidoctor, reporter);
+ }
+
+ @Test
+ void createsDefaultOptions() {
+ DocletOptions docletOptions = new DocletOptions(reporter);
+
+ Options options = optionsFactory.create(docletOptions, null);
+
+ Map optionsMap = options.map();
+ assertContainsDefaultOptions(optionsMap, 3);
+
+ Map attributes = (Map) optionsMap.get("attributes");
+ assertContainsDefaultAttributes(attributes, 11);
+ }
+
+ @Test
+ void withCustomAttributes() {
+ DocletOptions docletOptions = Mockito.mock(DocletOptions.class);
+ Mockito.when(docletOptions.attributes()).thenReturn(List.of("my-attribute=my-value", "another=42"));
+
+ Options options = optionsFactory.create(docletOptions, null);
+
+ Map optionsMap = options.map();
+ assertContainsDefaultOptions(optionsMap, 3);
+ assertThat(optionsMap).hasSize(3);
+
+ Map attributes = (Map) optionsMap.get("attributes");
+ assertContainsDefaultAttributes(attributes, 13);
+ assertThat(attributes)
+ .containsEntry("my-attribute", "my-value")
+ .containsEntry("another", "42");
+ }
+
+ @Test
+ void withCustomBaseDir() {
+ DocletOptions docletOptions = Mockito.mock(DocletOptions.class);
+ File baseDir = new File("some/path");
+ Mockito.when(docletOptions.baseDir()).thenReturn(Optional.of(baseDir));
+
+ Options options = optionsFactory.create(docletOptions, null);
+
+ Map optionsMap = options.map();
+ assertContainsDefaultOptions(optionsMap, 4);
+ assertThat(optionsMap)
+ .containsEntry("base_dir", baseDir.getAbsolutePath());
+
+ Map attributes = (Map) optionsMap.get("attributes");
+ assertContainsDefaultAttributes(attributes, 11);
+ }
+
+ @Test
+ void withTemplateDir() {
+ DocletOptions docletOptions = new DocletOptions(reporter);
+ OutputTemplates outputTemplates = OutputTemplates.create(reporter);
+ assertThat(outputTemplates.templateDir()).isNotEmptyDirectory();
+
+ Options options = optionsFactory.create(docletOptions, outputTemplates);
+
+ Map optionsMap = options.map();
+ assertContainsDefaultOptions(optionsMap, 4);
+ assertThat(optionsMap)
+ .containsEntry("template_dirs", List.of(outputTemplates.templateDir().toString()));
+
+ Map attributes = (Map) optionsMap.get("attributes");
+ assertContainsDefaultAttributes(attributes, 11);
+ }
+
+ @Test
+ void withRequires() {
+ DocletOptions mock = Mockito.mock(DocletOptions.class);
+ // Use gems available in the classpath to avoid errors
+ Mockito.when(mock.requires()).thenReturn(List.of("asciidoctor", "coderay"));
+
+ Options options = optionsFactory.create(mock, null);
+
+ Map optionsMap = options.map();
+ assertContainsDefaultOptions(optionsMap, 3);
+ assertThat(optionsMap).hasSize(3);
+
+ Map attributes = (Map) optionsMap.get("attributes");
+ assertContainsDefaultAttributes(attributes, 11);
+ }
+
+ private static void assertContainsDefaultOptions(Map options, int size) {
+ assertThat(options)
+ .containsEntry("backend", "html5")
+ .containsEntry("safe", SafeMode.SAFE.getLevel())
+ .containsKey("attributes");
+ assertThat(options).hasSize(size);
+ }
+
+ private static void assertContainsDefaultAttributes(Map attributes, int size) {
+ assertThat(attributes)
+ .containsEntry("at", "@")
+ .containsEntry("slash", "/")
+ .containsEntry("icons", null)
+ .containsEntry("idprefix", "")
+ .containsEntry("idseparator", "-")
+ .containsEntry("javadoc", "")
+ .containsEntry("showtitle", true)
+ .containsEntry("source-highlighter", "coderay")
+ .containsEntry("coderay-css", "class")
+ .containsEntry("env-asciidoclet", "")
+ .containsEntry("env", "asciidoclet");
+ assertThat(attributes).hasSize(size);
+ }
+
+}
diff --git a/src/test/java/org/asciidoctor/asciidoclet/DocletOptionsTest.java b/src/test/java/org/asciidoctor/asciidoclet/DocletOptionsTest.java
index e521e74..c3ec080 100644
--- a/src/test/java/org/asciidoctor/asciidoclet/DocletOptionsTest.java
+++ b/src/test/java/org/asciidoctor/asciidoclet/DocletOptionsTest.java
@@ -44,7 +44,7 @@ void testGetBaseDir() {
DocletOptions options = new DocletOptions(reporter);
options.collect(AsciidocletOptions.BASEDIR, List.of("test"));
- options.validateOptions();
+ options.validate();
assertThat(options.baseDir().get().getName()).isEqualTo("test");
}
@@ -56,7 +56,7 @@ void testAttributes() {
DocletOptions options = new DocletOptions(reporter);
options.collect(AsciidocletOptions.ATTRIBUTE, List.of(attribute));
- options.validateOptions();
+ options.validate();
assertThat(options.attributes()).hasSize(1);
assertThat(options.attributes()).first().isEqualTo(attribute);
@@ -69,7 +69,7 @@ void testAttributesLong() {
DocletOptions options = new DocletOptions(reporter);
options.collect(AsciidocletOptions.ATTRIBUTE_LONG, List.of(attribute));
- options.validateOptions();
+ options.validate();
assertThat(options.attributes()).hasSize(1);
assertThat(options.attributes()).first().isEqualTo(attribute);
@@ -87,7 +87,7 @@ void testDefaultEncoding() {
void testEncoding(String encoding, Charset expected) {
DocletOptions options = new DocletOptions(reporter);
options.collect(AsciidocletOptions.ENCODING, List.of(encoding));
- options.validateOptions();
+ options.validate();
assertThat(options.encoding()).isEqualTo(expected);
}
@@ -105,7 +105,7 @@ void testStylesheetFile() {
DocletOptions options = new DocletOptions(reporter);
options.collect(AsciidocletOptions.STYLESHEET, List.of("foo.css"));
- options.validateOptions();
+ options.validate();
assertThat(options.stylesheet().get().getName()).isEqualTo("foo.css");
}
@@ -115,14 +115,14 @@ void testRequires() {
DocletOptions options = new DocletOptions(reporter);
options.collect(AsciidocletOptions.REQUIRE, List.of("foo", "bar"));
- options.validateOptions();
+ options.validate();
assertThat(options.requires()).containsExactlyInAnyOrder("foo", "bar");
options = new DocletOptions(reporter);
options.collect(AsciidocletOptions.REQUIRE, List.of("a", "diagrams/awesome"));
options.collect(AsciidocletOptions.REQUIRE_LONG, List.of("bar"));
options.collect(AsciidocletOptions.REQUIRE_LONG, List.of("baz,noddy"));
- options.validateOptions();
+ options.validate();
assertThat(options.requires()).containsExactlyInAnyOrder("a", "diagrams/awesome", "bar", "baz", "noddy");
}
}