Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bump versions of JS UI plugins to latest version #571

Merged
merged 9 commits into from
May 5, 2022

Conversation

uhafner
Copy link
Member

@uhafner uhafner commented Jul 10, 2021

Replacements:

  • Bootstrap4 -> replaced by Boostrap5 (5.0.1-2)
  • Popper -> replaced by Popper2 (2.5.4-2)

Version upgrade:

  • Echarts -> 5.1.2-2

Plugin new in BOM:

  • Datatables -> 1.10.25-1
  • Make sure you are opening from a topic/feature/bugfix branch (right side) and not your main branch!
  • Ensure that the pull request title represents the desired changelog entry
  • Please describe what you did
  • Link to relevant issues in GitHub or Jira
  • Link to relevant pull requests, esp. upstream and downstream changes
  • Ensure you have provided tests - that demonstrates feature works or fixes the issue

Replacements:
- Bootstrap4 -> replaced by Boostrap5 (5.0.1-2)
- Popper -> replaced by Popper2 (2.5.4-2)
Version upgrade:
- Echarts -> 5.1.2-2
Plugin new in BOM:
- Datatables -> 1.10.25-1
@timja
Copy link
Member

timja commented Jul 31, 2021

I don't think we can add this till we remove 2.235 which we could probably do?

Any plugins added need to be available on all lines

@timja timja marked this pull request as ready for review July 31, 2021 21:11
@timja timja added the dependencies Pull requests that update a dependency file label Jul 31, 2021
@timja timja enabled auto-merge (squash) July 31, 2021 21:11
@jtnord
Copy link
Member

jtnord commented Aug 5, 2021

junit depends on bootstrap4 and ehcharts.
ehcharts now depends on bootstrap5

Now we have something with both bootstrap 4 and 5 in the mix (seems like a recepie for disaster)

junit PCT (hudson.tasks.junit.JUnitResultArchiverTest.basic) fails with:

