in src/main/kotlin/com/jetbrains/plugin/jtreg/configuration/TestObjectHelper.kt [38:191]
fun createJTRegProgramParameters(configuration: JTRegConfiguration, classPath: PathsList, runner: ProgramRunner<out RunnerSettings>): ParametersList {
val params = ParametersList()
// set verbose options
if (configuration.isVerboseOutput()) {
params.add("-v")
}
// set general options
if (configuration.isAllowSecurityManager()) {
params.add("-allowSetSecurityManager")
}
if (runner !is JTRegDebuggerRunner) {
if (configuration.getConcurrency() > 1) {
params.add("-concurrency:${configuration.getConcurrency()}")
if (configuration.getLockFile().isNotEmpty()) {
params.add("-lock:${configuration.getLockFile()}")
}
}
}
params.add("-ignore:${configuration.getIgnoreMode().name.lowercase()}")
params.add("-timeoutFactor:${configuration.getTimeoutFactor()}")
params.add("-timelimit:${configuration.getTimeLimit()}")
if (configuration.isGenerateXmlReport()) {
params.add("-xml")
}
// repeat mode
if (runner !is JTRegDebuggerRunner) {
if (BuildConfig.isJetBrainsVendor()) {
if (configuration.getRepeatMode() != RepeatCount.ONCE) {
RepeatCount.cmdValues[configuration.getRepeatMode()]?.let {
params.add("-repeat:${it}")
}
}
if (configuration.getRepeatMode() == RepeatCount.N) {
params.add("-repeatCount:${configuration.getRepeatCount()}")
} else if (configuration.getRepeatMode() == RepeatCount.UNTIL_FAILURE || configuration.getRepeatMode() == RepeatCount.UNTIL_SUCCESS) {
params.add("-repeatCount:${configuration.getMaxRepeatCount()}")
}
}
}
// weston mode
if (BuildConfig.isJetBrainsVendor()) {
if (configuration.isUseWeston()) {
params.add("-useWeston")
params.add("-libwakefield:${configuration.getWakeFieldPath()}")
params.add("-westonScreensCount:${configuration.getWestonScreens()}")
params.add("-westonScreenWidth:${configuration.getWestonScreenWidth()}")
params.add("-westonScreenHeight:${configuration.getWestonScreenHeight()}")
}
}
// base dir
params.add("-dir:${configuration.project.basePath}")
// work dir
if (configuration.workingDirectory.isEmpty()) {
configuration.project.basePath?.let {
val baseDir = Paths.get(it)
val workDir = baseDir.resolve("JTWork").toString()
configuration.workingDirectory = workDir
}
}
params.add("-workDir:${configuration.workingDirectory}")
// report dir
if (configuration.getReportDir().isEmpty()) {
Paths.get(configuration.workingDirectory).parent.resolve("JTReport").toString().let {
configuration.setReportDir(it)
}
}
params.add("-reportDir:${configuration.getReportDir()}")
// additional test options
// keywords
if (configuration.getKeyword().isNotEmpty()) {
params.add("-k:${configuration.getKeyword()}")
}
if (configuration.getExcludeList().isNotEmpty()) {
params.add("-exclude:${configuration.getExcludeList()}")
}
// test mode
if (runner is JTRegDebuggerRunner) { // debug mode can run only in agent vm
params.add("-agentvm")
} else {
params.add("-${configuration.getTestMode().cmdOption}")
}
// test category
if (configuration.getTestCategory() == TestData.ONLY_MANUAL) {
params.add("-m")
} else if (configuration.getTestCategory() == TestData.ONLY_AUTOMATIC) {
params.add("-a")
}
// attach debug agent
if (runner is JTRegDebuggerRunner) {
val debugRunner: JTRegDebuggerRunner = runner
params.add("-debug:-agentlib:jdwp=transport=dt_socket,server=n,suspend=y,address=127.0.0.1:" + debugRunner.getAddress())
}
if (configuration.getRunCmd().isNotEmpty()) {
val cmd = configuration.getRunCmd().split(" ").map { it.trim() }.filter { it !== "" }.joinToString(" ")
params.add("-singleCmd:\"${cmd}\"")
}
// set jdk
val jdkString = configuration.getJDKString()
params.add("-jdk:$jdkString")
// set VM options
if (configuration.getNativeLibraryPath().isNotEmpty()) {
params.add("-nativepath:${configuration.getNativeLibraryPath()}")
}
if (configuration.getTestJavaOptions().trim().isNotEmpty()) {
params.add("-javaoptions:${configuration.getTestJavaOptions()}")
}
configuration.setTestJavaOptions("")
if (configuration.getTestEnvVars().isNotEmpty()) {
configuration.getTestEnvVars().map { "${it.key}=${it.value}" }.joinToString(",").let {
params.add("-e:$it")
}
}
if (classPath.pathList.isNotEmpty()) {
params.add("-cpa:${buildClasspath(classPath.pathList)}")
}
// add test observer
params.add("-o:com.oracle.plugin.jtreg.runtime.TestListener")
params.add("-od:" + PathUtil.getJarPathForClass(JTRegConfiguration::class.java))
if (configuration.getTestKind() == TestData.TEST_CLASS) {
params.add(configuration.getRunClass())
} else if (configuration.getTestKind() == TestData.TEST_DIRECTORY) {
params.add(configuration.getPackage())
} else if (configuration.getTestKind() == TestData.TEST_GROUP) {
configuration.getTestGroup()?.let {
val testSelection = "${it.relativeTestDirectory}:${it.groupName}"
params.add(testSelection)
}
}
if (configuration.programParameters.isNotEmpty()) {
configuration.programParameters.split(" ").map { it.trim() }.filter { it.isNotEmpty() }
.forEach { params.add(it) }
}
return params
}