Commit Graph

40 Commits

Author SHA1 Message Date
Valentin Gagarin
ebd5afe8f5 fixup(jsonschema): test attrsOf submodules with valid value 2025-04-16 16:55:50 +02:00
Valentin Gagarin
6a2e81373c lib/jsonschema: render defaults for submodule options
this relaxes the constraint that options of type `submodule` are always
required, and will render benign default values.
2025-04-16 16:55:46 +02:00
Johannes Kirschbauer
9f7e9ca9df feat(jsonschema): add test for attrsof submodule 2025-04-16 14:48:49 +02:00
Valentin Gagarin
e28681c4f2 lib/jsonschema: make attrs required
Before the change, modules of the form

```nix
{ lib, ... }: {
  foo.bar = lib.mkOption {
    # ...
  };
}
```

or

```nix
{ lib, ... }: {
  foo = lib.mkOption {
    type = lib.types.subModule {
      bar = lib.mkOption {
        # ...
      };
    };
  };
}
```

would not render with `foo` as required, which is not faithful to the
module system's semantics.

This change also tests that fields with defaults are not marked required.
Note that submodule options cannot have their defaults rendered to JSON
schema, and are therefore always marked required.

Architecturally this change is rather unfortunate: So far the checks for
defaults happen in the rendering (using `isDefault`) and not in the parsing,
but here we're adding a field to `$exportedModuleInfo`. While strictly
speaking we probably don't want to consider requiredness as module-level
information, it seems more reasonable to me to do it that way since at
the JSON schema level we have lost the distinction between `attrs`,
`attrsOf`, `submodule`.
2025-04-16 13:20:00 +02:00
Michael Hoang
67745e1b27 tests: add --show-trace to nix-unit tests 2025-04-08 08:53:29 +02:00
Michael Hoang
66e4c41142 lib/jsonschema: fix enum support 2025-04-08 08:53:27 +02:00
lassulus
79a2283c71 *: nix fmt 2024-12-02 15:14:40 +01:00
Johannes Kirschbauer
6808f0a59f jsonschema: dont export defaultText as default 2024-11-21 15:38:17 +00:00
Johannes Kirschbauer
b9ef080950 jsonschema: migrate tests 2024-11-12 13:23:31 +01:00
Johannes Kirschbauer
499bc4743b jsonschema: Add exportfield for module internals 2024-11-12 12:48:45 +01:00
Johannes Kirschbauer
c33c5f8b19 Jsonschema: clean up tests 2024-11-08 13:22:58 +01:00
Johannes Kirschbauer
a1acac4b7d Inventory: init inventory.tags for globally defined static and dynamic tags 2024-11-08 12:48:03 +01:00
danjujan
61958130fd lib: fix typos 2024-10-29 12:37:34 +00:00
Johannes Kirschbauer
c2eae7d0a6 lib/jsonSchema: handle defaults for defaultText 2024-10-22 12:59:44 +02:00
Johannes Kirschbauer
c92ee71d42 Jsonschema: fix tests 2024-07-18 22:04:11 +02:00
Johannes Kirschbauer
7e84eaa4b3 Init: Autogenerate classes from nix interfaces 2024-07-18 19:14:12 +02:00
Johannes Kirschbauer
ad321976ff Fix schema test 2024-07-14 15:02:32 +02:00
Johannes Kirschbauer
e54101165f Inventory: generate exact schema for validation & documentation 2024-07-14 13:30:02 +02:00
Johannes Kirschbauer
3034b9ef92 Json-schema: extend interface by header to allow schema spec and arbitrary extensions 2024-07-14 13:29:19 +02:00
Johannes Kirschbauer
d7dc66da03 Json-schema tests: add schema specifier to test 2024-06-24 16:00:46 +02:00
Johannes Kirschbauer
51154c1d54 schema improvements: add additionalProperties: false to ensure closed types 2024-06-24 15:55:48 +02:00
Johannes Kirschbauer
294c5548b9 Inventory: add concrete use-case examples 2024-06-24 14:35:41 +02:00
DavHau
54fcfda43e lib.jsonschema: parse some more types 2024-05-23 16:12:49 +02:00
Qubasa
fc7f544199 Fix invalid jsonschema testcase 2024-05-04 14:11:28 +02:00
Qubasa
393ed517e2 jsonschema: Filter out 'invisible' options, that are there to throw errors on define 2024-05-03 19:40:42 +02:00
Qubasa
159198b81a Add jsonschema test case 2024-05-03 19:40:42 +02:00
Qubasa
a48df5b993 Add package function-schema and module-schema. Add check for module jsonschema. 2024-05-01 23:16:17 +02:00
Jörg Thalheim
e296a3019d re-format with nixfmt 2024-03-17 19:48:49 +01:00
Jörg Thalheim
0bdf55b09f use nix-unit from nixpkgs 2023-12-15 12:36:07 +01:00
DavHau
f54ad0f739 jsonschema: support mdDoc description 2023-11-21 17:29:22 +07:00
DavHau
3c4c2995ca lib/jsonschema: add more types and excludes
- Complete the types to cover almost everything
- exclude specific types like functionTo or package
2023-11-20 19:40:27 +07:00
DavHau
e779bc2d11 lib/jsonschema: support listOf unspecified 2023-11-20 17:03:42 +07:00
Jörg Thalheim
c0799ce425 jsonschema: fix eval 2023-09-27 13:08:24 +00:00
lassulus
acf1c0b87a lib jsonschema: add path 2023-09-15 12:17:07 +00:00
DavHau
c9bfd0a5b5 clanCore: add example options 2023-09-02 19:15:29 +02:00
DavHau
fb76ad45e8 webui: implement /api/machines/{name}/schema 2023-08-25 21:26:30 +02:00
Jörg Thalheim
4d183fff58 apply prettier to source tree 2023-08-24 14:13:02 +02:00
DavHau
52d6798315 clan-config: stop using jsonschema at all for CLI
- instead use options.json coming from nixosOptionsDoc
2023-08-15 15:48:17 +02:00
DavHau
cd048c2114 lan-config: handle nested options 2023-08-09 18:19:43 +02:00
DavHau
7262208a4c clanLib.jsonschema: move tests from pkgs/clan-cli 2023-08-09 16:05:33 +02:00