======= EXCEPTION START ========
Exception class=[net.sourceforge.htmlunit.corejs.javascript.EvaluatorException]
com.gargoylesoftware.htmlunit.ScriptException: missing ( before function parameters. (http://localhost:35397/jenkins/static/b1fa5bf6/plugin/echarts-api/js/chart-configuration.js#35)
	at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$HtmlUnitContextAction.run(JavaScriptEngine.java:891)
	at net.sourceforge.htmlunit.corejs.javascript.Context.call(Context.java:619)
	at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.call(ContextFactory.java:537)
	at com.gargoylesoftware.htmlunit.javascript.HtmlUnitContextFactory.callSecured(HtmlUnitContextFactory.java:354)
	at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.compile(JavaScriptEngine.java:722)
	at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.compile(JavaScriptEngine.java:688)
	at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.compile(JavaScriptEngine.java:103)
	at com.gargoylesoftware.htmlunit.html.HtmlPage.loadJavaScriptFromUrl(HtmlPage.java:1123)
	at com.gargoylesoftware.htmlunit.html.HtmlPage.loadExternalJavaScriptFile(HtmlPage.java:1003)
	at com.gargoylesoftware.htmlunit.html.HtmlScript.executeScriptIfNeeded(HtmlScript.java:361)
	at com.gargoylesoftware.htmlunit.html.HtmlScript$2.execute(HtmlScript.java:234)
	at com.gargoylesoftware.htmlunit.html.HtmlScript.onAllChildrenAddedToPage(HtmlScript.java:256)
	at com.gargoylesoftware.htmlunit.html.parser.neko.HtmlUnitNekoDOMBuilder.endElement(HtmlUnitNekoDOMBuilder.java:560)
	at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source)
	at com.gargoylesoftware.htmlunit.html.parser.neko.HtmlUnitNekoDOMBuilder.endElement(HtmlUnitNekoDOMBuilder.java:514)
	at net.sourceforge.htmlunit.cyberneko.HTMLTagBalancer.callEndElement(HTMLTagBalancer.java:1192)
	at net.sourceforge.htmlunit.cyberneko.HTMLTagBalancer.endElement(HTMLTagBalancer.java:1132)
	at net.sourceforge.htmlunit.cyberneko.filters.DefaultFilter.endElement(DefaultFilter.java:219)
	at net.sourceforge.htmlunit.cyberneko.filters.NamespaceBinder.endElement(NamespaceBinder.java:312)
	at net.sourceforge.htmlunit.cyberneko.HTMLScanner$ContentScanner.scanEndElement(HTMLScanner.java:3189)
	at net.sourceforge.htmlunit.cyberneko.HTMLScanner$ContentScanner.scan(HTMLScanner.java:2114)
	at net.sourceforge.htmlunit.cyberneko.HTMLScanner.scanDocument(HTMLScanner.java:937)
	at net.sourceforge.htmlunit.cyberneko.HTMLConfiguration.parse(HTMLConfiguration.java:443)
	at net.sourceforge.htmlunit.cyberneko.HTMLConfiguration.parse(HTMLConfiguration.java:394)
	at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
	at com.gargoylesoftware.htmlunit.html.parser.neko.HtmlUnitNekoDOMBuilder.parse(HtmlUnitNekoDOMBuilder.java:760)
	at com.gargoylesoftware.htmlunit.html.parser.neko.HtmlUnitNekoHtmlParser.parse(HtmlUnitNekoHtmlParser.java:236)
	at com.gargoylesoftware.htmlunit.html.parser.neko.HtmlUnitNekoHtmlParser.parseHtml(HtmlUnitNekoHtmlParser.java:179)
	at com.gargoylesoftware.htmlunit.DefaultPageCreator.createHtmlPage(DefaultPageCreator.java:280)
	at com.gargoylesoftware.htmlunit.DefaultPageCreator.createPage(DefaultPageCreator.java:163)
	at org.jvnet.hudson.test.HudsonPageCreator.createPage(HudsonPageCreator.java:54)
	at com.gargoylesoftware.htmlunit.WebClient.loadWebResponseInto(WebClient.java:638)
	at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:451)
	at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:368)
	at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:520)
	at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:501)
	at org.jvnet.hudson.test.JenkinsRule$WebClient.goTo(JenkinsRule.java:2602)
	at org.jvnet.hudson.test.JenkinsRule$WebClient.goTo(JenkinsRule.java:2582)
	at org.jvnet.hudson.test.JenkinsRule$WebClient.getPage(JenkinsRule.java:2538)
	at org.jvnet.hudson.test.JenkinsRule$WebClient.getPage(JenkinsRule.java:2534)
	at hudson.tasks.junit.JUnitResultArchiverTest.basic(JUnitResultArchiverTest.java:110)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
	at org.jvnet.hudson.test.JenkinsRule$1.evaluate(JenkinsRule.java:601)
	at org.junit.internal.runners.statements.FailOnTimeout$CallableStatement.call(FailOnTimeout.java:299)
	at org.junit.internal.runners.statements.FailOnTimeout$CallableStatement.call(FailOnTimeout.java:293)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.lang.Thread.run(Thread.java:748)
