--- old/tools/FxTestRunner/src/client/test/runner/BasicFXInterview.java 2016-12-09 13:28:22.282854983 +0300 +++ new/tools/FxTestRunner/src/client/test/runner/BasicFXInterview.java 2016-12-09 13:28:22.226854481 +0300 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2009, 2016, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -24,6 +24,7 @@ package client.test.runner; +import static client.test.runner.InterviewUtils.*; import client.test.runner.interview.LookAndFeelQuestion; import client.test.runner.interview.PipelineGroupQuestion; import client.util.CtrUtils; @@ -127,6 +128,21 @@ /** * */ + public final static String ADD_EXPORTS_PARAM_NAME = "addExports"; + + /** + * + */ + public final static String XPATCH_PARAM_NAME = "XPatch"; + + /** + * + */ + public final static String ENABLE_ADD_EXPORTS_PARAM_NAME = "addExportsEnabled"; + + /** + * + */ public final static String VM_OPTIONS_PARAM_NAME = "vmOptions"; /** @@ -181,7 +197,7 @@ throw new Error("should not happen" + e); } } - + /** * * @param data @@ -192,7 +208,7 @@ data.put(TESTSUITE_ID, id); super.export(data); } - + /** * * @return @@ -200,7 +216,7 @@ public boolean isRemoteRun() { return YesNoQuestion.YES.equals(qRemoteRun.getValue()); } - + /** * * @return @@ -209,6 +225,10 @@ return qJavaPath.getValue(); } + public String getXPatch() { + return qXPatch.getValue(); + } + /** * * @return @@ -216,7 +236,7 @@ protected Question getLastQuestion(){ return getEnvSuccessorQuestion(); } - + /** * */ @@ -311,7 +331,7 @@ data.put(JAVATEST_HOSTNAME, value); } }; - + private ChoiceQuestion qRunMode = new ChoiceQuestion(this, RUN_MODE_PARAM) { { setChoices(new String[]{RUN_MODE_DESKTOP, RUN_MODE_DESKTOP_SWING_INTEROPERABILITY, RUN_MODE_DESKTOP_SWT_INTEROPERABILITY, RUN_MODE_PLUGIN, RUN_MODE_JNLP}, false); @@ -361,7 +381,7 @@ setValue((String) data.get(RUN_MODE_PARAM)); } }; - + private FileQuestion qBrowser = new FileQuestion(this, BROWSER_PARAM_NAME) { { this.setFilter(new ExecutablesFileFilter()); @@ -394,7 +414,7 @@ } super.save(data); } - + private final String mostCommonPaths[] = new String[]{ "\\Applications\\Firefox.app\\Contents\\MacOS\\firefox", "C:/Program Files (x86)/Mozilla Firefox/firefox.exe" @@ -411,8 +431,8 @@ } } setValue(def); - } - + } + @Override public Question getNext() { if (!(value.isFile() || FF.equals(value.getName()))) { @@ -423,7 +443,7 @@ @Override public void load(Map data) { - + String tmp = null; if (data.containsKey(BROWSER_PARAM_NAME) && (null!=(tmp= (String)data.get(BROWSER_PARAM_NAME))) @@ -434,9 +454,9 @@ clear(); } } - + }; - + private FileQuestion qJavawsPath = new FileQuestion(this, JAVAWS_PARAM_NAME) { { this.setFilter(new ExecutablesFileFilter()); @@ -461,7 +481,7 @@ @Override public void clear() { // you should not call setValue() twice here, - // and should not ask why + // and should not ask why String def = JAVAWS; if (isWindows()) { for (String path : mostCommonPaths) { @@ -487,10 +507,10 @@ public void export(Map data) { data.put(JAVAWS_PARAM_NAME, value.getPath()); } - + @Override public void load(Map data) { - + String tmp = null; if (data.containsKey(JAVAWS_PARAM_NAME) && (null!=(tmp= (String)data.get(JAVAWS_PARAM_NAME))) @@ -502,7 +522,7 @@ } } }; - + private FileQuestion qJavaPath = new FileQuestion(this, JAVA_PARAM_NAME) { { this.setFilter(new ExecutablesFileFilter()); @@ -515,7 +535,7 @@ } return super.isValueValid(); } - + @Override public String getText() { return "Choose java executable from JDK installation."; @@ -529,8 +549,8 @@ @Override public void clear() { - setValue(JAVA_DEF); - } + setValue(JAVA_DEF); + } @Override public Question getNext() { @@ -552,8 +572,8 @@ } } }; - - + + private FileQuestion qJavaFX = new FileQuestion(this, FX_SDK_HOME_PARAM_NAME) { { this.setFilter(new DirectoryFileFilter("JavaFX SDK containing directory")); @@ -568,7 +588,7 @@ public String getSummary() { return "JavaFX SDK Home"; } - + @Override public boolean isValueValid() { if(YesNoQuestion.YES.equals(qRemoteRun.getValue())) { @@ -685,7 +705,7 @@ } return super.isValueValid(); } - + @Override public Question getNext() { return qLookAndFeelGroup; @@ -717,7 +737,7 @@ } } }; - + private StringQuestion qProxy = new StringQuestion(this, "proxy") { { @@ -730,7 +750,7 @@ @Override public String getText() { - return "Proxy settings in format: host:port\nE.g. www-proxy.us.oracle.com:80"; + return "Proxy settings in format: host:port\nE.g. proxy.example.com:80"; } @Override @@ -742,7 +762,7 @@ public Question getNext() { String val = getValue(); if (val == null || val.trim().length() == 0 || CtrUtils.getProxyUrl(val) != null) { - return qVmOptions; + return qXPatch; } else { return null; } @@ -759,24 +779,92 @@ setValue(v != null ? v : ""); } }; - + private LookAndFeelQuestion qLookAndFeelGroup = new LookAndFeelQuestion (this, qProxy); private ChoiceQuestion qPipelineGroup = new PipelineGroupQuestion (this, getLastQuestion()); + private StringQuestion qXPatch = new StringQuestion(this, XPATCH_PARAM_NAME) { - private static boolean isWindows() { - return System.getProperty("os.name").toLowerCase().contains("windows"); - } - private StringQuestion qVmOptions = new StringQuestion(this, VM_OPTIONS_PARAM_NAME) { + @Override + public String getText() { + return "Set -Xpatch directory for the test run. " + + "\nE.g. build/shim-modules"; + } + + @Override + public String getSummary() { + return "-Xpatch"; + } + + @Override + public void clear() { + setValue(""); + } + + @Override + public Question getNext() { + return qEnableAddExports; + } + + @Override + public void export(Map data) { + data.put(XPATCH_PARAM_NAME, value); + } + + @Override + public void load(Map data) { + String newValue = (String) data.get(XPATCH_PARAM_NAME); + setValue(newValue != null ? newValue : ""); + } + }; + + private YesNoQuestion qEnableAddExports = new YesNoQuestion(this, ENABLE_ADD_EXPORTS_PARAM_NAME, YesNoQuestion.YES) { + @Override + public Question getNext() { + if (getValue().equals(YES)) { + return qAddExports; + } + return qVmOptions; + } @Override public String getText() { - return "Set VM Options for test run (desktop mode only).\nE.g. -Dprism.verbose=true"; + return "Do you wish to add -XaddExports JVM argument when running tests? " + + "\nAnswer Yes when running with JDK 9 Jigsaw." + + "\nAnswer No when running with JDK 8 and prior."; } @Override public String getSummary() { - return "VM Options"; + return "Add -XaddExports?"; + } + + @Override + public void export(Map data) { + data.put(ENABLE_ADD_EXPORTS_PARAM_NAME, getValue()); + } + + @Override + public void load(Map data) { + if (data.containsKey(ENABLE_ADD_EXPORTS_PARAM_NAME)) { + setValue((String) data.get(ENABLE_ADD_EXPORTS_PARAM_NAME)); + } + } + }; + + private StringQuestion qAddExports = new StringQuestion(this, ADD_EXPORTS_PARAM_NAME) { + + @Override + public String getText() { + return "Set -XaddExports values for the test run. " + + "Individual tests can use @addExports annotation " + + "to add more specific entries to -XaddExports JVM argument." + + "\nE.g. javafx.graphics/com.sun.prism=ALL-UNNAMED,javafx.base/com.sun.javafx.runtime=ALL-UNNAMED"; + } + + @Override + public String getSummary() { + return "-XaddExports"; } @Override @@ -786,39 +874,55 @@ @Override public Question getNext() { - return qPipelineGroup;//getLastQuestion(); + return qVmOptions; } @Override public void export(Map data) { - data.put(VM_OPTIONS_PARAM_NAME, value); + data.put(ADD_EXPORTS_PARAM_NAME, value); } @Override public void load(Map data) { - String newValue = (String) data.get(VM_OPTIONS_PARAM_NAME); + String newValue = (String) data.get(ADD_EXPORTS_PARAM_NAME); setValue(newValue != null ? newValue : ""); } }; + + private StringQuestion qVmOptions = new StringQuestion(this, VM_OPTIONS_PARAM_NAME) { + @Override + public String getText() { + return "Set VM Options for test run (desktop mode only).\nE.g. -Dprism.verbose=true"; + } + @Override + public String getSummary() { + return "VM Options"; + } - private static class ExecutablesFileFilter implements FileFilter { @Override - public boolean accept(File file) { - return file.exists() && file.canExecute(); + public void clear() { + setValue(""); } @Override - public boolean acceptsDirectories() { - return false; + public Question getNext() { + return qPipelineGroup;//getLastQuestion(); } @Override - public String getDescription() { - return "Executable files"; + public void export(Map data) { + data.put(VM_OPTIONS_PARAM_NAME, value); } - } + + @Override + public void load(Map data) { + String newValue = (String) data.get(VM_OPTIONS_PARAM_NAME); + setValue(newValue != null ? newValue : ""); + } + }; + private static Runnable ieFix = new Runnable() { @Override public void run() {