Kotlin не может прочитать, сгенерированный Autohotkey, файл возврата - PullRequest
0 голосов
/ 25 октября 2018

В 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
...