Caused by: net.sourceforge.htmlunit.corejs.javascript.EvaluatorException: missing ( before function parameters. (http://localhost:35397/jenkins/static/b1fa5bf6/plugin/echarts-api/js/chart-configuration.js#35)
	at com.gargoylesoftware.htmlunit.javascript.HtmlUnitContextFactory$HtmlUnitErrorReporter.error(HtmlUnitContextFactory.java:438)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.addError(Parser.java:258)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.reportError(Parser.java:326)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.reportError(Parser.java:320)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.mustMatchToken(Parser.java:491)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.mustMatchToken(Parser.java:481)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.function(Parser.java:921)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.function(Parser.java:880)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.methodDefinition(Parser.java:3748)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.objectLiteral(Parser.java:3634)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.primaryExpr(Parser.java:3151)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.memberExpr(Parser.java:2775)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.unaryExpr(Parser.java:2669)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.mulExpr(Parser.java:2590)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.addExpr(Parser.java:2574)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.shiftExpr(Parser.java:2555)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.relExpr(Parser.java:2530)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.eqExpr(Parser.java:2502)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.bitAndExpr(Parser.java:2491)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.bitXorExpr(Parser.java:2480)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.bitOrExpr(Parser.java:2469)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.andExpr(Parser.java:2458)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.orExpr(Parser.java:2447)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.condExpr(Parser.java:2411)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.assignExpr(Parser.java:2367)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.expr(Parser.java:2346)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.returnOrYield(Parser.java:1962)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.statementHelper(Parser.java:1244)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.statement(Parser.java:1141)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.parseFunctionBody(Parser.java:766)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.function(Parser.java:948)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.function(Parser.java:880)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.primaryExpr(Parser.java:3143)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.memberExpr(Parser.java:2775)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.unaryExpr(Parser.java:2669)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.mulExpr(Parser.java:2590)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.addExpr(Parser.java:2574)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.shiftExpr(Parser.java:2555)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.relExpr(Parser.java:2530)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.eqExpr(Parser.java:2502)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.bitAndExpr(Parser.java:2491)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.bitXorExpr(Parser.java:2480)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.bitOrExpr(Parser.java:2469)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.andExpr(Parser.java:2458)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.orExpr(Parser.java:2447)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.condExpr(Parser.java:2411)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.assignExpr(Parser.java:2367)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.assignExpr(Parser.java:2390)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.expr(Parser.java:2346)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.nameOrLabel(Parser.java:2095)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.statementHelper(Parser.java:1277)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.statement(Parser.java:1141)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.parse(Parser.java:662)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.parse(Parser.java:581)
	at net.sourceforge.htmlunit.corejs.javascript.Context.parse(Context.java:2598)
	at net.sourceforge.htmlunit.corejs.javascript.Context.compileImpl(Context.java:2547)
	at net.sourceforge.htmlunit.corejs.javascript.Context.compileString(Context.java:1551)
	at com.gargoylesoftware.htmlunit.javascript.HtmlUnitContextFactory$TimeoutContext.compileString(HtmlUnitContextFactory.java:224)
	at net.sourceforge.htmlunit.corejs.javascript.Context.compileString(Context.java:1540)
	at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$1.doRun(JavaScriptEngine.java:713)
	at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$HtmlUnitContextAction.run(JavaScriptEngine.java:876)
	... 54 more
Enclosed exception: 
net.sourceforge.htmlunit.corejs.javascript.EvaluatorException: missing ( before function parameters. (http://localhost:35397/jenkins/static/b1fa5bf6/plugin/echarts-api/js/chart-configuration.js#35)
	at com.gargoylesoftware.htmlunit.javascript.HtmlUnitContextFactory$HtmlUnitErrorReporter.error(HtmlUnitContextFactory.java:438)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.addError(Parser.java:258)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.reportError(Parser.java:326)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.reportError(Parser.java:320)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.mustMatchToken(Parser.java:491)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.mustMatchToken(Parser.java:481)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.function(Parser.java:921)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.function(Parser.java:880)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.methodDefinition(Parser.java:3748)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.objectLiteral(Parser.java:3634)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.primaryExpr(Parser.java:3151)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.memberExpr(Parser.java:2775)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.unaryExpr(Parser.java:2669)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.mulExpr(Parser.java:2590)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.addExpr(Parser.java:2574)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.shiftExpr(Parser.java:2555)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.relExpr(Parser.java:2530)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.eqExpr(Parser.java:2502)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.bitAndExpr(Parser.java:2491)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.bitXorExpr(Parser.java:2480)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.bitOrExpr(Parser.java:2469)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.andExpr(Parser.java:2458)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.orExpr(Parser.java:2447)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.condExpr(Parser.java:2411)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.assignExpr(Parser.java:2367)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.expr(Parser.java:2346)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.returnOrYield(Parser.java:1962)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.statementHelper(Parser.java:1244)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.statement(Parser.java:1141)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.parseFunctionBody(Parser.java:766)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.function(Parser.java:948)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.function(Parser.java:880)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.primaryExpr(Parser.java:3143)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.memberExpr(Parser.java:2775)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.unaryExpr(Parser.java:2669)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.mulExpr(Parser.java:2590)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.addExpr(Parser.java:2574)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.shiftExpr(Parser.java:2555)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.relExpr(Parser.java:2530)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.eqExpr(Parser.java:2502)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.bitAndExpr(Parser.java:2491)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.bitXorExpr(Parser.java:2480)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.bitOrExpr(Parser.java:2469)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.andExpr(Parser.java:2458)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.orExpr(Parser.java:2447)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.condExpr(Parser.java:2411)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.assignExpr(Parser.java:2367)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.assignExpr(Parser.java:2390)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.expr(Parser.java:2346)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.nameOrLabel(Parser.java:2095)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.statementHelper(Parser.java:1277)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.statement(Parser.java:1141)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.parse(Parser.java:662)
	at net.sourceforge.htmlunit.corejs.javascript.Parser.parse(Parser.java:581)
	at net.sourceforge.htmlunit.corejs.javascript.Context.parse(Context.java:2598)
	at net.sourceforge.htmlunit.corejs.javascript.Context.compileImpl(Context.java:2547)
	at net.sourceforge.htmlunit.corejs.javascript.Context.compileString(Context.java:1551)
	at com.gargoylesoftware.htmlunit.javascript.HtmlUnitContextFactory$TimeoutContext.compileString(HtmlUnitContextFactory.java:224)
	at net.sourceforge.htmlunit.corejs.javascript.Context.compileString(Context.java:1540)
	at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$1.doRun(JavaScriptEngine.java:713)
	at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$HtmlUnitContextAction.run(JavaScriptEngine.java:876)
	at net.sourceforge.htmlunit.corejs.javascript.Context.call(Context.java:619)
	at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.call(ContextFactory.java:537)
	at com.gargoylesoftware.htmlunit.javascript.HtmlUnitContextFactory.callSecured(HtmlUnitContextFactory.java:354)
	at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.compile(JavaScriptEngine.java:722)
	at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.compile(JavaScriptEngine.java:688)
	at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.compile(JavaScriptEngine.java:103)
	at com.gargoylesoftware.htmlunit.html.HtmlPage.loadJavaScriptFromUrl(HtmlPage.java:1123)
	at com.gargoylesoftware.htmlunit.html.HtmlPage.loadExternalJavaScriptFile(HtmlPage.java:1003)
	at com.gargoylesoftware.htmlunit.html.HtmlScript.executeScriptIfNeeded(HtmlScript.java:361)
	at com.gargoylesoftware.htmlunit.html.HtmlScript$2.execute(HtmlScript.java:234)
	at com.gargoylesoftware.htmlunit.html.HtmlScript.onAllChildrenAddedToPage(HtmlScript.java:256)
	at com.gargoylesoftware.htmlunit.html.parser.neko.HtmlUnitNekoDOMBuilder.endElement(HtmlUnitNekoDOMBuilder.java:560)
	at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source)
	at com.gargoylesoftware.htmlunit.html.parser.neko.HtmlUnitNekoDOMBuilder.endElement(HtmlUnitNekoDOMBuilder.java:514)
	at net.sourceforge.htmlunit.cyberneko.HTMLTagBalancer.callEndElement(HTMLTagBalancer.java:1192)
	at net.sourceforge.htmlunit.cyberneko.HTMLTagBalancer.endElement(HTMLTagBalancer.java:1132)
	at net.sourceforge.htmlunit.cyberneko.filters.DefaultFilter.endElement(DefaultFilter.java:219)
	at net.sourceforge.htmlunit.cyberneko.filters.NamespaceBinder.endElement(NamespaceBinder.java:312)
	at net.sourceforge.htmlunit.cyberneko.HTMLScanner$ContentScanner.scanEndElement(HTMLScanner.java:3189)
	at net.sourceforge.htmlunit.cyberneko.HTMLScanner$ContentScanner.scan(HTMLScanner.java:2114)
	at net.sourceforge.htmlunit.cyberneko.HTMLScanner.scanDocument(HTMLScanner.java:937)
	at net.sourceforge.htmlunit.cyberneko.HTMLConfiguration.parse(HTMLConfiguration.java:443)
	at net.sourceforge.htmlunit.cyberneko.HTMLConfiguration.parse(HTMLConfiguration.java:394)
	at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
	at com.gargoylesoftware.htmlunit.html.parser.neko.HtmlUnitNekoDOMBuilder.parse(HtmlUnitNekoDOMBuilder.java:760)
	at com.gargoylesoftware.htmlunit.html.parser.neko.HtmlUnitNekoHtmlParser.parse(HtmlUnitNekoHtmlParser.java:236)
	at com.gargoylesoftware.htmlunit.html.parser.neko.HtmlUnitNekoHtmlParser.parseHtml(HtmlUnitNekoHtmlParser.java:179)
	at com.gargoylesoftware.htmlunit.DefaultPageCreator.createHtmlPage(DefaultPageCreator.java:280)
	at com.gargoylesoftware.htmlunit.DefaultPageCreator.createPage(DefaultPageCreator.java:163)
	at org.jvnet.hudson.test.HudsonPageCreator.createPage(HudsonPageCreator.java:54)
	at com.gargoylesoftware.htmlunit.WebClient.loadWebResponseInto(WebClient.java:638)
	at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:451)
	at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:368)
	at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:520)
	at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:501)
	at org.jvnet.hudson.test.JenkinsRule$WebClient.goTo(JenkinsRule.java:2602)
	at org.jvnet.hudson.test.JenkinsRule$WebClient.goTo(JenkinsRule.java:2582)
	at org.jvnet.hudson.test.JenkinsRule$WebClient.getPage(JenkinsRule.java:2538)
	at org.jvnet.hudson.test.JenkinsRule$WebClient.getPage(JenkinsRule.java:2534)
	at hudson.tasks.junit.JUnitResultArchiverTest.basic(JUnitResultArchiverTest.java:110)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
	at org.jvnet.hudson.test.JenkinsRule$1.evaluate(JenkinsRule.java:601)
	at org.junit.internal.runners.statements.FailOnTimeout$CallableStatement.call(FailOnTimeout.java:299)
	at org.junit.internal.runners.statements.FailOnTimeout$CallableStatement.call(FailOnTimeout.java:293)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.lang.Thread.run(Thread.java:748)
