pub struct UserConfig {
pub experimental: BTreeSet<UserConfigExperimental>,
pub ui: UiConfig,
pub record: RecordConfig,
}Expand description
User configuration after custom settings and overrides have been applied.
Fields§
§experimental: BTreeSet<UserConfigExperimental>Experimental features enabled (from config and environment variables).
ui: UiConfigResolved UI configuration.
record: RecordConfigResolved record configuration.
Implementations§
Source§impl UserConfig
impl UserConfig
Sourcepub const SCHEMA: &'static str = "{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"DeserializedUserConfig\",\n \"description\": \"Per-user nextest configuration.\\n\\nStores personal preferences such as UI defaults and recording behavior.\\nThis is distinct from the repository config (`.config/nextest.toml`),\\nwhich controls test execution.\\n\\nSee [_User configuration reference_](https://nexte.st/docs/user-config/reference)\\nfor details on each setting.\",\n \"type\": \"object\",\n \"properties\": {\n \"experimental\": {\n \"description\": \"Toggles for experimental, non-stable features.\",\n \"$ref\": \"#/$defs/ExperimentalConfig\"\n },\n \"overrides\": {\n \"description\": \"Platform-specific overrides applied on top of `[ui]` and `[record]`.\\nThe first matching override per setting wins.\",\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/DeserializedOverride\"\n }\n },\n \"record\": {\n \"description\": \"Retention settings for the record-replay-rerun feature.\",\n \"$ref\": \"#/$defs/DeserializedRecordConfig\"\n },\n \"ui\": {\n \"description\": \"Display, progress, and pager settings.\",\n \"$ref\": \"#/$defs/DeserializedUiConfig\"\n }\n },\n \"additionalProperties\": false,\n \"x-tombi-toml-version\": \"v1.1.0\",\n \"$defs\": {\n \"CommandNameAndArgs\": {\n \"title\": \"CommandNameAndArgs\",\n \"oneOf\": [\n {\n \"type\": \"string\",\n \"minLength\": 1,\n \"pattern\": \"\\\\S\"\n },\n {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"minItems\": 1\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"command\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"minItems\": 1\n },\n \"env\": {\n \"type\": \"object\",\n \"additionalProperties\": {\n \"type\": \"string\"\n }\n }\n },\n \"additionalProperties\": false,\n \"required\": [\n \"command\"\n ]\n }\n ]\n },\n \"DeserializedOverride\": {\n \"description\": \"A single platform-specific override entry.\",\n \"type\": \"object\",\n \"properties\": {\n \"platform\": {\n \"description\": \"Target-spec expression selecting which platforms this override applies\\nto (target triple or `cfg()` expression). Matched against the platform\\nnextest was built for.\",\n \"type\": \"string\"\n },\n \"record\": {\n \"description\": \"Record retention settings substituted on matching platforms.\",\n \"$ref\": \"#/$defs/DeserializedRecordOverrideData\"\n },\n \"ui\": {\n \"description\": \"UI settings substituted on matching platforms.\",\n \"$ref\": \"#/$defs/DeserializedUiOverrideData\"\n }\n },\n \"additionalProperties\": false,\n \"required\": [\n \"platform\"\n ]\n },\n \"DeserializedRecordConfig\": {\n \"description\": \"Retention settings for the record-replay-rerun feature.\\n\\nRecording happens only when the `record` experimental feature is enabled\\nand `enabled` here is true. The least-recently-used runs are evicted to\\nkeep within `max-records`, `max-total-size`, and `max-age`.\",\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"description\": \"Whether to record test runs. Has no effect unless `[experimental]\\nrecord = true`.\",\n \"type\": [\n \"boolean\",\n \"null\"\n ],\n \"default\": null\n },\n \"max-age\": {\n \"description\": \"Maximum age of a recorded run before eviction (e.g. `\\\"30d\\\"`).\",\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"default\": null\n },\n \"max-output-size\": {\n \"description\": \"Maximum size of a single captured stdout or stderr stream before\\ntruncation (e.g. `\\\"10MB\\\"`).\",\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"default\": null\n },\n \"max-records\": {\n \"description\": \"Maximum number of recorded runs to retain before eviction.\",\n \"type\": [\n \"integer\",\n \"null\"\n ],\n \"format\": \"uint\",\n \"default\": null,\n \"minimum\": 0\n },\n \"max-total-size\": {\n \"description\": \"Maximum combined size of all retained recordings before eviction (e.g.\\n`\\\"1GB\\\"`).\",\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"default\": null\n }\n },\n \"additionalProperties\": false\n },\n \"DeserializedRecordOverrideData\": {\n \"description\": \"Per-platform substitutions for `[record]` settings.\\n\\nEach field has the same meaning as in the `[record]` table. Only the\\nfields actually set here are substituted on matching platforms.\",\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"description\": \"Whether to record test runs. Has no effect unless `[experimental]\\nrecord = true`.\",\n \"type\": [\n \"boolean\",\n \"null\"\n ],\n \"default\": null\n },\n \"max-age\": {\n \"description\": \"Maximum age of a recorded run before eviction (e.g. `\\\"30d\\\"`).\",\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"default\": null\n },\n \"max-output-size\": {\n \"description\": \"Maximum size of a single captured stdout or stderr stream before\\ntruncation (e.g. `\\\"10MB\\\"`).\",\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"default\": null\n },\n \"max-records\": {\n \"description\": \"Maximum number of recorded runs to retain before eviction.\",\n \"type\": [\n \"integer\",\n \"null\"\n ],\n \"format\": \"uint\",\n \"default\": null,\n \"minimum\": 0\n },\n \"max-total-size\": {\n \"description\": \"Maximum combined size of all retained recordings before eviction (e.g.\\n`\\\"1GB\\\"`).\",\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"default\": null\n }\n },\n \"additionalProperties\": false\n },\n \"DeserializedStreampagerConfig\": {\n \"description\": \"Settings for nextest\'s builtin pager (active when `pager = \\\":builtin\\\"`).\",\n \"type\": \"object\",\n \"properties\": {\n \"interface\": {\n \"description\": \"How the builtin pager uses the alternate screen and when it exits.\",\n \"anyOf\": [\n {\n \"$ref\": \"#/$defs/StreampagerInterface\"\n },\n {\n \"type\": \"null\"\n }\n ]\n },\n \"show-ruler\": {\n \"description\": \"Whether to show a ruler at the bottom of the builtin pager.\",\n \"type\": [\n \"boolean\",\n \"null\"\n ]\n },\n \"wrapping\": {\n \"description\": \"How the builtin pager wraps long lines.\",\n \"anyOf\": [\n {\n \"$ref\": \"#/$defs/StreampagerWrapping\"\n },\n {\n \"type\": \"null\"\n }\n ]\n }\n },\n \"additionalProperties\": false\n },\n \"DeserializedUiConfig\": {\n \"description\": \"Display, progress, and pager settings.\",\n \"type\": \"object\",\n \"properties\": {\n \"input-handler\": {\n \"description\": \"Enables the interactive keyboard input handler (e.g. `t` to dump test\\nstatus, `Enter` to print a summary line).\",\n \"type\": [\n \"boolean\",\n \"null\"\n ]\n },\n \"max-progress-running\": {\n \"description\": \"Maximum number of running tests to list in the progress bar.\\n\\nAccepts a non-negative integer, or `\\\"infinite\\\"` for no limit. Excess\\nrunning tests are collapsed into a summary line.\",\n \"anyOf\": [\n {\n \"$ref\": \"#/$defs/MaxProgressRunning\"\n },\n {\n \"type\": \"null\"\n }\n ]\n },\n \"output-indent\": {\n \"description\": \"Indents captured test output for visual clarity.\",\n \"type\": [\n \"boolean\",\n \"null\"\n ]\n },\n \"pager\": {\n \"description\": \"Pager command to use for output that benefits from scrolling. Use\\n`\\\":builtin\\\"` to select nextest\'s builtin pager.\",\n \"anyOf\": [\n {\n \"$ref\": \"#/$defs/PagerSetting\"\n },\n {\n \"type\": \"null\"\n }\n ]\n },\n \"paginate\": {\n \"description\": \"When to send output through the pager.\",\n \"anyOf\": [\n {\n \"$ref\": \"#/$defs/PaginateSetting\"\n },\n {\n \"type\": \"null\"\n }\n ]\n },\n \"show-progress\": {\n \"description\": \"Style of progress display shown during test runs.\",\n \"anyOf\": [\n {\n \"$ref\": \"#/$defs/UiShowProgress\"\n },\n {\n \"type\": \"null\"\n }\n ]\n },\n \"streampager\": {\n \"description\": \"Settings for the builtin pager (active when `pager = \\\":builtin\\\"`).\",\n \"$ref\": \"#/$defs/DeserializedStreampagerConfig\"\n }\n },\n \"additionalProperties\": false\n },\n \"DeserializedUiOverrideData\": {\n \"description\": \"Per-platform substitutions for `[ui]` settings.\\n\\nEach field has the same meaning as in the `[ui]` table. Only the fields\\nactually set here are substituted on matching platforms.\",\n \"type\": \"object\",\n \"properties\": {\n \"input-handler\": {\n \"description\": \"Enables the interactive keyboard input handler (e.g. `t` to dump test\\nstatus, `Enter` to print a summary line).\",\n \"type\": [\n \"boolean\",\n \"null\"\n ]\n },\n \"max-progress-running\": {\n \"description\": \"Maximum number of running tests to list in the progress bar.\\n\\nAccepts a non-negative integer, or `\\\"infinite\\\"` for no limit. Excess\\nrunning tests are collapsed into a summary line.\",\n \"anyOf\": [\n {\n \"$ref\": \"#/$defs/MaxProgressRunning\"\n },\n {\n \"type\": \"null\"\n }\n ]\n },\n \"output-indent\": {\n \"description\": \"Indents captured test output for visual clarity.\",\n \"type\": [\n \"boolean\",\n \"null\"\n ]\n },\n \"pager\": {\n \"description\": \"Pager command to use for output that benefits from scrolling. Use\\n`\\\":builtin\\\"` to select nextest\'s builtin pager.\",\n \"anyOf\": [\n {\n \"$ref\": \"#/$defs/PagerSetting\"\n },\n {\n \"type\": \"null\"\n }\n ]\n },\n \"paginate\": {\n \"description\": \"When to send output through the pager.\",\n \"anyOf\": [\n {\n \"$ref\": \"#/$defs/PaginateSetting\"\n },\n {\n \"type\": \"null\"\n }\n ]\n },\n \"show-progress\": {\n \"description\": \"Style of progress display shown during test runs.\",\n \"anyOf\": [\n {\n \"$ref\": \"#/$defs/UiShowProgress\"\n },\n {\n \"type\": \"null\"\n }\n ]\n },\n \"streampager\": {\n \"description\": \"Settings for the builtin pager (active when `pager = \\\":builtin\\\"`).\",\n \"$ref\": \"#/$defs/DeserializedStreampagerConfig\"\n }\n },\n \"additionalProperties\": false\n },\n \"ExperimentalConfig\": {\n \"description\": \"Toggles for user-level experimental, non-stable features.\\n\\nConfigured in the `[experimental]` table of the user config file. Unknown\\nkeys here produce a warning rather than an error so that older nextest\\nbinaries can load configs written for newer ones.\",\n \"type\": \"object\",\n \"properties\": {\n \"record\": {\n \"description\": \"Enables the record-replay-rerun feature: stores test run results on\\ndisk for replay or selective rerun.\",\n \"type\": \"boolean\",\n \"default\": false\n }\n }\n },\n \"MaxProgressRunning\": {\n \"title\": \"MaxProgressRunning\",\n \"description\": \"Maximum number of running tests to display: a non-negative integer, or \\\"infinite\\\" for no limit.\",\n \"oneOf\": [\n {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n {\n \"type\": \"string\",\n \"enum\": [\n \"infinite\"\n ]\n }\n ]\n },\n \"PagerSetting\": {\n \"title\": \"PagerSetting\",\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \":builtin\"\n },\n {\n \"$ref\": \"#/$defs/CommandNameAndArgs\"\n }\n ]\n },\n \"PaginateSetting\": {\n \"description\": \"When to send output through the pager.\",\n \"oneOf\": [\n {\n \"description\": \"Pages output from supported commands when stdout is a terminal.\",\n \"type\": \"string\",\n \"const\": \"auto\"\n },\n {\n \"description\": \"Disables pagination entirely.\",\n \"type\": \"string\",\n \"const\": \"never\"\n }\n ]\n },\n \"StreampagerInterface\": {\n \"description\": \"How the builtin pager uses the alternate screen and when it exits.\",\n \"oneOf\": [\n {\n \"description\": \"Exits immediately if the output fits on one page; otherwise switches\\nto full-screen and clears on exit.\",\n \"type\": \"string\",\n \"const\": \"quit-if-one-page\"\n },\n {\n \"description\": \"Always uses full-screen mode and clears the screen on exit.\",\n \"type\": \"string\",\n \"const\": \"full-screen-clear-output\"\n },\n {\n \"description\": \"Waits briefly before entering full-screen mode; clears on exit only if\\nit switched to full-screen.\",\n \"type\": \"string\",\n \"const\": \"quit-quickly-or-clear-output\"\n }\n ]\n },\n \"StreampagerWrapping\": {\n \"description\": \"How long lines are wrapped in the builtin pager.\",\n \"oneOf\": [\n {\n \"description\": \"Disables wrapping; long lines extend off-screen and can be scrolled\\nhorizontally.\",\n \"type\": \"string\",\n \"const\": \"none\"\n },\n {\n \"description\": \"Wraps at word boundaries.\",\n \"type\": \"string\",\n \"const\": \"word\"\n },\n {\n \"description\": \"Wraps at any character (grapheme) boundary.\",\n \"type\": \"string\",\n \"const\": \"anywhere\"\n }\n ]\n },\n \"UiShowProgress\": {\n \"description\": \"Style of progress display shown during test runs.\",\n \"oneOf\": [\n {\n \"description\": \"Picks a display based on terminal capabilities: a progress bar in\\ninteractive terminals, a counter otherwise.\",\n \"type\": \"string\",\n \"const\": \"auto\"\n },\n {\n \"description\": \"Disables progress display entirely.\",\n \"type\": \"string\",\n \"const\": \"none\"\n },\n {\n \"description\": \"Shows a progress bar listing the currently running tests.\",\n \"type\": \"string\",\n \"const\": \"bar\"\n },\n {\n \"description\": \"Shows a single-line counter (e.g. `(1/10)`).\",\n \"type\": \"string\",\n \"const\": \"counter\"\n },\n {\n \"description\": \"Like `bar` in interactive terminals, but additionally hides successful\\ntest output (sets `status-level` to `slow` and `final-status-level` to\\n`none`). Falls back to `auto` in non-interactive contexts (e.g. piped\\noutput, CI).\",\n \"type\": \"string\",\n \"const\": \"only\"\n }\n ]\n }\n }\n}\n"
pub const SCHEMA: &'static str = "{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"title\": \"DeserializedUserConfig\",\n \"description\": \"Per-user nextest configuration.\\n\\nStores personal preferences such as UI defaults and recording behavior.\\nThis is distinct from the repository config (`.config/nextest.toml`),\\nwhich controls test execution.\\n\\nSee [_User configuration reference_](https://nexte.st/docs/user-config/reference)\\nfor details on each setting.\",\n \"type\": \"object\",\n \"properties\": {\n \"experimental\": {\n \"description\": \"Toggles for experimental, non-stable features.\",\n \"$ref\": \"#/$defs/ExperimentalConfig\"\n },\n \"overrides\": {\n \"description\": \"Platform-specific overrides applied on top of `[ui]` and `[record]`.\\nThe first matching override per setting wins.\",\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/DeserializedOverride\"\n }\n },\n \"record\": {\n \"description\": \"Retention settings for the record-replay-rerun feature.\",\n \"$ref\": \"#/$defs/DeserializedRecordConfig\"\n },\n \"ui\": {\n \"description\": \"Display, progress, and pager settings.\",\n \"$ref\": \"#/$defs/DeserializedUiConfig\"\n }\n },\n \"additionalProperties\": false,\n \"x-tombi-toml-version\": \"v1.1.0\",\n \"$defs\": {\n \"CommandNameAndArgs\": {\n \"title\": \"CommandNameAndArgs\",\n \"oneOf\": [\n {\n \"type\": \"string\",\n \"minLength\": 1,\n \"pattern\": \"\\\\S\"\n },\n {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"minItems\": 1\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"command\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"minItems\": 1\n },\n \"env\": {\n \"type\": \"object\",\n \"additionalProperties\": {\n \"type\": \"string\"\n }\n }\n },\n \"additionalProperties\": false,\n \"required\": [\n \"command\"\n ]\n }\n ]\n },\n \"DeserializedOverride\": {\n \"description\": \"A single platform-specific override entry.\",\n \"type\": \"object\",\n \"properties\": {\n \"platform\": {\n \"description\": \"Target-spec expression selecting which platforms this override applies\\nto (target triple or `cfg()` expression). Matched against the platform\\nnextest was built for.\",\n \"type\": \"string\"\n },\n \"record\": {\n \"description\": \"Record retention settings substituted on matching platforms.\",\n \"$ref\": \"#/$defs/DeserializedRecordOverrideData\"\n },\n \"ui\": {\n \"description\": \"UI settings substituted on matching platforms.\",\n \"$ref\": \"#/$defs/DeserializedUiOverrideData\"\n }\n },\n \"additionalProperties\": false,\n \"required\": [\n \"platform\"\n ]\n },\n \"DeserializedRecordConfig\": {\n \"description\": \"Retention settings for the record-replay-rerun feature.\\n\\nRecording happens only when the `record` experimental feature is enabled\\nand `enabled` here is true. The least-recently-used runs are evicted to\\nkeep within `max-records`, `max-total-size`, and `max-age`.\",\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"description\": \"Whether to record test runs. Has no effect unless `[experimental]\\nrecord = true`.\",\n \"type\": [\n \"boolean\",\n \"null\"\n ],\n \"default\": null\n },\n \"max-age\": {\n \"description\": \"Maximum age of a recorded run before eviction (e.g. `\\\"30d\\\"`).\",\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"default\": null\n },\n \"max-output-size\": {\n \"description\": \"Maximum size of a single captured stdout or stderr stream before\\ntruncation (e.g. `\\\"10MB\\\"`).\",\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"default\": null\n },\n \"max-records\": {\n \"description\": \"Maximum number of recorded runs to retain before eviction.\",\n \"type\": [\n \"integer\",\n \"null\"\n ],\n \"format\": \"uint\",\n \"default\": null,\n \"minimum\": 0\n },\n \"max-total-size\": {\n \"description\": \"Maximum combined size of all retained recordings before eviction (e.g.\\n`\\\"1GB\\\"`).\",\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"default\": null\n }\n },\n \"additionalProperties\": false\n },\n \"DeserializedRecordOverrideData\": {\n \"description\": \"Per-platform substitutions for `[record]` settings.\\n\\nEach field has the same meaning as in the `[record]` table. Only the\\nfields actually set here are substituted on matching platforms.\",\n \"type\": \"object\",\n \"properties\": {\n \"enabled\": {\n \"description\": \"Whether to record test runs. Has no effect unless `[experimental]\\nrecord = true`.\",\n \"type\": [\n \"boolean\",\n \"null\"\n ],\n \"default\": null\n },\n \"max-age\": {\n \"description\": \"Maximum age of a recorded run before eviction (e.g. `\\\"30d\\\"`).\",\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"default\": null\n },\n \"max-output-size\": {\n \"description\": \"Maximum size of a single captured stdout or stderr stream before\\ntruncation (e.g. `\\\"10MB\\\"`).\",\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"default\": null\n },\n \"max-records\": {\n \"description\": \"Maximum number of recorded runs to retain before eviction.\",\n \"type\": [\n \"integer\",\n \"null\"\n ],\n \"format\": \"uint\",\n \"default\": null,\n \"minimum\": 0\n },\n \"max-total-size\": {\n \"description\": \"Maximum combined size of all retained recordings before eviction (e.g.\\n`\\\"1GB\\\"`).\",\n \"type\": [\n \"string\",\n \"null\"\n ],\n \"default\": null\n }\n },\n \"additionalProperties\": false\n },\n \"DeserializedStreampagerConfig\": {\n \"description\": \"Settings for nextest\'s builtin pager (active when `pager = \\\":builtin\\\"`).\",\n \"type\": \"object\",\n \"properties\": {\n \"interface\": {\n \"description\": \"How the builtin pager uses the alternate screen and when it exits.\",\n \"anyOf\": [\n {\n \"$ref\": \"#/$defs/StreampagerInterface\"\n },\n {\n \"type\": \"null\"\n }\n ]\n },\n \"show-ruler\": {\n \"description\": \"Whether to show a ruler at the bottom of the builtin pager.\",\n \"type\": [\n \"boolean\",\n \"null\"\n ]\n },\n \"wrapping\": {\n \"description\": \"How the builtin pager wraps long lines.\",\n \"anyOf\": [\n {\n \"$ref\": \"#/$defs/StreampagerWrapping\"\n },\n {\n \"type\": \"null\"\n }\n ]\n }\n },\n \"additionalProperties\": false\n },\n \"DeserializedUiConfig\": {\n \"description\": \"Display, progress, and pager settings.\",\n \"type\": \"object\",\n \"properties\": {\n \"input-handler\": {\n \"description\": \"Enables the interactive keyboard input handler (e.g. `t` to dump test\\nstatus, `Enter` to print a summary line).\",\n \"type\": [\n \"boolean\",\n \"null\"\n ]\n },\n \"max-progress-running\": {\n \"description\": \"Maximum number of running tests to list in the progress bar.\\n\\nAccepts a non-negative integer, or `\\\"infinite\\\"` for no limit. Excess\\nrunning tests are collapsed into a summary line.\",\n \"anyOf\": [\n {\n \"$ref\": \"#/$defs/MaxProgressRunning\"\n },\n {\n \"type\": \"null\"\n }\n ]\n },\n \"output-indent\": {\n \"description\": \"Indents captured test output for visual clarity.\",\n \"type\": [\n \"boolean\",\n \"null\"\n ]\n },\n \"pager\": {\n \"description\": \"Pager command to use for output that benefits from scrolling. Use\\n`\\\":builtin\\\"` to select nextest\'s builtin pager.\",\n \"anyOf\": [\n {\n \"$ref\": \"#/$defs/PagerSetting\"\n },\n {\n \"type\": \"null\"\n }\n ]\n },\n \"paginate\": {\n \"description\": \"When to send output through the pager.\",\n \"anyOf\": [\n {\n \"$ref\": \"#/$defs/PaginateSetting\"\n },\n {\n \"type\": \"null\"\n }\n ]\n },\n \"show-progress\": {\n \"description\": \"Style of progress display shown during test runs.\",\n \"anyOf\": [\n {\n \"$ref\": \"#/$defs/UiShowProgress\"\n },\n {\n \"type\": \"null\"\n }\n ]\n },\n \"streampager\": {\n \"description\": \"Settings for the builtin pager (active when `pager = \\\":builtin\\\"`).\",\n \"$ref\": \"#/$defs/DeserializedStreampagerConfig\"\n }\n },\n \"additionalProperties\": false\n },\n \"DeserializedUiOverrideData\": {\n \"description\": \"Per-platform substitutions for `[ui]` settings.\\n\\nEach field has the same meaning as in the `[ui]` table. Only the fields\\nactually set here are substituted on matching platforms.\",\n \"type\": \"object\",\n \"properties\": {\n \"input-handler\": {\n \"description\": \"Enables the interactive keyboard input handler (e.g. `t` to dump test\\nstatus, `Enter` to print a summary line).\",\n \"type\": [\n \"boolean\",\n \"null\"\n ]\n },\n \"max-progress-running\": {\n \"description\": \"Maximum number of running tests to list in the progress bar.\\n\\nAccepts a non-negative integer, or `\\\"infinite\\\"` for no limit. Excess\\nrunning tests are collapsed into a summary line.\",\n \"anyOf\": [\n {\n \"$ref\": \"#/$defs/MaxProgressRunning\"\n },\n {\n \"type\": \"null\"\n }\n ]\n },\n \"output-indent\": {\n \"description\": \"Indents captured test output for visual clarity.\",\n \"type\": [\n \"boolean\",\n \"null\"\n ]\n },\n \"pager\": {\n \"description\": \"Pager command to use for output that benefits from scrolling. Use\\n`\\\":builtin\\\"` to select nextest\'s builtin pager.\",\n \"anyOf\": [\n {\n \"$ref\": \"#/$defs/PagerSetting\"\n },\n {\n \"type\": \"null\"\n }\n ]\n },\n \"paginate\": {\n \"description\": \"When to send output through the pager.\",\n \"anyOf\": [\n {\n \"$ref\": \"#/$defs/PaginateSetting\"\n },\n {\n \"type\": \"null\"\n }\n ]\n },\n \"show-progress\": {\n \"description\": \"Style of progress display shown during test runs.\",\n \"anyOf\": [\n {\n \"$ref\": \"#/$defs/UiShowProgress\"\n },\n {\n \"type\": \"null\"\n }\n ]\n },\n \"streampager\": {\n \"description\": \"Settings for the builtin pager (active when `pager = \\\":builtin\\\"`).\",\n \"$ref\": \"#/$defs/DeserializedStreampagerConfig\"\n }\n },\n \"additionalProperties\": false\n },\n \"ExperimentalConfig\": {\n \"description\": \"Toggles for user-level experimental, non-stable features.\\n\\nConfigured in the `[experimental]` table of the user config file. Unknown\\nkeys here produce a warning rather than an error so that older nextest\\nbinaries can load configs written for newer ones.\",\n \"type\": \"object\",\n \"properties\": {\n \"record\": {\n \"description\": \"Enables the record-replay-rerun feature: stores test run results on\\ndisk for replay or selective rerun.\",\n \"type\": \"boolean\",\n \"default\": false\n }\n }\n },\n \"MaxProgressRunning\": {\n \"title\": \"MaxProgressRunning\",\n \"description\": \"Maximum number of running tests to display: a non-negative integer, or \\\"infinite\\\" for no limit.\",\n \"oneOf\": [\n {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n {\n \"type\": \"string\",\n \"enum\": [\n \"infinite\"\n ]\n }\n ]\n },\n \"PagerSetting\": {\n \"title\": \"PagerSetting\",\n \"anyOf\": [\n {\n \"type\": \"string\",\n \"const\": \":builtin\"\n },\n {\n \"$ref\": \"#/$defs/CommandNameAndArgs\"\n }\n ]\n },\n \"PaginateSetting\": {\n \"description\": \"When to send output through the pager.\",\n \"oneOf\": [\n {\n \"description\": \"Pages output from supported commands when stdout is a terminal.\",\n \"type\": \"string\",\n \"const\": \"auto\"\n },\n {\n \"description\": \"Disables pagination entirely.\",\n \"type\": \"string\",\n \"const\": \"never\"\n }\n ]\n },\n \"StreampagerInterface\": {\n \"description\": \"How the builtin pager uses the alternate screen and when it exits.\",\n \"oneOf\": [\n {\n \"description\": \"Exits immediately if the output fits on one page; otherwise switches\\nto full-screen and clears on exit.\",\n \"type\": \"string\",\n \"const\": \"quit-if-one-page\"\n },\n {\n \"description\": \"Always uses full-screen mode and clears the screen on exit.\",\n \"type\": \"string\",\n \"const\": \"full-screen-clear-output\"\n },\n {\n \"description\": \"Waits briefly before entering full-screen mode; clears on exit only if\\nit switched to full-screen.\",\n \"type\": \"string\",\n \"const\": \"quit-quickly-or-clear-output\"\n }\n ]\n },\n \"StreampagerWrapping\": {\n \"description\": \"How long lines are wrapped in the builtin pager.\",\n \"oneOf\": [\n {\n \"description\": \"Disables wrapping; long lines extend off-screen and can be scrolled\\nhorizontally.\",\n \"type\": \"string\",\n \"const\": \"none\"\n },\n {\n \"description\": \"Wraps at word boundaries.\",\n \"type\": \"string\",\n \"const\": \"word\"\n },\n {\n \"description\": \"Wraps at any character (grapheme) boundary.\",\n \"type\": \"string\",\n \"const\": \"anywhere\"\n }\n ]\n },\n \"UiShowProgress\": {\n \"description\": \"Style of progress display shown during test runs.\",\n \"oneOf\": [\n {\n \"description\": \"Picks a display based on terminal capabilities: a progress bar in\\ninteractive terminals, a counter otherwise.\",\n \"type\": \"string\",\n \"const\": \"auto\"\n },\n {\n \"description\": \"Disables progress display entirely.\",\n \"type\": \"string\",\n \"const\": \"none\"\n },\n {\n \"description\": \"Shows a progress bar listing the currently running tests.\",\n \"type\": \"string\",\n \"const\": \"bar\"\n },\n {\n \"description\": \"Shows a single-line counter (e.g. `(1/10)`).\",\n \"type\": \"string\",\n \"const\": \"counter\"\n },\n {\n \"description\": \"Like `bar` in interactive terminals, but additionally hides successful\\ntest output (sets `status-level` to `slow` and `final-status-level` to\\n`none`). Falls back to `auto` in non-interactive contexts (e.g. piped\\noutput, CI).\",\n \"type\": \"string\",\n \"const\": \"only\"\n }\n ]\n }\n }\n}\n"
The pregenerated JSON Schema for config.toml in the user config
directory.
The schema is checked into the repository at
nextest-runner/jsonschemas/user-config.json. (If you’re working
within the nextest repository, regenerate the schema with just generate-schemas.)
Sourcepub const DEFAULT_CONFIG: &'static str = "# This is the default user config used by nextest. It is embedded in the binary\n# at build time. It may be used as a template for ~/.config/nextest/config.toml.\n#\n# For documentation on these settings, see:\n# https://nexte.st/docs/user-config/reference\n\n[ui]\n# Style of progress display shown during test runs.\n# Valid values: \"auto\", \"none\", \"bar\", \"counter\", \"only\"\nshow-progress = \"auto\"\n\n# Maximum number of running tests to list in the progress bar. Excess running\n# tests are collapsed into a summary line.\n# Valid values: a non-negative integer, or \"infinite\" for no limit.\nmax-progress-running = 8\n\n# Enables the interactive keyboard input handler (e.g. `t` to dump test status,\n# `Enter` to print a summary line).\ninput-handler = true\n\n# Indents captured test output for visual clarity.\noutput-indent = true\n\n# Pager command for output that benefits from scrolling.\n#\n# Accepts a command string (\"less -FRX\"), an array ([\"less\", \"-FRX\"]),\n# a table ({ command = [\"less\", \"-FRX\"], env = { LESSCHARSET = \"utf-8\" } }),\n# or \":builtin\" to use the builtin pager.\npager = { command = [\"less\", \"-FRX\"], env = { LESSCHARSET = \"utf-8\" } }\n\n# When to send output through the pager.\n# Valid values: \"auto\", \"never\"\npaginate = \"auto\"\n\n# Settings for the builtin pager (active when pager = \":builtin\").\n[ui.streampager]\n# How the builtin pager uses the alternate screen and when it exits.\n# Valid values: \"quit-if-one-page\", \"full-screen-clear-output\", \"quit-quickly-or-clear-output\"\ninterface = \"quit-if-one-page\"\n# How the builtin pager wraps long lines.\n# Valid values: \"none\", \"word\", \"anywhere\"\nwrapping = \"word\"\n# Whether to show a ruler at the bottom of the builtin pager.\nshow-ruler = true\n\n# Retention settings for the record-replay-rerun feature.\n[record]\n# Whether to record test runs. Has no effect unless [experimental] record = true.\nenabled = false\n# Maximum number of recorded runs to retain before eviction.\nmax-records = 100\n# Maximum combined size of all retained recordings before eviction.\nmax-total-size = \"1GB\"\n# Maximum age of a recorded run before eviction.\nmax-age = \"30d\"\n# Maximum size of a single captured stdout or stderr stream before truncation.\nmax-output-size = \"10MB\"\n\n# Windows uses the builtin pager by default because external pagers are\n# unreliable on Windows.\n[[overrides]]\nplatform = \"cfg(windows)\"\nui.pager = \":builtin\"\n"
pub const DEFAULT_CONFIG: &'static str = "# This is the default user config used by nextest. It is embedded in the binary\n# at build time. It may be used as a template for ~/.config/nextest/config.toml.\n#\n# For documentation on these settings, see:\n# https://nexte.st/docs/user-config/reference\n\n[ui]\n# Style of progress display shown during test runs.\n# Valid values: \"auto\", \"none\", \"bar\", \"counter\", \"only\"\nshow-progress = \"auto\"\n\n# Maximum number of running tests to list in the progress bar. Excess running\n# tests are collapsed into a summary line.\n# Valid values: a non-negative integer, or \"infinite\" for no limit.\nmax-progress-running = 8\n\n# Enables the interactive keyboard input handler (e.g. `t` to dump test status,\n# `Enter` to print a summary line).\ninput-handler = true\n\n# Indents captured test output for visual clarity.\noutput-indent = true\n\n# Pager command for output that benefits from scrolling.\n#\n# Accepts a command string (\"less -FRX\"), an array ([\"less\", \"-FRX\"]),\n# a table ({ command = [\"less\", \"-FRX\"], env = { LESSCHARSET = \"utf-8\" } }),\n# or \":builtin\" to use the builtin pager.\npager = { command = [\"less\", \"-FRX\"], env = { LESSCHARSET = \"utf-8\" } }\n\n# When to send output through the pager.\n# Valid values: \"auto\", \"never\"\npaginate = \"auto\"\n\n# Settings for the builtin pager (active when pager = \":builtin\").\n[ui.streampager]\n# How the builtin pager uses the alternate screen and when it exits.\n# Valid values: \"quit-if-one-page\", \"full-screen-clear-output\", \"quit-quickly-or-clear-output\"\ninterface = \"quit-if-one-page\"\n# How the builtin pager wraps long lines.\n# Valid values: \"none\", \"word\", \"anywhere\"\nwrapping = \"word\"\n# Whether to show a ruler at the bottom of the builtin pager.\nshow-ruler = true\n\n# Retention settings for the record-replay-rerun feature.\n[record]\n# Whether to record test runs. Has no effect unless [experimental] record = true.\nenabled = false\n# Maximum number of recorded runs to retain before eviction.\nmax-records = 100\n# Maximum combined size of all retained recordings before eviction.\nmax-total-size = \"1GB\"\n# Maximum age of a recorded run before eviction.\nmax-age = \"30d\"\n# Maximum size of a single captured stdout or stderr stream before truncation.\nmax-output-size = \"10MB\"\n\n# Windows uses the builtin pager by default because external pagers are\n# unreliable on Windows.\n[[overrides]]\nplatform = \"cfg(windows)\"\nui.pager = \":builtin\"\n"
The embedded default user config TOML.
User-specific configuration is layered on top of this default config.
Sourcepub fn load(location: UserConfigLocation<'_>) -> Result<Self, UserConfigError>
pub fn load(location: UserConfigLocation<'_>) -> Result<Self, UserConfigError>
Loads and resolves user configuration.
Platform overrides in the user config are evaluated against the build
target of the nextest binary (via Platform::build_target), not
against the host platform reported by rustc -vV. User config expresses
per-user preferences for the running nextest binary, so the binary’s
build target is the right thing to match against — and this keeps
resolution consistent across normal runs, archive replay, and commands
that don’t otherwise need to detect a host platform.
Sourcepub fn is_experimental_enabled(&self, feature: UserConfigExperimental) -> bool
pub fn is_experimental_enabled(&self, feature: UserConfigExperimental) -> bool
Returns true if the specified experimental feature is enabled.
Trait Implementations§
Source§impl Clone for UserConfig
impl Clone for UserConfig
Source§fn clone(&self) -> UserConfig
fn clone(&self) -> UserConfig
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for UserConfig
impl RefUnwindSafe for UserConfig
impl Send for UserConfig
impl Sync for UserConfig
impl Unpin for UserConfig
impl UnsafeUnpin for UserConfig
impl UnwindSafe for UserConfig
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<D> OwoColorize for D
impl<D> OwoColorize for D
Source§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
Source§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
Source§fn black(&self) -> FgColorDisplay<'_, Black, Self>
fn black(&self) -> FgColorDisplay<'_, Black, Self>
Source§fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
Source§fn red(&self) -> FgColorDisplay<'_, Red, Self>
fn red(&self) -> FgColorDisplay<'_, Red, Self>
Source§fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
Source§fn green(&self) -> FgColorDisplay<'_, Green, Self>
fn green(&self) -> FgColorDisplay<'_, Green, Self>
Source§fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
Source§fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
Source§fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
Source§fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
Source§fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
Source§fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
Source§fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
Source§fn white(&self) -> FgColorDisplay<'_, White, Self>
fn white(&self) -> FgColorDisplay<'_, White, Self>
Source§fn on_white(&self) -> BgColorDisplay<'_, White, Self>
fn on_white(&self) -> BgColorDisplay<'_, White, Self>
Source§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
Source§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
Source§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
Source§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
Source§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
Source§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
Source§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
Source§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
Source§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
Source§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
Source§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
Source§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
Source§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
Source§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
Source§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
Source§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
Source§fn bold(&self) -> BoldDisplay<'_, Self>
fn bold(&self) -> BoldDisplay<'_, Self>
Source§fn dimmed(&self) -> DimDisplay<'_, Self>
fn dimmed(&self) -> DimDisplay<'_, Self>
Source§fn italic(&self) -> ItalicDisplay<'_, Self>
fn italic(&self) -> ItalicDisplay<'_, Self>
Source§fn underline(&self) -> UnderlineDisplay<'_, Self>
fn underline(&self) -> UnderlineDisplay<'_, Self>
Source§fn blink(&self) -> BlinkDisplay<'_, Self>
fn blink(&self) -> BlinkDisplay<'_, Self>
Source§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
Source§fn reversed(&self) -> ReversedDisplay<'_, Self>
fn reversed(&self) -> ReversedDisplay<'_, Self>
Source§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
Source§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg or
a color-specific method, such as OwoColorize::green, Read moreSource§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg or
a color-specific method, such as OwoColorize::on_yellow, Read more