diff --git a/.appveyor.yml b/.appveyor.yml
new file mode 100644
index 000000000000..6a60dd0d298b
--- /dev/null
+++ b/.appveyor.yml
@@ -0,0 +1,10 @@
+build: off
+
+install:
+ - cinst jdk9 -params 'installdir=C:\\jdk9'
+ - SET JAVA_HOME=C:\jdk9
+ - SET PATH=C:\jdk9\bin;%PATH%
+
+test_script:
+ - gradlew -version
+ - gradlew build --stacktrace
diff --git a/.travis.yml b/.travis.yml
index b9fcf0602e3d..ad5c8e932108 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,4 +1,6 @@
language: java
+jdk: oraclejdk9
+
sudo: false
dist: trusty
@@ -7,14 +9,6 @@ branches:
except:
- /^r\d.*$/
-env:
- - _JAVA_OPTIONS='-Xmx500m'
-
-matrix:
- include:
- - jdk: oraclejdk8 # JDK 1.8.0_131-b11 or newer
- - jdk: oraclejdk9 # JDK 9+175 or newer
-
# Don't let Travis CI execute './gradlew assemble' by default
install:
# Display Gradle, Groovy, JVM and other versions
diff --git a/Jenkinsfile b/Jenkinsfile
index b11734841613..bcdbf9c76c0e 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -29,9 +29,6 @@ pipeline {
}
}
stage('Aggregate Javadoc') {
- tools {
- jdk 'Oracle JDK 8 (latest)' // Use JDK 8 because of custom stylesheet
- }
steps {
sh './gradlew --no-daemon aggregateJavadocs'
}
@@ -46,9 +43,6 @@ pipeline {
}
}
stage('Generate User Guide') {
- tools {
- jdk 'Oracle JDK 8 (latest)' // Use JDK 8 because AsciiDoctor has problems on JDK 9
- }
steps {
sh './gradlew --no-daemon asciidoctor'
}
diff --git a/build.gradle b/build.gradle
index 5c3c9332ca07..a152c4c07de0 100644
--- a/build.gradle
+++ b/build.gradle
@@ -126,13 +126,14 @@ allprojects { subproj ->
}
tasks.withType(JavaCompile) {
- sourceCompatibility = rootProject.sourceCompatibility
- targetCompatibility = rootProject.targetCompatibility
+ sourceCompatibility = rootProject.javacRelease // needed by clover
+ targetCompatibility = rootProject.javacRelease // needed by clover/asm
options.encoding = 'UTF-8'
}
- // See: http://docs.oracle.com/javase/8/docs/technotes/tools/windows/javac.html#BHCJCABJ
+ // See: https://docs.oracle.com/javase/9/tools/javac.htm#JSWOR627
compileJava.options*.compilerArgs = [
+ '--release', rootProject.javacRelease,
'-Xlint:cast',
'-Xlint:classfile',
'-Xlint:deprecation',
@@ -154,8 +155,9 @@ allprojects { subproj ->
'-Werror'
]
- // See: http://docs.oracle.com/javase/8/docs/technotes/tools/windows/javac.html#BHCJCABJ
+ // See: https://docs.oracle.com/javase/9/tools/javac.htm#JSWOR627
compileTestJava.options*.compilerArgs = [
+ '--release', rootProject.javacRelease,
'-Xlint:cast',
'-Xlint:classfile',
'-Xlint:deprecation',
@@ -218,6 +220,7 @@ allprojects { subproj ->
initstring: cloverInitstring,
recordTestResults: false,
destdir: instrumentedJavaSourcesDir,
+ encoding: 'UTF-8',
source: compileJava.sourceCompatibility) {
sourceSets.main.allJava.addToAntBuilder(ant, 'fileset', FileCollection.AntType.FileSet)
}
diff --git a/documentation/documentation.gradle b/documentation/documentation.gradle
index b09f67a1ae63..37c88f1ae66c 100644
--- a/documentation/documentation.gradle
+++ b/documentation/documentation.gradle
@@ -80,7 +80,7 @@ asciidoctor {
separateOutputDirs false
sources { include 'index.adoc' }
- backends 'html5', 'pdf' // , 'epub3'
+ backends 'html5' // , 'pdf' // , 'epub3'
attributes 'jupiter-version': project.property('version'),
'platform-version': project.property('platformVersion'),
diff --git a/gradle.properties b/gradle.properties
index 942fbae0f800..c5a53f5a5584 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -7,8 +7,11 @@ platformVersion = 1.1.0-SNAPSHOT
vintageGroup = org.junit.vintage
vintageVersion = 4.12.2-SNAPSHOT
-sourceCompatibility = 1.8
-targetCompatibility = 1.8
+# --release release
+# Compiles against the public, supported and documented API for a specific VM version.
+# Supported release targets are 6, 7, 8, and 9.
+# Note that if --release is added then -target and -source are ignored.
+javacRelease = 8
apiGuardianVersion = 1.0.0
assertJVersion = 3.8.0
diff --git a/junit-jupiter-api/src/main/java/org/junit/jupiter/api/RepeatedTest.java b/junit-jupiter-api/src/main/java/org/junit/jupiter/api/RepeatedTest.java
index 818a327cf049..d9b7042968ed 100644
--- a/junit-jupiter-api/src/main/java/org/junit/jupiter/api/RepeatedTest.java
+++ b/junit-jupiter-api/src/main/java/org/junit/jupiter/api/RepeatedTest.java
@@ -76,7 +76,7 @@
String TOTAL_REPETITIONS_PLACEHOLDER = "{totalRepetitions}";
/**
- * Short display name pattern for a repeated test: {@value #SHORT_DISPLAY_NAME}
+ * Short display name pattern for a repeated test: {@value}
*
* @see #CURRENT_REPETITION_PLACEHOLDER
* @see #TOTAL_REPETITIONS_PLACEHOLDER
@@ -85,7 +85,7 @@
String SHORT_DISPLAY_NAME = "repetition " + CURRENT_REPETITION_PLACEHOLDER + " of " + TOTAL_REPETITIONS_PLACEHOLDER;
/**
- * Long display name pattern for a repeated test: {@value #LONG_DISPLAY_NAME}
+ * Long display name pattern for a repeated test: {@value}
*
* @see #DISPLAY_NAME_PLACEHOLDER
* @see #SHORT_DISPLAY_NAME
diff --git a/junit-platform-engine/src/main/java/org/junit/platform/engine/discovery/ClassNameFilter.java b/junit-platform-engine/src/main/java/org/junit/platform/engine/discovery/ClassNameFilter.java
index ae0b7e5a2b47..a540e27d27af 100644
--- a/junit-platform-engine/src/main/java/org/junit/platform/engine/discovery/ClassNameFilter.java
+++ b/junit-platform-engine/src/main/java/org/junit/platform/engine/discovery/ClassNameFilter.java
@@ -27,8 +27,9 @@ public interface ClassNameFilter extends DiscoveryFilter {
/**
* Standard include pattern in the form of a regular expression that is
* used to match against fully qualified class names:
- * {@value #STANDARD_INCLUDE_PATTERN} which matches against class names
- * ending in {@code Test} or {@code Tests} (in any package).
+ * {@value org.junit.platform.engine.discovery.ClassNameFilter#STANDARD_INCLUDE_PATTERN}
+ * which matches against class names ending in {@code Test} or
+ * {@code Tests} (in any package).
*/
String STANDARD_INCLUDE_PATTERN = "^.*Tests?$";
diff --git a/src/javadoc/stylesheet.css b/src/javadoc/stylesheet.css
index 9748ed9d7dc7..dba94d58fee0 100644
--- a/src/javadoc/stylesheet.css
+++ b/src/javadoc/stylesheet.css
@@ -6,21 +6,38 @@ body {
font-family:'Open Sans', Arial, Helvetica, sans-serif;
font-size:14px;
margin:0;
+ padding:0;
+ height:100%;
+ width:100%;
+}
+iframe {
+ margin:0;
+ padding:0;
+ height:100%;
+ width:100%;
+ overflow-y:scroll;
+ border:none;
}
-a:link, a:visited, a:active {
+a:link, a:visited {
text-decoration:none;
color:#dc524a;
}
-a:hover, a:focus {
- text-decoration:underline;
+a[href]:hover, a[href]:focus {
+ text-decoration:none;
color:#b62b23;
}
a[name] {
color:#353833;
}
-a[name]:hover {
- text-decoration:none;
- color:#353833;
+a[name]:before, a[name]:target, a[id]:before, a[id]:target {
+ content:"";
+ display:inline-block;
+ position:relative;
+ padding-top:129px;
+ margin-top:-129px;
+}
+.searchTagResult:before, .searchTagResult:target {
+ color:red;
}
pre {
font-family:"Fira Mono", monospace;
@@ -114,6 +131,15 @@ Navigation bar styles
font-size:14px;
margin:0;
}
+.navPadding {
+ padding-top: 107px;
+}
+.fixedNav {
+ position:fixed;
+ width:100%;
+ z-index:999;
+ background-color:#ffffff;
+}
.topNav {
background-color:#25a162;
color:#FFFFFF;
@@ -163,7 +189,22 @@ ul.navList li{
padding: 5px 6px;
text-transform:uppercase;
}
-ul.subNavList li{
+ul.navListSearch {
+ float:right;
+ margin:0 0 0 0;
+ padding:0;
+}
+ul.navListSearch li {
+ list-style:none;
+ float:right;
+ padding: 5px 6px;
+ text-transform:uppercase;
+}
+ul.navListSearch li span {
+ position:relative;
+ right:-16px;
+}
+ul.subNavList li {
list-style:none;
float:left;
}
@@ -196,20 +237,23 @@ Page header and footer styles
margin:0 20px;
padding:5px 0 0 0;
}
-.header h2 {
-
-}
-.indexHeader {
- margin:10px;
+.indexNav {
position:relative;
}
-.indexHeader span{
- margin-right:15px;
+.indexNav ul {
+ margin-top:0;
+ padding:10px;
+}
+.indexNav ul li {
+ display:inline;
+ list-style-type:none;
+ padding-right:10px;
}
-.indexHeader h1 {
+.indexNav h1 {
font-size:13px;
}
.title {
+ color:#2c4557;
margin:10px 0;
font-size: 32px;
}
@@ -263,6 +307,7 @@ Page layout container styles
}
.indexContainer h2 {
font-size:16px;
+ padding:0 0 3px 0;
}
.indexContainer ul {
margin:0;
@@ -295,6 +340,9 @@ Page layout container styles
/*
List styles
*/
+li.circle {
+ list-style:circle;
+}
ul.horizontal li {
display:inline;
font-size:0.9em;
@@ -349,17 +397,20 @@ table tr td dl, table tr td dl dt, table tr td dl dd {
/*
Table styles
*/
-.overviewSummary, .memberSummary, .typeSummary, .useSummary, .constantsSummary, .deprecatedSummary {
+.overviewSummary, .memberSummary, .typeSummary, .useSummary, .constantsSummary, .deprecatedSummary,
+.requiresSummary, .packagesSummary, .providesSummary, .usesSummary {
width:100%;
+ border-spacing:0;
border-left:1px solid #EEE;
border-right:1px solid #EEE;
border-bottom:1px solid #EEE;
}
-.overviewSummary, .memberSummary {
+.overviewSummary, .memberSummary, .requiresSummary, .packagesSummary, .providesSummary, .usesSummary {
padding:0px;
}
.overviewSummary caption, .memberSummary caption, .typeSummary caption,
-.useSummary caption, .constantsSummary caption, .deprecatedSummary caption {
+.useSummary caption, .constantsSummary caption, .deprecatedSummary caption,
+.requiresSummary caption, .packagesSummary caption, .providesSummary caption, .usesSummary caption {
position:relative;
text-align:left;
background-repeat:no-repeat;
@@ -375,16 +426,26 @@ Table styles
}
.overviewSummary caption a:link, .memberSummary caption a:link, .typeSummary caption a:link,
.useSummary caption a:link, .constantsSummary caption a:link, .deprecatedSummary caption a:link,
+.requiresSummary caption a:link, .packagesSummary caption a:link, providesSummary caption a:link,
+.usesSummary caption a:link,
.overviewSummary caption a:hover, .memberSummary caption a:hover, .typeSummary caption a:hover,
.useSummary caption a:hover, .constantsSummary caption a:hover, .deprecatedSummary caption a:hover,
+.requiresSummary caption a:hover, .packagesSummary caption a:hover, providesSummary caption a:hover,
+.usesSummary caption a:hover,
.overviewSummary caption a:active, .memberSummary caption a:active, .typeSummary caption a:active,
.useSummary caption a:active, .constantsSummary caption a:active, .deprecatedSummary caption a:active,
+.requiresSummary caption a:active, .packagesSummary caption a:active, providesSummary caption a:active,
+.usesSummary caption a:active,
.overviewSummary caption a:visited, .memberSummary caption a:visited, .typeSummary caption a:visited,
-.useSummary caption a:visited, .constantsSummary caption a:visited, .deprecatedSummary caption a:visited {
+.useSummary caption a:visited, .constantsSummary caption a:visited, .deprecatedSummary caption a:visited
+.requiresSummary caption a:visited, .packagesSummary caption a:visited, providesSummary caption a:visited,
+.usesSummary caption a:visited {
color:#FFFFFF;
}
.overviewSummary caption span, .memberSummary caption span, .typeSummary caption span,
-.useSummary caption span, .constantsSummary caption span, .deprecatedSummary caption span {
+.useSummary caption span, .constantsSummary caption span, .deprecatedSummary caption span,
+.requiresSummary caption span, .packagesSummary caption span, .providesSummary caption span,
+.usesSummary caption span {
white-space:nowrap;
padding-top:5px;
padding-left:12px;
@@ -397,7 +458,7 @@ Table styles
border: none;
height:16px;
}
-.memberSummary caption span.activeTableTab span {
+.memberSummary caption span.activeTableTab span, .packagesSummary caption span.activeTableTab span {
white-space:nowrap;
padding-top:5px;
padding-left:12px;
@@ -409,7 +470,7 @@ Table styles
color:#fff;
height:16px;
}
-.memberSummary caption span.tableTab span {
+.memberSummary caption span.tableTab span, .packagesSummary caption span.tableTab span {
white-space:nowrap;
padding-top:5px;
padding-left:12px;
@@ -420,7 +481,8 @@ Table styles
background-color:#aaa;
height:16px;
}
-.memberSummary caption span.tableTab, .memberSummary caption span.activeTableTab {
+.memberSummary caption span.tableTab, .memberSummary caption span.activeTableTab,
+.packagesSummary caption span.tableTab, .packagesSummary caption span.activeTableTab {
padding-top:0px;
padding-left:0px;
padding-right:0px;
@@ -429,14 +491,15 @@ Table styles
display:inline;
}
.overviewSummary .tabEnd, .memberSummary .tabEnd, .typeSummary .tabEnd,
-.useSummary .tabEnd, .constantsSummary .tabEnd, .deprecatedSummary .tabEnd {
+.useSummary .tabEnd, .constantsSummary .tabEnd, .deprecatedSummary .tabEnd,
+.requiresSummary .tabEnd, .packagesSummary .tabEnd, .providesSummary .tabEnd, .usesSummary .tabEnd {
display:none;
width:5px;
position:relative;
float:left;
background-color:#dc524a;
}
-.memberSummary .activeTableTab .tabEnd {
+.memberSummary .activeTableTab .tabEnd, .packagesSummary .activeTableTab .tabEnd {
display:none;
width:5px;
margin-right:3px;
@@ -444,7 +507,7 @@ Table styles
float:left;
background-color:#dc524a;
}
-.memberSummary .tableTab .tabEnd {
+.memberSummary .tableTab .tabEnd, .packagesSummary .tableTab .tabEnd {
display:none;
width:5px;
margin-right:3px;
@@ -454,42 +517,59 @@ Table styles
}
.overviewSummary td, .memberSummary td, .typeSummary td,
-.useSummary td, .constantsSummary td, .deprecatedSummary td {
+.useSummary td, .constantsSummary td, .deprecatedSummary td,
+.requiresSummary td, .packagesSummary td, .providesSummary td, .usesSummary td {
text-align:left;
padding:0px 0px 12px 10px;
}
-th.colOne, th.colFirst, th.colLast, .useSummary th, .constantsSummary th,
-td.colOne, td.colFirst, td.colLast, .useSummary td, .constantsSummary td{
+th.colFirst, th.colSecond, th.colLast, th.colConstructorName, .useSummary th, .constantsSummary th, .packagesSummary th,
+td.colFirst, td.colSecond, td.colLast, .useSummary td, .constantsSummary td {
vertical-align:top;
padding-right:0px;
padding-top:8px;
padding-bottom:3px;
}
-th.colFirst, th.colLast, th.colOne, .constantsSummary th {
+th.colFirst, th.colSecond, th.colLast, th.colConstructorName, .constantsSummary th, .packagesSummary th {
background:#ddd;
text-align:left;
padding: 8px 3px 6px 10px;
}
td.colFirst, th.colFirst {
white-space:nowrap;
+ font-size:13px;
+}
+td.colSecond, th.colSecond, td.colLast, th.colConstructorName, th.colLast {
+ font-size:13px;
+}
+.constantsSummary th, .packagesSummary th {
+ font-size:13px;
+}
+.providesSummary th.colFirst, .providesSummary th.colLast, .providesSummary td.colFirst,
+.providesSummary td.colLast {
+ white-space:normal;
+ font-size:13px;
}
.overviewSummary td.colFirst, .overviewSummary th.colFirst,
-.useSummary td.colFirst, .useSummary th.colFirst,
-.overviewSummary td.colOne, .overviewSummary th.colOne,
+.requiresSummary td.colFirst, .requiresSummary th.colFirst,
+.packagesSummary td.colFirst, .packagesSummary td.colSecond, .packagesSummary th.colFirst, .packagesSummary th,
+.usesSummary td.colFirst, .usesSummary th.colFirst,
+.providesSummary td.colFirst, .providesSummary th.colFirst,
.memberSummary td.colFirst, .memberSummary th.colFirst,
-.memberSummary td.colOne, .memberSummary th.colOne,
-.typeSummary td.colFirst{
- width:25%;
+.memberSummary td.colSecond, .memberSummary th.colSecond, .memberSummary th.colConstructorName,
+.typeSummary td.colFirst {
vertical-align:top;
}
+.packagesSummary th.colLast, .packagesSummary td.colLast {
+ white-space:normal;
+}
.tableSubHeadingColor {
- background-color:#eee;
+ background-color:#EEEEFF;
}
-.altColor {
- background-color:#fff;
+.altColor, .altColor th {
+ background-color:#FFFFFF;
}
-.rowColor {
- background-color:#eee;
+.rowColor, .rowColor th {
+ background-color:#EEEEEF;
}
/*
Content styles
@@ -536,12 +616,13 @@ h1.hidden {
}
.block {
display:block;
- margin:3px 10px 2px 0px;
+ margin:0 10px 5px 0px;
color:#474747;
}
-.deprecatedLabel, .descfrmTypeLabel, .memberNameLabel, .memberNameLink,
-.overrideSpecifyLabel, .packageHierarchyLabel, .paramLabel, .returnLabel,
-.seeLabel, .simpleTagLabel, .throwsLabel, .typeNameLabel, .typeNameLink {
+.deprecatedLabel, .descfrmTypeLabel, .implementationLabel, .memberNameLabel, .memberNameLink,
+.moduleLabelInPackage, .moduleLabelInType, .overrideSpecifyLabel, .packageLabelInType,
+.packageHierarchyLabel, .paramLabel, .returnLabel, .seeLabel, .simpleTagLabel,
+.throwsLabel, .typeNameLabel, .typeNameLink, .searchTagLink {
font-weight:bold;
}
.deprecationComment, .emphasizedPhrase, .interfaceName {
@@ -553,9 +634,135 @@ div.block div.block span.interfaceName {
font-style:normal;
}
-div.contentContainer ul.blockList li.blockList h2{
+div.contentContainer ul.blockList li.blockList h2 {
padding-bottom:0px;
}
+/*
+IFRAME specific styles
+*/
+.mainContainer {
+ margin:0 auto;
+ padding:0;
+ height:100%;
+ width:100%;
+ position:fixed;
+ top:0;
+ left:0;
+}
+.leftContainer {
+ height:100%;
+ position:fixed;
+ width:320px;
+}
+.leftTop {
+ position:relative;
+ float:left;
+ width:315px;
+ top:0;
+ left:0;
+ height:30%;
+ border-right:6px solid #ccc;
+ border-bottom:6px solid #ccc;
+}
+.leftBottom {
+ position:relative;
+ float:left;
+ width:315px;
+ bottom:0;
+ left:0;
+ height:70%;
+ border-right:6px solid #ccc;
+ border-top:1px solid #000;
+}
+.rightContainer {
+ position:absolute;
+ left:320px;
+ top:0;
+ bottom:0;
+ height:100%;
+ right:0;
+ border-left:1px solid #000;
+}
+.rightIframe {
+ margin:0;
+ padding:0;
+ height:100%;
+ right:30px;
+ width:100%;
+ overflow:visible;
+ margin-bottom:30px;
+}
+/*
+HTML5 specific styles
+*/
+main, nav, header, footer, section {
+ display:block;
+}
+.ui-widget {
+ font-family:'Open Sans', Arial, Helvetica, sans-serif !important;
+}
+.ui-autocomplete-category {
+ font-weight:bold;
+ font-size:14px;
+ padding:7px 0 7px 3px;
+ background-color:#aaa;
+ color:#FFFFFF;
+}
+.resultItem {
+ font-size:13px;
+}
+.ui-autocomplete {
+ max-height:85%;
+ max-width:65%;
+ overflow-y:scroll;
+ overflow-x:scroll;
+ white-space:nowrap;
+ box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23);
+}
+ul.ui-autocomplete {
+ position:fixed;
+ z-index:999999;
+}
+ul.ui-autocomplete li {
+ float:left;
+ clear:both;
+ width:100%;
+}
+.resultHighlight {
+ font-weight:bold;
+}
+#search {
+ background-image:url('resources/glass.png');
+ background-size:13px;
+ background-repeat:no-repeat;
+ background-position:2px 3px;
+ padding-left:20px;
+ position:relative;
+ right:-18px;
+}
+#reset {
+ background-color: rgb(255,255,255);
+ border:0 none;
+ width:16px;
+ height:17px;
+ position:relative;
+ left:-2px;
+ background-image:url('resources/x.png');
+ background-repeat:no-repeat;
+ background-size:12px;
+ background-position:center;
+}
+.watermark {
+ color:#888;
+}
+.searchTagDescResult {
+ font-style:italic;
+ font-size:11px;
+}
+.searchTagHolderResult {
+ font-style:italic;
+ font-size:12px;
+}
hr {
border: 1px solid #eee;