== CALLING JAVASCRIPT ==
/* global jQuery3, view, echartsJenkinsApi, bootstrap5 */

const trendDefaultStorageId = 'jenkins-echarts-trend-configuration-default';

/**
 * Reads the specified configuration from the local storage.
 *
 * @param {String} id - the ID of the configuration
 * @return the configuration or {} if no such configuration is found
 */
EChartsJenkinsApi.prototype.readFromLocalStorage = function (id) {
    try {
        const configuration = localStorage.getItem(id);
        if (configuration) {
            return JSON.parse(configuration);
        }
    }
    catch (e) {
        // ignore any errors
    }
    return {};
}

/**
 * Reads the trend configuration from the local storage and merges it with the default configuration.
 *
 * @param {String} id - the ID of the configuration
 * @return the configuration or {} if no such configuration is found
 */
EChartsJenkinsApi.prototype.readConfiguration = function (id) {
    const specific = echartsJenkinsApi.readFromLocalStorage(id);
    const common = echartsJenkinsApi.readFromLocalStorage(trendDefaultStorageId);

    return {
        ...specific,
        ...common
    };
}

/**
 * Configures the content of the trend configuration  dialog.
 *
 * @param {String} suffix - the suffix for the ID of the affected trend configuration dialog
 * @param {Function} fillDialog - a function to fill the configuration dialog with additional values from the JSON
 *     configuration object
 * @param {Function} saveDialog - a function to save the configuration dialog values to the JSON configuration object
 */
