KRET LANGUAGE ACADEMY · DOKUMENTACJA ZE ŹRÓDEŁ
Testy `kret test` i diagnostyka (EXPERIMENTAL)
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`).
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.
module MainDeklaracja modułu KretS; porównaj nazwę z nazwą pliku.Pusta linia oddziela fragmenty źródła.fn clamp(value: Int, low: Int, high: Int) -> Int {Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.if value < low {Sterowanie lub obsługa błędu KretS; szczegóły określa referencja tej konstrukcji.return lowZwrócenie wartości z funkcji; nie jest zapisem do dziennika.}Zamknięcie struktury otwartej we wcześniejszych liniach.if value > high {Sterowanie lub obsługa błędu KretS; szczegóły określa referencja tej konstrukcji.return highZwrócenie wartości z funkcji; nie jest zapisem do dziennika.}Zamknięcie struktury otwartej we wcześniejszych liniach.return valueZwrócenie wartości z funkcji; nie jest zapisem do dziennika.}Zamknięcie struktury otwartej we wcześniejszych liniach.Pusta linia oddziela fragmenty źródła.fn Start() -> Int {Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.return clamp(150, 0, 100)Zwrócenie wartości z funkcji; nie jest zapisem do dziennika.}Zamknięcie struktury otwartej we wcześniejszych liniach.Pusta linia oddziela fragmenty źródła.fn Shutdown() {Sygnatura funkcji: nazwa, argumenty i ewentualny typ wyniku.}Zamknięcie struktury otwartej we wcześniejszych liniach.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.
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.
- test-list
kret test . --listKatalog: project · Oczekiwany kod wyjścia: 0 - test-run
kret test . --json --data {DATA} --report {OUT}/report.json --junit {OUT}/junit.xmlKatalog: project · Oczekiwany kod wyjścia: 0 - run
kret 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.
# EXPECTED_OUTPUT — KRETS-A03-TestsAndDiagnosticsOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.# 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.# Actual output of the run. Paths replaced by placeholders.Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.Pusta linia oddziela fragmenty źródła.### 1. test-list (exit 0, PASS)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.> kret test . --listOdczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.unit/MainTests.testClampInside <project>\Tests\MainTests.krs(3)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.unit/MainTests.testClampEdges <project>\Tests\MainTests.krs(9)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.unit/MainTests.testSkippedOnPurpose <project>\Tests\MainTests.krs(15)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.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.Pusta linia oddziela fragmenty źródła.### 2. test-run (exit 0, PASS)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.> 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.{"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.Pusta linia oddziela fragmenty źródła.### 3. run (exit 0, PASS)Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.> kret run . --policy host-policy.json --data {DATA}Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."broker": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."pid": 20332,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."startupMs": 41.8813,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."pluginHostSha256": "93405d128c95234d913efcd6e28fe54073caa0375135a2184290f958e7f7cfe5",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."allowProvisionalRisk": false,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."memoryIdle": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."managedBytes": 1193256,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."allocatedBytes": 1190616,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."workingSetBytes": 32575488,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."privateBytes": 10162176,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."peakWorkingSetBytes": 32575488,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."cpuMs": 78.125Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.},Zamknięcie struktury otwartej we wcześniejszych liniach."brokerWithPlugins": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."memory": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."managedBytes": 1500864,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."allocatedBytes": 1497840,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."workingSetBytes": 38723584,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."privateBytes": 13656064,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."peakWorkingSetBytes": 38912000,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."cpuMs": 125Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.},Zamknięcie struktury otwartej we wcześniejszych liniach."plugins": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."package": "<project>\\Build",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."admitted": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."startMs": 136.7051,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."subject": "LOCAL-KPL-KSA2TEST",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."instance": "01a19725-c78e-7094-ac72-80777bbce45a",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."pid": 23072,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."jobObject": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."isolation": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."level": "Restricted",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."restrictedToken": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."lowIntegrity": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."appContainer": falsePole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach."limits": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."profile": "standard",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."scriptMemoryBytes": 67108864,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."processMemoryBytes": 201326592,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."cpuPercent": 25,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."maxInstructions": 50000000,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."clamped": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach."calls": [Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."operation": "start",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."ok": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."status": "Completed",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."type": "Int64",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."value": 100,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."brokerMs": 10.8023,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."vmMs": 3.3169,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."instructions": 15,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."hostCalls": 0,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."pluginReportedMemory": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."managedBytes": 748056,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."allocatedBytes": 745968,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."workingSetBytes": 31944704,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."privateBytes": 11075584,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."peakWorkingSetBytes": 32292864,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."cpuMs": 78.125Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.},Zamknięcie struktury otwartej we wcześniejszych liniach.{Odczytaj tę linię w kontekście otaczającego bloku i objaśnień autora poniżej."operation": "shutdown",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."ok": true,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."status": "Completed",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."type": "Unit",Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."value": null,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."brokerMs": 0.4965,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."vmMs": 0.0048,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."instructions": 1,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."hostCalls": 0,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."pluginReportedMemory": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."managedBytes": 756280,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."allocatedBytes": 754168,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."workingSetBytes": 32083968,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."privateBytes": 11091968,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."peakWorkingSetBytes": 32292864,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."cpuMs": 78.125Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.}Zamknięcie struktury otwartej we wcześniejszych liniach.],Zamknięcie struktury otwartej we wcześniejszych liniach."processMemoryMeasuredByBroker": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."workingSetBytes": 32071680,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."privateBytes": 11091968,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."peakWorkingSetBytes": 32292864,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."cpuMs": 93.75Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach."summary": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."exitCode": 0,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."killed": false,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."hostCalls": 0,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."denials": 0,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."peakCommitBytes": 11911168,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."log": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.}Zamknięcie struktury otwartej we wcześniejszych liniach.],Zamknięcie struktury otwartej we wcześniejszych liniach."brokerAfterClose": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."memory": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."managedBytes": 567552,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."allocatedBytes": 1497840,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."workingSetBytes": 39792640,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."privateBytes": 14376960,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."peakWorkingSetBytes": 39792640,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."cpuMs": 140.625Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.},Zamknięcie struktury otwartej we wcześniejszych liniach."audit": {Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."entries": 10,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."denials": 0,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."grantsIssued": 0,Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku."denied": []Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.},Zamknięcie struktury otwartej we wcześniejszych liniach."exitCode": 0Pole danych JSON; znaczenie wynika z wersjonowanego schematu pliku.}Zamknięcie struktury otwartej we wcześniejszych liniach.Pusta linia oddziela fragmenty źródła.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.
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 75172B1895066066C0C4B0665607104C079C4EBE2ECC60CF217318815B17379FMateriał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.
| Pole | Wartość |
|---|---|
| Technologia | KretS |
| Poziom | ADVANCED |
| Klasyfikacja | RUNNABLE_LOCAL — Uruchamialny lokalnie (SDK, izolowany proces pluginu) |
| Playground | LOCAL_EXECUTE — lokalnie: wykonanie w KretStudio / SDK (publicznie: tylko statycznie) |
| SDK | 1.0.0-rc.3+kret.local.3 (kandydat lokalny, niepodpisany) |
| Wynik testu | TEST_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.
kret test . --list— plan testów (nic nie jest uruchamiane)kret test . --json --data {DATA} --report {OUT}/report.json --junit {OUT}/junit.xml— wykonanie testów, raport JSON i JUnitkret run . --policy host-policy.json --data {DATA}— zwykłe uruchomienie (modułyTests/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.
Zaloguj się na konto użytkownika, aby zapisywać postęp i zakładki. Konta obsługi mogą czytać bez zapisu postępu. Logowanie →