Przejdź do treści

KRET LANGUAGE ACADEMY · DOKUMENTACJA ZE ŹRÓDEŁ

Testy `kret test` i diagnostyka (EXPERIMENTAL)

ADVANCEDRUNNABLE_LOCALKretS

Moduły testowe w `Tests/` (funkcje `test…` bez parametrów i bez wyniku). Porażka = `throw`, pominięcie = `throw "SKIP: …"`. `kret test --list` tylko kompiluje i wypisuje plan, `kret test --json` wykonuje każdy moduł w świeżym, izolowanym procesie pluginu. `kret test` ma status EXPERIMENTAL (`kret-test/1`).

Edycja i zapisane wyniki

Witryna nie wykonuje kodu ani nie prowadzi walidacji SDK. Wyniki poniżej pochodzą z eksportu określonej wersji i przestają opisywać kod po jego zmianie.

Kanoniczne pliki projektu

module Main

fn clamp(value: Int, low: Int, high: Int) -> Int {
    if value < low {
        return low
    }
    if value > high {
        return high
    }
    return value
}

fn Start() -> Int {
    return clamp(150, 0, 100)
}

fn Shutdown() {
}

Czytanie kodu linia po linii

Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.

  1. module MainDeklaracja modułu KretS; porównaj nazwę z nazwą pliku.
  2. Pusta linia oddziela fragmenty źródła.
  3. fn clamp(value: Int, low: Int, high: Int) -> Int {Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.
  4. if value < low {Sterowanie lub obsługa błędu KretS; szczegóły określa referencja tej konstrukcji.
  5. return lowZwrócenie wartości z funkcji; nie jest zapisem do dziennika.
  6. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  7. if value > high {Sterowanie lub obsługa błędu KretS; szczegóły określa referencja tej konstrukcji.
  8. return highZwrócenie wartości z funkcji; nie jest zapisem do dziennika.
  9. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  10. return valueZwrócenie wartości z funkcji; nie jest zapisem do dziennika.
  11. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  12. Pusta linia oddziela fragmenty źródła.
  13. fn Start() -> Int {Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.
  14. return clamp(150, 0, 100)Zwrócenie wartości z funkcji; nie jest zapisem do dziennika.
  15. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  16. Pusta linia oddziela fragmenty źródła.
  17. fn Shutdown() {Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.
  18. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  19. Pusta linia oddziela fragmenty źródła.

Wynik i typowy błąd

Plan zawiera 3 testy; przebieg: 2 × PASS, 1 × SKIP, status `PASSED` (kod 0). `run` zwraca 100.

Na co uważać

Funkcja `testX(x: Int)` z parametrem nie jest testem — dostaje status ERROR. Brak testów albo pusty filtr to `NO_TESTS` (kod 6), który **nie jest sukcesem**.

Wymagania wersji i procedura lokalna

sdk
1.0.0-rc.3+kret.local.3
sdkInfoReports
1.0.0-rc.3
core
1.0.0-test.6.11-draft.1
os
Windows 11 x64
dotnet
.NET 10 runtime

Polecenia poniżej są instrukcją do samodzielnego wykonania z właściwym lokalnym SDK. DATA/OUT muszą wskazywać nowe katalogi testowe. Nie ma przycisku uruchamiania na serwerze.

  1. test-listkret test . --listKatalog: project · Oczekiwany kod wyjścia: 0
  2. test-runkret test . --json --data {DATA} --report {OUT}/report.json --junit {OUT}/junit.xmlKatalog: project · Oczekiwany kod wyjścia: 0
  3. runkret run . --policy host-policy.json --data {DATA}Katalog: project · Oczekiwany kod wyjścia: 0

Wyniki zapisane w pakiecie źródłowym

To dowód z eksportu, nie wynik bieżącego wykonania w przeglądarce.

# EXPECTED_OUTPUT — KRETS-A03-TestsAndDiagnostics
# Rzeczywisty wynik uruchomienia (SDK 1.0.0-rc.3+kret.local.3, 2026-11-01T12:46:38Z). Ścieżki zastąpione znacznikami <project>, <data>, <out>, <sdk>.
# Actual output of the run. Paths replaced by placeholders.

### 1. test-list  (exit 0, PASS)
> kret test . --list
unit/MainTests.testClampInside  <project>\Tests\MainTests.krs(3)
unit/MainTests.testClampEdges  <project>\Tests\MainTests.krs(9)
unit/MainTests.testSkippedOnPurpose  <project>\Tests\MainTests.krs(15)
LISTED: 3 test(ów) — PASS 0, FAIL 0, SKIP 0, NOT_RUN 3, ERROR 0 (0.1 s)

### 2. test-run  (exit 0, PASS)
> kret test . --json --data {DATA} --report {OUT}/report.json --junit {OUT}/junit.xml
{"format":"kret-test/1","project":"<project>","status":"PASSED","startedUtc":"2026-11-01T12:46:37.3811211\u002B00:00","durationMs":256.8,"sdkVersion":"1.0.0-rc.3","listOnly":false,"plugin":{"id":"LOCAL-KPL-KSA2TEST","name":"TestsAndDiagnostics","version":"1.0.0"},"policy":"none (no permissions)","isolationRequested":"Restricted","isolation":{"level":"Restricted","jobObject":true,"restrictedToken":true,"lowIntegrity":true,"appContainer":false},"counts":{"total":3,"passed":2,"failed":0,"skipped":1,"notRun":0,"errors":0},"tests":[{"id":"unit/MainTests.testClampInside","category":"unit","module":"MainTests","name":"testClampInside","function":"MainTests.testClampInside","file":"<project>\\Tests\\MainTests.krs","line":3,"column":4,"status":"PASS","durationMs":1.04,"instructions":18,"hostCalls":0},{"id":"unit/MainTests.testClampEdges","category":"unit","module":"MainTests","name":"testClampEdges","function":"MainTests.testClampEdges","file":"<project>\\Tests\\MainTests.krs","line":9,"column":4,"status":"PASS","durationMs":0.61,"instructions":32,"hostCalls":0},{"id":"unit/MainTests.testSkippedOnPurpose","category":"unit","module":"MainTests","name":"testSkippedOnPurpose","function":"MainTests.testSkippedOnPurpose","file":"<project>\\Tests\\MainTests.krs","line":15,"column":4,"status":"SKIP","durationMs":3,"message":"przyk\u0142ad pomini\u0119cia testu","trace":["MainTests.testSkippedOnPurpose (Tests/MainTests.krs:16)"],"instructions":2,"hostCalls":0}],"diagnostics":[]}

### 3. run  (exit 0, PASS)
> kret run . --policy host-policy.json --data {DATA}
{
  "broker": {
    "pid": 20332,
    "startupMs": 41.8813,
    "pluginHostSha256": "93405d128c95234d913efcd6e28fe54073caa0375135a2184290f958e7f7cfe5",
    "allowProvisionalRisk": false,
    "memoryIdle": {
      "managedBytes": 1193256,
      "allocatedBytes": 1190616,
      "workingSetBytes": 32575488,
      "privateBytes": 10162176,
      "peakWorkingSetBytes": 32575488,
      "cpuMs": 78.125
    }
  },
  "brokerWithPlugins": {
    "memory": {
      "managedBytes": 1500864,
      "allocatedBytes": 1497840,
      "workingSetBytes": 38723584,
      "privateBytes": 13656064,
      "peakWorkingSetBytes": 38912000,
      "cpuMs": 125
    }
  },
  "plugins": [
    {
      "package": "<project>\\Build",
      "admitted": true,
      "startMs": 136.7051,
      "subject": "LOCAL-KPL-KSA2TEST",
      "instance": "01a19725-c78e-7094-ac72-80777bbce45a",
      "pid": 23072,
      "jobObject": true,
      "isolation": {
        "level": "Restricted",
        "restrictedToken": true,
        "lowIntegrity": true,
        "appContainer": false
      },
      "limits": {
        "profile": "standard",
        "scriptMemoryBytes": 67108864,
        "processMemoryBytes": 201326592,
        "cpuPercent": 25,
        "maxInstructions": 50000000,
        "clamped": []
      },
      "calls": [
        {
          "operation": "start",
          "ok": true,
          "status": "Completed",
          "type": "Int64",
          "value": 100,
          "brokerMs": 10.8023,
          "vmMs": 3.3169,
          "instructions": 15,
          "hostCalls": 0,
          "pluginReportedMemory": {
            "managedBytes": 748056,
            "allocatedBytes": 745968,
            "workingSetBytes": 31944704,
            "privateBytes": 11075584,
            "peakWorkingSetBytes": 32292864,
            "cpuMs": 78.125
          }
        },
        {
          "operation": "shutdown",
          "ok": true,
          "status": "Completed",
          "type": "Unit",
          "value": null,
          "brokerMs": 0.4965,
          "vmMs": 0.0048,
          "instructions": 1,
          "hostCalls": 0,
          "pluginReportedMemory": {
            "managedBytes": 756280,
            "allocatedBytes": 754168,
            "workingSetBytes": 32083968,
            "privateBytes": 11091968,
            "peakWorkingSetBytes": 32292864,
            "cpuMs": 78.125
          }
        }
      ],
      "processMemoryMeasuredByBroker": {
        "workingSetBytes": 32071680,
        "privateBytes": 11091968,
        "peakWorkingSetBytes": 32292864,
        "cpuMs": 93.75
      },
      "summary": {
        "exitCode": 0,
        "killed": false,
        "hostCalls": 0,
        "denials": 0,
        "peakCommitBytes": 11911168,
        "log": []
      }
    }
  ],
  "brokerAfterClose": {
    "memory": {
      "managedBytes": 567552,
      "allocatedBytes": 1497840,
      "workingSetBytes": 39792640,
      "privateBytes": 14376960,
      "peakWorkingSetBytes": 39792640,
      "cpuMs": 140.625
    }
  },
  "audit": {
    "entries": 10,
    "denials": 0,
    "grantsIssued": 0,
    "denied": []
  },
  "exitCode": 0
}


Czytanie kodu linia po linii

Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.

  1. # EXPECTED_OUTPUT — KRETS-A03-TestsAndDiagnosticsOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  2. # Rzeczywisty wynik uruchomienia (SDK 1.0.0-rc.3+kret.local.3, 2026-11-01T12:46:38Z). Ścieżki zastąpione znacznikami <project>, <data>, <out>, <sdk>.Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  3. # Actual output of the run. Paths replaced by placeholders.Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  4. Pusta linia oddziela fragmenty źródła.
  5. ### 1. test-list (exit 0, PASS)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  6. > kret test . --listOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  7. unit/MainTests.testClampInside <project>\Tests\MainTests.krs(3)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  8. unit/MainTests.testClampEdges <project>\Tests\MainTests.krs(9)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  9. unit/MainTests.testSkippedOnPurpose <project>\Tests\MainTests.krs(15)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  10. LISTED: 3 test(ów) — PASS 0, FAIL 0, SKIP 0, NOT_RUN 3, ERROR 0 (0.1 s)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  11. Pusta linia oddziela fragmenty źródła.
  12. ### 2. test-run (exit 0, PASS)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  13. > kret test . --json --data {DATA} --report {OUT}/report.json --junit {OUT}/junit.xmlOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  14. {"format":"kret-test/1","project":"<project>","status":"PASSED","startedUtc":"2026-11-01T12:46:37.3811211\u002B00:00","durationMs":256.8,"sdkVersion":"1.0.0-rc.3","listOnly":false,"plugin":{"id":"LOCAL-KPL-KSA2TEST","name":"TestsAndDiagnostics","version":"1.0.0"},"policy":"none (no permissions)","isolationRequested":"Restricted","isolation":{"level":"Restricted","jobObject":true,"restrictedToken":true,"lowIntegrity":true,"appContainer":false},"counts":{"total":3,"passed":2,"failed":0,"skipped":1,"notRun":0,"errors":0},"tests":[{"id":"unit/MainTests.testClampInside","category":"unit","module":"MainTests","name":"testClampInside","function":"MainTests.testClampInside","file":"<project>\\Tests\\MainTests.krs","line":3,"column":4,"status":"PASS","durationMs":1.04,"instructions":18,"hostCalls":0},{"id":"unit/MainTests.testClampEdges","category":"unit","module":"MainTests","name":"testClampEdges","function":"MainTests.testClampEdges","file":"<project>\\Tests\\MainTests.krs","line":9,"column":4,"status":"PASS","durationMs":0.61,"instructions":32,"hostCalls":0},{"id":"unit/MainTests.testSkippedOnPurpose","category":"unit","module":"MainTests","name":"testSkippedOnPurpose","function":"MainTests.testSkippedOnPurpose","file":"<project>\\Tests\\MainTests.krs","line":15,"column":4,"status":"SKIP","durationMs":3,"message":"przyk\u0142ad pomini\u0119cia testu","trace":["MainTests.testSkippedOnPurpose (Tests/MainTests.krs:16)"],"instructions":2,"hostCalls":0}],"diagnostics":[]}Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  15. Pusta linia oddziela fragmenty źródła.
  16. ### 3. run (exit 0, PASS)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  17. > kret run . --policy host-policy.json --data {DATA}Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  18. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  19. "broker": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  20. "pid": 20332,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  21. "startupMs": 41.8813,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  22. "pluginHostSha256": "93405d128c95234d913efcd6e28fe54073caa0375135a2184290f958e7f7cfe5",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  23. "allowProvisionalRisk": false,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  24. "memoryIdle": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  25. "managedBytes": 1193256,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  26. "allocatedBytes": 1190616,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  27. "workingSetBytes": 32575488,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  28. "privateBytes": 10162176,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  29. "peakWorkingSetBytes": 32575488,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  30. "cpuMs": 78.125Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  31. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  32. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  33. "brokerWithPlugins": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  34. "memory": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  35. "managedBytes": 1500864,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  36. "allocatedBytes": 1497840,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  37. "workingSetBytes": 38723584,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  38. "privateBytes": 13656064,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  39. "peakWorkingSetBytes": 38912000,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  40. "cpuMs": 125Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  41. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  42. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  43. "plugins": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  44. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  45. "package": "<project>\\Build",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  46. "admitted": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  47. "startMs": 136.7051,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  48. "subject": "LOCAL-KPL-KSA2TEST",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  49. "instance": "01a19725-c78e-7094-ac72-80777bbce45a",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  50. "pid": 23072,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  51. "jobObject": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  52. "isolation": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  53. "level": "Restricted",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  54. "restrictedToken": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  55. "lowIntegrity": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  56. "appContainer": falsePole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  57. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  58. "limits": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  59. "profile": "standard",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  60. "scriptMemoryBytes": 67108864,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  61. "processMemoryBytes": 201326592,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  62. "cpuPercent": 25,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  63. "maxInstructions": 50000000,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  64. "clamped": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  65. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  66. "calls": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  67. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  68. "operation": "start",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  69. "ok": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  70. "status": "Completed",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  71. "type": "Int64",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  72. "value": 100,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  73. "brokerMs": 10.8023,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  74. "vmMs": 3.3169,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  75. "instructions": 15,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  76. "hostCalls": 0,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  77. "pluginReportedMemory": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  78. "managedBytes": 748056,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  79. "allocatedBytes": 745968,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  80. "workingSetBytes": 31944704,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  81. "privateBytes": 11075584,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  82. "peakWorkingSetBytes": 32292864,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  83. "cpuMs": 78.125Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  84. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  85. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  86. {Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
  87. "operation": "shutdown",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  88. "ok": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  89. "status": "Completed",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  90. "type": "Unit",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  91. "value": null,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  92. "brokerMs": 0.4965,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  93. "vmMs": 0.0048,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  94. "instructions": 1,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  95. "hostCalls": 0,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  96. "pluginReportedMemory": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  97. "managedBytes": 756280,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  98. "allocatedBytes": 754168,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  99. "workingSetBytes": 32083968,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  100. "privateBytes": 11091968,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  101. "peakWorkingSetBytes": 32292864,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  102. "cpuMs": 78.125Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  103. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  104. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  105. ],Zamknięcie struktury otwartej we wcześniejszych liniach.
  106. "processMemoryMeasuredByBroker": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  107. "workingSetBytes": 32071680,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  108. "privateBytes": 11091968,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  109. "peakWorkingSetBytes": 32292864,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  110. "cpuMs": 93.75Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  111. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  112. "summary": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  113. "exitCode": 0,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  114. "killed": false,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  115. "hostCalls": 0,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  116. "denials": 0,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  117. "peakCommitBytes": 11911168,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  118. "log": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  119. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  120. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  121. ],Zamknięcie struktury otwartej we wcześniejszych liniach.
  122. "brokerAfterClose": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  123. "memory": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  124. "managedBytes": 567552,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  125. "allocatedBytes": 1497840,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  126. "workingSetBytes": 39792640,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  127. "privateBytes": 14376960,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  128. "peakWorkingSetBytes": 39792640,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  129. "cpuMs": 140.625Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  130. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  131. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  132. "audit": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  133. "entries": 10,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  134. "denials": 0,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  135. "grantsIssued": 0,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  136. "denied": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  137. },Zamknięcie struktury otwartej we wcześniejszych liniach.
  138. "exitCode": 0Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.
  139. }Zamknięcie struktury otwartej we wcześniejszych liniach.
  140. Pusta linia oddziela fragmenty źródła.
  141. Pusta linia oddziela fragmenty źródła.
Diagnostyka i raporty testów

null
Czytanie kodu linia po linii

Objaśnienia struktury nie są walidacją semantyczną. Szczegółowy kontrakt opisują referencje i README przykładu.

  1. nullOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.
Pochodzenie i integralność

KRET_LANGUAGE_KRETS.zip:KretS/Examples/ADVANCED_TestsAndDiagnostics/example.json

02_PLAYGROUND/EXAMPLES/KRETS-A03-TestsAndDiagnostics.json
SHA-256 75172B1895066066C0C4B0665607104C079C4EBE2ECC60CF217318815B17379F

Materiały źródłowe do tego tematu

Przeczytaj powiązane rozdziały. Kod i kontrakty zachowano z importu; historia źródeł jest dostępna przy każdym rozdziale.

KRETS-A03-TestsAndDiagnostics — Testy `kret test` i diagnostyka (EXPERIMENTAL)

KRETS-A03-TestsAndDiagnostics — Testy kret test i diagnostyka (EXPERIMENTAL)

🇬🇧 English version below.
PoleWartość
TechnologiaKretS
PoziomADVANCED
KlasyfikacjaRUNNABLE_LOCAL — Uruchamialny lokalnie (SDK, izolowany proces pluginu)
PlaygroundLOCAL_EXECUTE — lokalnie: wykonanie w KretStudio / SDK (publicznie: tylko statycznie)
SDK1.0.0-rc.3+kret.local.3 (kandydat lokalny, niepodpisany)
Wynik testuTEST_RESULTS.json, rzeczywisty wynik: EXPECTED_OUTPUT.txt

Co pokazuje

Moduły testowe w Tests/ (funkcje test… bez parametrów i bez wyniku). Porażka = throw, pominięcie = throw "SKIP: …". kret test --list tylko kompiluje i wypisuje plan, kret test --json wykonuje każdy moduł w świeżym, izolowanym procesie pluginu. kret test ma status EXPERIMENTAL (kret-test/1).

Pliki

Plik
Script/Main.krs
Tests/MainTests.krs
host-policy.json
plugin.kretl

Jak uruchomić

Katalog roboczy: katalog tego przykładu. kret oznacza <SDK>\Compiler\kret.exe, kretui-host — <SDK>\UiHost\kretui-host.exe. {DATA} / {OUT} to nowe, puste katalogi poza projektem. Wymagania: REQUIREMENTS.md.

  1. kret test . --list — plan testów (nic nie jest uruchamiane)
  2. kret test . --json --data {DATA} --report {OUT}/report.json --junit {OUT}/junit.xml — wykonanie testów, raport JSON i JUnit
  3. kret run . --policy host-policy.json --data {DATA} — zwykłe uruchomienie (moduły Tests/ nie trafiają do paczki)

Oczekiwany wynik

Plan zawiera 3 testy; przebieg: 2 × PASS, 1 × SKIP, status PASSED (kod 0). run zwraca 100.

Najczęstszy błąd

Funkcja testX(x: Int) z parametrem nie jest testem — dostaje status ERROR. Brak testów albo pusty filtr to NO_TESTS (kod 6), który nie jest sukcesem.

Otwórz cały rozdział ze źródłem →

Zaloguj się na konto użytkownika, aby zapisywać postęp i zakładki. Konta obsługi mogą czytać bez zapisu postępu. Logowanie →

Wybierz, co możemy zapamiętać w tej przeglądarce. Możesz zmienić decyzję w każdej chwili.

Polityka prywatności