EChartsJenkinsApi.prototype.configureTrend = function (suffix, fillDialog, saveDialog) {
    const trendConfiguration = jQuery3('#trend-configuration-' + suffix);
    const numberOfBuildsInput = trendConfiguration.find('#builds-' + suffix);
    const numberOfDaysInput = trendConfiguration.find('#days-' + suffix);
    const useBuildAsDomainCheckBox = trendConfiguration.find('#build-domain-' + suffix);
    const widthSlider = trendConfiguration.find('#width-' + suffix);
    const heightSlider = trendConfiguration.find('#height-' + suffix);
    const trendLocalStorageId = 'jenkins-echarts-trend-configuration-' + suffix;
    const saveButton = '#save-trend-configuration-' + suffix;

    function setDefaultValues() {
        numberOfBuildsInput.val(50);
        numberOfDaysInput.val(0);
        useBuildAsDomainCheckBox.prop('checked', true);
        widthSlider.val(500);
        heightSlider.val(200);
        if (fillDialog) {
            fillDialog(trendConfiguration, {});
        }
    }

    trendConfiguration.on('show.bs.modal', function (e) {
        const trendJsonConfiguration = echartsJenkinsApi.readConfiguration(trendLocalStorageId);
        if (jQuery3.isEmptyObject(trendJsonConfiguration)) {
            setDefaultValues();
        }
        else {
            try {
                numberOfBuildsInput.val(trendJsonConfiguration.numberOfBuilds);
                numberOfDaysInput.val(trendJsonConfiguration.numberOfDays);
                useBuildAsDomainCheckBox.prop('checked', trendJsonConfiguration.buildAsDomain === 'true');
                widthSlider.val(trendJsonConfiguration.width);
                widthSlider.next().html(trendJsonConfiguration.width)
                heightSlider.val(trendJsonConfiguration.height);
                heightSlider.next().html(trendJsonConfiguration.height)
                if (fillDialog) {
                    fillDialog(trendConfiguration, trendJsonConfiguration);
                }
            }
            catch (e) {
                setDefaultValues();
            }
        }
    });

    jQuery3(saveButton).on('click', function (e) {
        const configurationJson = {
            numberOfBuilds: numberOfBuildsInput.val(),
            numberOfDays: numberOfDaysInput.val(),
            buildAsDomain: useBuildAsDomainCheckBox.prop('checked') ? 'true' : 'false',
            width: widthSlider.val(),
            height: heightSlider.val()
        };
        localStorage.setItem(trendDefaultStorageId, JSON.stringify(configurationJson));
        if (saveDialog) {
            const specific = saveDialog(trendConfiguration);
            localStorage.setItem(trendLocalStorageId, JSON.stringify(specific));
        }
    });

    trendConfiguration.on('keypress', function (e) {
        if (e.which === 13) {
            jQuery3(saveButton).click();
        }
    });

    const slider = jQuery3('.range-slider');
    const range = jQuery3('.range-slider-range');
    const value = jQuery3('.range-slider-value');

    slider.each(function() {
        value.each(function() {
            const value = jQuery3(this).prev().attr('value');
            jQuery3(this).html(value);
        });

        range.on('input', function() {
            jQuery3(this).next(value).html(this.value);
        });
    });
}

