diff --git a/build.gradle b/build.gradle index e37d48f..078ae80 100644 --- a/build.gradle +++ b/build.gradle @@ -33,7 +33,7 @@ ext { } group 'com.ginsberg' -version '1.0.0-SNAPSHOT' +version '1.0.0' sourceCompatibility = 1.8 targetCompatibility = 1.8 @@ -66,6 +66,10 @@ task sourcesJar(type: Jar) { classifier = 'sources' } +task javadocJar(type: Jar) { + from javadoc + classifier = 'javadoc' +} publishing { publications { @@ -75,6 +79,7 @@ publishing { version = project.version from components.java artifact sourcesJar + artifact javadocJar pom { name = 'junit5-system-exit' description = 'A JUnit5 Extension to help write tests that call System.exit()' @@ -123,6 +128,12 @@ publishing { } } +javadoc { + if(JavaVersion.current().isJava9Compatible()) { + options.addBooleanOption('html4', true) + } +} + signing { sign publishing.publications.mavenJava } diff --git a/src/main/java/com/ginsberg/junit/exit/DisallowExitSecurityManager.java b/src/main/java/com/ginsberg/junit/exit/DisallowExitSecurityManager.java index 651a85d..63ca24a 100644 --- a/src/main/java/com/ginsberg/junit/exit/DisallowExitSecurityManager.java +++ b/src/main/java/com/ginsberg/junit/exit/DisallowExitSecurityManager.java @@ -28,6 +28,11 @@ import java.net.InetAddress; import java.security.Permission; +/** + * This is a SecurityManager that will prevent the system from exiting. If that happens, it will + * record the status code that was attempted. All other actions are delegated to another SecurityManager, + * optionally provided at construction. + */ public class DisallowExitSecurityManager extends SecurityManager { private final SecurityManager delegatedSecurityManager; private Integer firstExitStatusCode; diff --git a/src/main/java/com/ginsberg/junit/exit/ExpectSystemExit.java b/src/main/java/com/ginsberg/junit/exit/ExpectSystemExit.java index 1f4f6df..e853341 100644 --- a/src/main/java/com/ginsberg/junit/exit/ExpectSystemExit.java +++ b/src/main/java/com/ginsberg/junit/exit/ExpectSystemExit.java @@ -31,6 +31,10 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; +/** + * This is a marker annotation that indicates the given test method or class is expected + * to call System.exit() + */ @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.TYPE, ElementType.METHOD, ElementType.ANNOTATION_TYPE}) @ExtendWith(SystemExitExtension.class) diff --git a/src/main/java/com/ginsberg/junit/exit/ExpectSystemExitWithStatus.java b/src/main/java/com/ginsberg/junit/exit/ExpectSystemExitWithStatus.java index 8e56061..170e0fa 100644 --- a/src/main/java/com/ginsberg/junit/exit/ExpectSystemExitWithStatus.java +++ b/src/main/java/com/ginsberg/junit/exit/ExpectSystemExitWithStatus.java @@ -31,6 +31,10 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; +/** + * This is a marker annotation that indicates the given test method or class is expected + * to call System.exit() with a specific code + */ @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.TYPE, ElementType.METHOD, ElementType.ANNOTATION_TYPE}) @ExtendWith(SystemExitExtension.class) diff --git a/src/main/java/com/ginsberg/junit/exit/SystemExitExtension.java b/src/main/java/com/ginsberg/junit/exit/SystemExitExtension.java index 9cdfe28..89c0788 100644 --- a/src/main/java/com/ginsberg/junit/exit/SystemExitExtension.java +++ b/src/main/java/com/ginsberg/junit/exit/SystemExitExtension.java @@ -35,6 +35,10 @@ import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.platform.commons.support.AnnotationSupport.findAnnotation; +/** + * Does the work of installing the DisallowExitSecurityManager, interpreting the test results, and + * returning the original SecurityManager to service. + */ public class SystemExitExtension implements BeforeEachCallback, AfterEachCallback, TestExecutionExceptionHandler { private Integer expectedStatusCode; private final DisallowExitSecurityManager disallowExitSecurityManager = new DisallowExitSecurityManager(System.getSecurityManager());