Core and the app · crate
kinogaki-harness
Studio's test harness: the real editor, its event routing and its background work, driven offscreen with only the packages a test names.
- Repository
- Core and the app (kinogaki/studio-core)
- Folder
studio/core/harness- Source
- 11 files, 1,586 lines
- Tests
- 0 files, 0 lines
What it is
Studio's test harness: the real editor, its event routing and its background work, driven offscreen with only the packages a test names. It is read through the SDK's host interface and plain values, never through the editor's parts, so a test checks what a user or a package would see; core's tests and every plugin's use it.
One selection a process. Installed packages are the process's (core installs a package once and never unloads it). Harness::start in a process made for its selection returns the harness; in any other it runs the calling test again in a child process with that selection, waits for it, and returns None, so the test returns at once. Children run one at a time.
Nothing escapes. The settings live in a folder of the harness's own under the system's temporary folder; no file dialog or window shows (dialogs wait for Harness::answer_dialog); the system clipboard is the harness's own (Harness::clipboard); the GPU is used only when a test grabs a frame's pixels.
Depends on
| Crate | Repository | As | What it is |
|---|---|---|---|
kinogaki-editor | Core and the app | normal | Kinogaki Studio's editor: the document and everything the window shows of it, as parts one frame borrows one by one. |
kinogaki-network | Core and the app | normal | Studio's core networks (design: core-owned networks; "Cooking DAG for nodes is studio core"). |
kinogaki-png | lib-image | normal | PNG images (ISO/IEC 15948, W3C PNG Third Edition) over kinogaki_deflate. |
kinogaki-render-api | SDK | normal | Kinogaki's render interface: what a host (Studio) sends a render engine and what comes back, with no GPU or OS API. |
kinogaki-spans | Core and the app | normal | Timed spans of Studio's own work: where a frame, a cook or a render sync spends its time, without an instrumented build. |
kinogaki-studio-api | SDK | normal | Kinogaki Studio's headless plugin API. |
kinogaki-studio-api-testing | SDK | normal | The SDK's test support (a dev-dependency only): assert_refused for admission tests, read_hostile for a format's tests of hostile files, format for its scratch folders and round trips, workers as a host installs them, with wgpu an ... |
kinogaki-studio-ui-api | SDK | normal | Kinogaki Studio's UI layer for plugins. |
kinogaki-testkit | Core and the app | normal | Kinogaki Studio's core testkit: toy packages written against the SDK alone, so core is tested with no real plugin. |
kinogaki-ui | lib-ui | normal | Kinogaki UI: the immediate-mode UI framework Kinogaki applications are built on. |
kinogaki-ui-wgpu | lib-ui | normal | kinogaki-ui drawn with wgpu. |
Third-party
None.
Used by
| Crate | Repository | As | What it is |
|---|---|---|---|
kinogaki-comp | Comp | tests | Comp as an SDK package (kinogaki.comp): what fills Studio's Comp context (kinogaki.core.comp, core declares it, inside a Render Output object). |
kinogaki-editor | Core and the app | tests | Kinogaki Studio's editor: the document and everything the window shows of it, as parts one frame borrows one by one. |
kinogaki-layout | Layout | tests | The Layout context: a page on the 2D canvas and the pieces arranged on it, images and text, back to front in the order their nodes run. |
kinogaki-mesh | Mesh | tests | The Mesh plugin: polygon modelling, Maya's and Houdini's toolset on core's editing API (plugins/mesh/PLAN.md holds the inventory and its groups). |
kinogaki-spectre | Spectre | tests | Spectre, the spectral path tracer, as a Kinogaki Studio render plugin. |
kinogaki-workflows | Workflows | tests | Tests alone: tests/workflows drives what a person does across the plugins the app ships, through the real editor offscreen. |
Modules
captures(private)Frames drawn on a native GPU, captured as pixels, and how long the UI took.73 linescounts(private)What a test counts of the editor's work: the inspector's sheets made, the Settings window's key stores made (and whether it is open).45 linesfiles(private)Files as the harness drives them: opening, saving, a new document, what the editor holds of them, and the settings file.69 linesinput(private)Input as a user gives it: keys, clicks, drags and typing, each in frames of its own, and the clipboard they copy to.185 lineslatencyThe latency runner's side: a workload's report in theKINOGAKI_LATENCYcontracttools/latency.pyreads, oneLATENCYline on stderr a workload (the reference bced4430's format, so pairs compare line by line), and the timing helpers workloads share.94 linesplaces(private)Where things drew in the last frame (items, panes, rows, nodes), the panes' readouts and choosing from them.132 linesreferencesImages checked against the references a repository keeps (tests/references/<name>.pngbeside the test), or written as them withKINOGAKI_BLESS=1.42 linesrender(private)Rendering as a test drives it: Render views, final renders and their progress, where engines keep their caches.37 linesrepaints(private)The window's event loop, offscreen: a frame runs when the UI asks for one (now, or after a delay) or a worker wakes the window, as the application's shell schedules them; never on a timer.161 linesviews(private)The views and the status line as the last frame drew them: Render views, display options, levels, elements, menus over a view and the work a view and a cook did.228 lines
Public types and traits
At the crate root
Structs HarnessRepaintsRowSelection
Re-exported from other crates
From kinogaki_editor drive::Askingdrive::Canvasdrive::Consoledrive::ConsoleLinedrive::CookWorkdrive::Displaydrive::DrawnPiecedrive::LevelRowdrive::Lookingdrive::Markeddrive::MarkingMenudrive::MenuItemdrive::NetworkPanedrive::Outlinerdrive::Overdrive::PaneNodedrive::Placementdrive::SheetReadsdrive::Shelfdrive::ShelfTiledrive::Spreadsheetdrive::StatusLinedrive::TabBrowserdrive::Tiledrive::Timelinedrive::ViewWorkdrive::Work
From kinogaki_studio_api ElementKind
From kinogaki_ui EventKeyModifiersPointerButtonPos2RectVec2pos2vec2
By module: 2 public types and traits in 2 modules
latency Report
repaints Repaints
Besides these, 11 public functions at module level.