/**
 * Configures the content of the trend configuration  dialog.
 *
 * @param {String} suffix - the suffix for the ID of the affected trend configuration dialog
 *     configuration object
 */
EChartsJenkinsApi.prototype.configureChart = function (suffix) {
    const chartConfiguration = jQuery3('#chart-configuration-' + suffix);
    const numberOfBuildsInput = chartConfiguration.find('#builds-' + suffix);
    const numberOfDaysInput = chartConfiguration.find('#days-' + suffix);
    const useBuildAsDomainCheckBox = chartConfiguration.find('#build-domain-' + suffix);
    const trendLocalStorageId = 'jenkins-echarts-chart-configuration-' + suffix;
    const saveButton = '#save-chart-configuration-' + suffix;

    function setDefaultValues() {
        numberOfBuildsInput.val(50);
        numberOfDaysInput.val(0);
        useBuildAsDomainCheckBox.prop('checked', true);
    }

    chartConfiguration.on('show.bs.modal', function (e) {
        const trendJsonConfiguration = echartsJenkinsApi.readFromLocalStorage(trendLocalStorageId);
        if (jQuery3.isEmptyObject(trendJsonConfiguration)) {
            setDefaultValues();
        }
        else {
            try {
                numberOfBuildsInput.val(trendJsonConfiguration.numberOfBuilds);
                numberOfDaysInput.val(trendJsonConfiguration.numberOfDays);
                useBuildAsDomainCheckBox.prop('checked', trendJsonConfiguration.buildAsDomain === 'true');
            }
            catch (e) {
                setDefaultValues();
            }
        }
    });

    jQuery3(saveButton).on('click', function (e) {
        const configurationJson = {
            numberOfBuilds: numberOfBuildsInput.val(),
            numberOfDays: numberOfDaysInput.val(),
            buildAsDomain: useBuildAsDomainCheckBox.prop('checked') ? 'true' : 'false',
        };
        localStorage.setItem('jenkins-echarts-chart-configuration-' + suffix, JSON.stringify(configurationJson));
    });

    chartConfiguration.on('keypress', function (e) {
        if (e.which === 13) {
            jQuery3(saveButton).click();
        }
    });
}

