From bc7eef010425c02fc508a243141831de316f7ac9 Mon Sep 17 00:00:00 2001 From: Christian Stein Date: Mon, 9 Oct 2017 09:59:32 +0200 Subject: [PATCH] Build with JDK-9 only (#1097) * Use --release 8 option from JDK 9 javac * Remove matrix and special java options from Travis CI The JUnit 5 build requires JDK-9 or higher. The JUnit 5 runtime environment needs to be Java 8 or higher. Travis CI now sets "-Xmx" by default. * Switch Javadoc step to use JDK 9 * Switch AsciiDoc step to use JDK 9 w/o PDF backend See https://github.com/jruby/jruby/issues/4805 * Fix Clover instrumentation * Add custom AppVeyor script to install JDK-9 * Add JDK9-compatible Javadoc stylesheet * Fix Javadoc @value tag usages --- .appveyor.yml | 10 + .travis.yml | 10 +- Jenkinsfile | 6 - build.gradle | 11 +- documentation/documentation.gradle | 2 +- gradle.properties | 7 +- .../org/junit/jupiter/api/RepeatedTest.java | 4 +- .../engine/discovery/ClassNameFilter.java | 5 +- src/javadoc/stylesheet.css | 297 +++++++++++++++--- 9 files changed, 282 insertions(+), 70 deletions(-) create mode 100644 .appveyor.yml 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;