Benutzer-Werkzeuge

Webseiten-Werkzeuge


onlineide:integration:onlineideexitstatusaccess

Dies ist eine alte Version des Dokuments!


Zugriff auf Exit-Status der Programmausführung von anderen Skripten aus

Wenn ein User ein Programm oder einen Test in der Embedded Online-IDE startet, kann der Status der Programmausführung/Testdurchführung nach Beendigung an andere Javascript-Programme weitergegeben werden.

A. Setzen von 'enableRunExitStatusAccess': true

Um der IDE mitzuteilen, dass die Weitergabe des Exitstatus erwünscht ist, muss das Attribut enableRunExitStatusAccess gesetzt werden:

<div class="java-online" style="width: calc(100% - 10px); height: 500px; margin-left: 5px" data-java-online="{
    'id': 'abcd',
    'enableRunExitStatusAccess': true
}">
    <script type="text/plain" title="Program.java" data-type="java">
       for(int i = 0; i < 10; i++){
          println(i);
       }
       System.exit(0);            
    </script>

B. Registrieren des Exitstatus-Listeners

Bemerkung: Wenn man window.online_ide_onReady eine Funktion zuweist, wird sie ausgeführt, nachdem die Online-IDE fertig initialisiert ist und insbesondere auch window.online_ide_access definiert ist.

window.online_ide_onReady = () => {
    let ide = window.online_ide_access.getIDE('abcd');
    ide.registerOnRunExitListener((exitStatus)=>{console.log(exitStatus);});
}

C. exitStatus-Objekt

Hier der Aufbau des exitStatus-Objekts:

export type ExitStatus = {
    exitCode: number;             // if program exited via System.exit(int code)
    output: string;                    // program output generated via print() and println()
    exception?: IThrowable;
    testProgress?: TestProgress;   
}

testProgress ist ein Baum mit allen Testergebnissen:

type TestProgress = {
    overall: number,
    passed: number,
    failed: number,
    classIdentifier: string,
    methodIdentifier: string,
    children: TestProgress[]
}

Komplettes Beispiel

    <div class="java-online" style="width: calc(100% - 10px); height: 500px; margin-left: 5px" data-java-online="{
        'id': 'abcd',
        'speed': 'max',
        'withFileList': true,
        'hideEditor': false,
        'hideStartPanel': false,
        'libraries': [''],
        'spritesheetURL': '/assets/test-spritesheets/Campfire.zip',
        'settings': {
            'compiler.shadowedSymbolErrorLevel': 'error'
        },
        'withClassDiagram': true,
        'enableRunExitStatusAccess': true
 
    }">
        <script type="text/plain" title="Program.java" data-type="java">
           for(int i = 0; i < 10; i++){
              println(i);
           }
           System.exit(0);            
        </script>
        <script type="text/plain" title="Test.java" data-type="java" data-online-ide="{'readOnly': true}">
            @Test
class MyFirstTestClass {
 
   @Test
   void testSquareRoot() {
      double squareRootOfFour = Math.sqrt(4);
      assertEquals(2.0, squareRootOfFour,
         "There seems to be something wrong with Math.sqrt!");
   }
 
   @Test
   void testDivision() {
      double n = 5 / 2 * 3;
      println(n);
      assertEquals(7.5, n,
         "5/2 * 3 doesn't yield 7.5 -> mysterious...");
   }
}
        </script>
    </div>
onlineide/integration/onlineideexitstatusaccess.1788436688.txt.gz · Zuletzt geändert: von martin