======= EXCEPTION END ========

@uhafner
Copy link
Member Author

uhafner commented Aug 5, 2021

I created a PR for the JUnit plugin 2 months ago: jenkinsci/junit-plugin#272

@uhafner
Copy link
Member Author

uhafner commented Apr 24, 2022

Depends on jenkinsci/junit-plugin#342.

@basil
Copy link
Member

basil commented Apr 30, 2022

Depends on jenkinsci/junit-plugin#342.

@ufhaner Not sure I agree with that assessment. While that would certainly fix the problem, I don't think we are necessarily blocked on it. The problem seems to me that echarts-api used to have a dependency on bootstrap4-api but recent versions have a dependency on bootstrap5-api. This is tantamount to an API change, so echarts-api should have been split into a separate plugin at that point. It is just not sustainable to have a plugin in the BOM dependency tree (in this case, echarts-api) that is "frozen" at an old version such that we can't update its parent POM and provide build toolchain updates, etc. So long as jenkinsci/junit-plugin#342 remains unaddressed and we continue to support Bootstrap 4, we need to have two ECharts plugins, one for the Bootstrap 4 line and one for the Bootstrap 5 line. Today we effectively have that in the form of the old version of Echarts that we still use in many places, but this creates maintenance problems for BOM maintainers because it is not receiving build toolchain updates. (An alternative to having a separate plugin would be for you to backport build toolchain updates to the last release of ECharts that depended on Bootstrap 4.)

@basil
Copy link
Member

basil commented Apr 30, 2022

@uhafner I came up with a more clear argument:

  • BOM maintenance requires that everything in the BOM have its build toolchain up-to-date at all times.
  • junit must be in the BOM, as it is one of the most popular plugins.
  • As long as junit is in the BOM, all of its current dependencies must be in the BOM.
  • As long as Feature/UI tests junit-plugin#342 remains unaddressed, junit's current dependencies include bootstrap4-api and therefore echarts-api <= 5.0.2.
  • As long as echarts-api <= 5.0.2 must remain in the BOM, its build toolchain must be kept up-to-date.

In other words, jenkinsci/junit-plugin#342 being unfinished necessitates keeping echarts-api <= 5.0.2's build toolchain up-to-date.

Commit de25291083107967a29e5fd9ca3933fbea0c0990de25291 in jenkinsci/echarts-api-plugin#228 is based on top of echarts-api 5.0.2-1. It updates the build toolchain. I am asking that we backport these build toolchain updates to the 5.0.2 line and release 5.0.2-2. This would allow us to update the 5.0.2 version of echarts-api in the BOM, even without jenkinsci/junit-plugin#342, and unblock my other BOM work in the short term. For instructions on how to do a backport, see: https://gist.github.com/jglick/86a30894446ed38f918050c1180483e2

@basil basil added the java Pull requests that update Java code label May 5, 2022
@basil basil merged commit e5adf98 into jenkinsci:master May 5, 2022
@uhafner uhafner deleted the bump-ui-libraries branch June 17, 2022 14:01
@jglick jglick mentioned this pull request May 31, 2023
6 tasks
This pull request was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
dependencies Pull requests that update a dependency file java Pull requests that update Java code
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants