В Kotlin я генерирую скрипты Autohotkey и вызываю их также в Kotlin через командную строку.
Скрипты Autohotkeys всегда генерируют затем возвращаемый файл, который затем снова читает Kotlin.
Это работает спервые два, но не с третьим (funcName = run_Gi_IntelliSenseEverywhere).
fun main(args: Array<String>) {
if (!isWritingToOutputFilePossible()) {
throw Exception(":( isWritingToOutputFilePossible failed")
}
if (!openNotepad())
throw Exception(":( openNotepad failed")
Thread.sleep(5500.toLong())
if (!run_Gi_IntelliSenseEverywhere())
throw Exception(":( run_Gi_IntelliSenseEverywhere failed")
Но, наконец, файл возврата в настоящее время генерируется только после истечения периода ожидания.
I 'Мы уже увеличили время ожидания до 15 секунд.На самом деле я думал, что достаточно секунды или меньше.
Вы также можете увидеть это в этом видео: https://youtu.be/XiLzYA9MpU0 (30 секунд)
Вот функция, которая ожидает:
private fun File.waitFileExist(milliWaitMax: Int = 3000): Boolean {
val funName = object{}.javaClass.enclosingMethod.name
println("/¯¯¯¯ $funName(milliWaitMax: $milliWaitMax)")
var i = 0
val sleepMili = 40
while (!this.exists() && (++i * sleepMili) < milliWaitMax) Thread.sleep(sleepMili.toLong())
val fileExists = this.exists()
if (!fileExists)
println(":-( ${this.absolutePath.replace(projectRootAbs,"")} NOT exist. waited: ${i * sleepMili} = $i*$sleepMili")
else
println(":-) ${this.absolutePath.replace(projectRootAbs,"")} exist.")
return fileExists
}
Полный исходный код можно найти здесь: https://github.com/sl5net/UnitTest4_g-IntelliSense-everywhere
Вывод с консоли следующий:
"C:\Program Files\Java\jdk-9.0.1\bin\java.exe" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2018.2.4\lib\idea_rt.jar=54276:C:\Program Files\JetBrains\IntelliJ IDEA 2018.2.4\bin" -Dfile.encoding=UTF-8 -classpath G:\fre\git\github\UnitTest4_g-IntelliSense-everywhere\out\production\UnitTest4g-IntelliSense-everywhere;C:\Users\Administrator\.IntelliJIdea2018.2\config\plugins\Kotlin\kotlinc\lib\kotlin-stdlib.jar;C:\Users\Administrator\.IntelliJIdea2018.2\config\plugins\Kotlin\kotlinc\lib\kotlin-reflect.jar;C:\Users\Administrator\.IntelliJIdea2018.2\config\plugins\Kotlin\kotlinc\lib\kotlin-test.jar;C:\Users\Administrator\.IntelliJIdea2018.2\config\plugins\Kotlin\kotlinc\lib\kotlin-stdlib-jdk7.jar;C:\Users\Administrator\.IntelliJIdea2018.2\config\plugins\Kotlin\kotlinc\lib\kotlin-stdlib-jdk8.jar Keyboard
/¯¯¯¯ doAhk(...)
/¯¯¯¯ waitFileExist(milliWaitMax: 3000)
:-) \src\exec-ahk-commandLineParas.ahk.input.inc.ahk exist.
/¯¯¯¯ isReturnStringTrue(milliWaitMax:3000)
/¯¯¯¯ getWait_OutputFile_String(milliWaitMax:3000
/¯¯¯¯ waitFileExist(milliWaitMax: 3000)
:-) \src\exec-ahk-commandLineParas.ahk.output.txt exist.
:) true = returnString
/¯¯¯¯ doAhk(...)
/¯¯¯¯ waitFileExist(milliWaitMax: 3000)
:-) \src\exec-ahk-commandLineParas.ahk.input.inc.ahk exist.
/¯¯¯¯ isReturnStringTrue(milliWaitMax:3000)
/¯¯¯¯ getWait_OutputFile_String(milliWaitMax:3000
/¯¯¯¯ waitFileExist(milliWaitMax: 3000)
:-) \src\exec-ahk-commandLineParas.ahk.output.txt exist.
:) true = returnString
/¯¯¯¯ run_Gi_IntelliSenseEverywhere
/¯¯¯¯ doAhk(...)
/¯¯¯¯ waitFileExist(milliWaitMax: 3000)
:-) \src\exec-ahk-commandLineParas.ahk.input.inc.ahk exist.
/¯¯¯¯ isWinExistWait( ... secondsWait: 15, detectHiddenWindowOnOff: On~On
/¯¯¯¯ doAhk(...)
/¯¯¯¯ waitFileExist(milliWaitMax: 3000)
:-) \src\exec-ahk-commandLineParas.ahk.input.inc.ahk exist.
/¯¯¯¯ isReturnStringTrue(milliWaitMax:15000)
/¯¯¯¯ getWait_OutputFile_String(milliWaitMax:15000
/¯¯¯¯ waitFileExist(milliWaitMax: 15000)
Exception in thread "main" :-( \src\exec-ahk-commandLineParas.ahk.output.txt NOT exist. waited: 15000 = 375*40
java.lang.Exception: :( G:\fre\git\github\UnitTest4_g-IntelliSense-everywhere\src\exec-ahk-commandLineParas.ahk.output.txt not exist.
at Keyboard$Companion.getWait_OutputFile_String(UnitTest4g-IntelliSense-everywhere.kt:523)
at Keyboard$Companion.isReturnStringTrue(UnitTest4g-IntelliSense-everywhere.kt:251)
at Keyboard$Companion.isWinExistWait(UnitTest4g-IntelliSense-everywhere.kt:375)
at Keyboard$Companion.run_Gi_IntelliSenseEverywhere(UnitTest4g-IntelliSense-everywhere.kt:347)
at Keyboard$Companion.main(UnitTest4g-IntelliSense-everywhere.kt:222)
at Keyboard.main(UnitTest4g-IntelliSense-everywhere.kt)
Process finished with exit code 1