From 9438a9eb5f14c5ae65d25047fc34c6a0d4ba33f3 Mon Sep 17 00:00:00 2001 From: DavHau Date: Wed, 9 Aug 2023 12:10:27 +0200 Subject: [PATCH 1/2] clan-config: move jsonschema lib to clanLib --- lib/default.nix | 31 +++++++++---------- .../schema-lib.nix => lib/jsonschema.nix | 0 pkgs/clan-cli/clan_cli/config/__init__.py | 5 ++- pkgs/clan-cli/shell.nix | 2 +- .../tests/config/test_parseOption.nix | 2 +- .../tests/config/test_parseOptions.nix | 2 +- 6 files changed, 22 insertions(+), 20 deletions(-) rename pkgs/clan-cli/clan_cli/config/schema-lib.nix => lib/jsonschema.nix (100%) diff --git a/lib/default.nix b/lib/default.nix index b0c2432fa..292d46023 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -1,17 +1,16 @@ { lib, ... }: -let - clanLib = { - findNixFiles = folder: - lib.mapAttrs' - (name: type: - if - type == "directory" - then - lib.nameValuePair name "${folder}/${name}" - else - lib.nameValuePair (lib.removeSuffix ".nix" name) "${folder}/${name}" - ) - (builtins.readDir folder); - }; -in -clanLib +{ + findNixFiles = folder: + lib.mapAttrs' + (name: type: + if + type == "directory" + then + lib.nameValuePair name "${folder}/${name}" + else + lib.nameValuePair (lib.removeSuffix ".nix" name) "${folder}/${name}" + ) + (builtins.readDir folder); + + jsonschema = import ./jsonschema.nix { inherit lib; }; +} diff --git a/pkgs/clan-cli/clan_cli/config/schema-lib.nix b/lib/jsonschema.nix similarity index 100% rename from pkgs/clan-cli/clan_cli/config/schema-lib.nix rename to lib/jsonschema.nix diff --git a/pkgs/clan-cli/clan_cli/config/__init__.py b/pkgs/clan-cli/clan_cli/config/__init__.py index 707115e2a..c36e80c33 100644 --- a/pkgs/clan-cli/clan_cli/config/__init__.py +++ b/pkgs/clan-cli/clan_cli/config/__init__.py @@ -1,6 +1,7 @@ # !/usr/bin/env python3 import argparse import json +import os import subprocess import sys from pathlib import Path @@ -8,6 +9,8 @@ from typing import Any, Optional, Type, Union from clan_cli.errors import ClanError +CLAN_FLAKE = os.getenv("CLAN_FLAKE") + class Kwargs: def __init__(self) -> None: @@ -27,7 +30,7 @@ def schema_from_module_file( nix_expr = f""" let lib = import ; - slib = import {__file__}/../schema-lib.nix {{inherit lib;}}; + slib = import {CLAN_FLAKE}/lib/jsonschema.nix {{inherit lib;}}; in slib.parseModule {absolute_path} """ diff --git a/pkgs/clan-cli/shell.nix b/pkgs/clan-cli/shell.nix index cc6490a7c..61a98ffba 100644 --- a/pkgs/clan-cli/shell.nix +++ b/pkgs/clan-cli/shell.nix @@ -9,7 +9,7 @@ let ] ); checkScript = pkgs.writeScriptBin "check" '' - nix build -f . tests -L "$@" + nix build .#checks.${pkgs.system}.{treefmt,clan-mypy,clan-pytest} -L "$@" ''; in pkgs.mkShell { diff --git a/pkgs/clan-cli/tests/config/test_parseOption.nix b/pkgs/clan-cli/tests/config/test_parseOption.nix index b3e6173b5..7ea927630 100644 --- a/pkgs/clan-cli/tests/config/test_parseOption.nix +++ b/pkgs/clan-cli/tests/config/test_parseOption.nix @@ -1,7 +1,7 @@ # tests for the nixos options to jsonschema converter # run these tests via `nix-unit ./test.nix` { lib ? (import { }).lib -, slib ? import ../../clan_cli/config/schema-lib.nix { inherit lib; } +, slib ? import ../../../../lib/jsonschema.nix { inherit lib; } }: let description = "Test Description"; diff --git a/pkgs/clan-cli/tests/config/test_parseOptions.nix b/pkgs/clan-cli/tests/config/test_parseOptions.nix index 4787d9d95..14b8d31ac 100644 --- a/pkgs/clan-cli/tests/config/test_parseOptions.nix +++ b/pkgs/clan-cli/tests/config/test_parseOptions.nix @@ -1,7 +1,7 @@ # tests for the nixos options to jsonschema converter # run these tests via `nix-unit ./test.nix` { lib ? (import { }).lib -, slib ? import ../../clan_cli/config/schema-lib.nix { inherit lib; } +, slib ? import ../../../../lib/jsonschema.nix { inherit lib; } }: let evaledOptions = From 7262208a4c47cb6ed9f3854532352cc6df74909f Mon Sep 17 00:00:00 2001 From: DavHau Date: Wed, 9 Aug 2023 16:05:16 +0200 Subject: [PATCH 2/2] clanLib.jsonschema: move tests from pkgs/clan-cli --- flake.nix | 1 + lib/default.nix | 2 +- lib/flake-module.nix | 3 ++ .../default.nix} | 0 .../jsonschema}/example-data.json | 0 .../jsonschema}/example-interface.nix | 0 .../jsonschema}/example-schema.json | 0 lib/jsonschema/flake-module.nix | 29 +++++++++++++++++++ .../tests/config => lib/jsonschema}/test.nix | 2 +- .../jsonschema}/test_parseOption.nix | 2 +- .../jsonschema}/test_parseOptions.nix | 2 +- pkgs/clan-cli/flake-module.nix | 25 +--------------- 12 files changed, 38 insertions(+), 28 deletions(-) rename lib/{jsonschema.nix => jsonschema/default.nix} (100%) rename {pkgs/clan-cli/tests/config => lib/jsonschema}/example-data.json (100%) rename {pkgs/clan-cli/tests/config => lib/jsonschema}/example-interface.nix (100%) rename {pkgs/clan-cli/tests/config => lib/jsonschema}/example-schema.json (100%) create mode 100644 lib/jsonschema/flake-module.nix rename {pkgs/clan-cli/tests/config => lib/jsonschema}/test.nix (76%) rename {pkgs/clan-cli/tests/config => lib/jsonschema}/test_parseOption.nix (98%) rename {pkgs/clan-cli/tests/config => lib/jsonschema}/test_parseOptions.nix (87%) diff --git a/flake.nix b/flake.nix index c52398e17..50d88a32e 100644 --- a/flake.nix +++ b/flake.nix @@ -22,6 +22,7 @@ "aarch64-linux" ]; imports = [ + # ./checks/flake-module.nix ./devShell.nix ./formatter.nix ./templates/flake-module.nix diff --git a/lib/default.nix b/lib/default.nix index 292d46023..855c3d75b 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -12,5 +12,5 @@ ) (builtins.readDir folder); - jsonschema = import ./jsonschema.nix { inherit lib; }; + jsonschema = import ./jsonschema { inherit lib; }; } diff --git a/lib/flake-module.nix b/lib/flake-module.nix index 38d84a837..2738bef8d 100644 --- a/lib/flake-module.nix +++ b/lib/flake-module.nix @@ -1,5 +1,8 @@ { lib , ... }: { + imports = [ + ./jsonschema/flake-module.nix + ]; flake.lib = import ./default.nix { inherit lib; }; } diff --git a/lib/jsonschema.nix b/lib/jsonschema/default.nix similarity index 100% rename from lib/jsonschema.nix rename to lib/jsonschema/default.nix diff --git a/pkgs/clan-cli/tests/config/example-data.json b/lib/jsonschema/example-data.json similarity index 100% rename from pkgs/clan-cli/tests/config/example-data.json rename to lib/jsonschema/example-data.json diff --git a/pkgs/clan-cli/tests/config/example-interface.nix b/lib/jsonschema/example-interface.nix similarity index 100% rename from pkgs/clan-cli/tests/config/example-interface.nix rename to lib/jsonschema/example-interface.nix diff --git a/pkgs/clan-cli/tests/config/example-schema.json b/lib/jsonschema/example-schema.json similarity index 100% rename from pkgs/clan-cli/tests/config/example-schema.json rename to lib/jsonschema/example-schema.json diff --git a/lib/jsonschema/flake-module.nix b/lib/jsonschema/flake-module.nix new file mode 100644 index 000000000..26fc76cf4 --- /dev/null +++ b/lib/jsonschema/flake-module.nix @@ -0,0 +1,29 @@ +{ + perSystem = { pkgs, self', ... }: { + checks = { + + # check if the `clan config` example jsonschema and data is valid + lib-jsonschema-example-valid = pkgs.runCommand "lib-jsonschema-example-valid" { } '' + echo "Checking that example-schema.json is valid" + ${pkgs.check-jsonschema}/bin/check-jsonschema \ + --check-metaschema ${./.}/example-schema.json + + echo "Checking that example-data.json is valid according to example-schema.json" + ${pkgs.check-jsonschema}/bin/check-jsonschema \ + --schemafile ${./.}/example-schema.json \ + ${./.}/example-data.json + + touch $out + ''; + + # check if the `clan config` nix jsonschema converter unit tests succeed + lib-jsonschema-nix-unit-tests = pkgs.runCommand "lib-jsonschema-nix-unit-tests" { } '' + export NIX_PATH=nixpkgs=${pkgs.path} + ${self'.packages.nix-unit}/bin/nix-unit \ + ${./.}/test.nix \ + --eval-store $(realpath .) + touch $out + ''; + }; + }; +} diff --git a/pkgs/clan-cli/tests/config/test.nix b/lib/jsonschema/test.nix similarity index 76% rename from pkgs/clan-cli/tests/config/test.nix rename to lib/jsonschema/test.nix index 8a39ed248..34e05274b 100644 --- a/pkgs/clan-cli/tests/config/test.nix +++ b/lib/jsonschema/test.nix @@ -1,6 +1,6 @@ # run these tests via `nix-unit ./test.nix` { lib ? (import { }).lib -, slib ? import ../../clan_cli/config/schema-lib.nix { inherit lib; } +, slib ? import ./. { inherit lib; } }: { parseOption = import ./test_parseOption.nix { inherit lib slib; }; diff --git a/pkgs/clan-cli/tests/config/test_parseOption.nix b/lib/jsonschema/test_parseOption.nix similarity index 98% rename from pkgs/clan-cli/tests/config/test_parseOption.nix rename to lib/jsonschema/test_parseOption.nix index 7ea927630..7adb3d660 100644 --- a/pkgs/clan-cli/tests/config/test_parseOption.nix +++ b/lib/jsonschema/test_parseOption.nix @@ -1,7 +1,7 @@ # tests for the nixos options to jsonschema converter # run these tests via `nix-unit ./test.nix` { lib ? (import { }).lib -, slib ? import ../../../../lib/jsonschema.nix { inherit lib; } +, slib ? import ./. { inherit lib; } }: let description = "Test Description"; diff --git a/pkgs/clan-cli/tests/config/test_parseOptions.nix b/lib/jsonschema/test_parseOptions.nix similarity index 87% rename from pkgs/clan-cli/tests/config/test_parseOptions.nix rename to lib/jsonschema/test_parseOptions.nix index 14b8d31ac..c635286de 100644 --- a/pkgs/clan-cli/tests/config/test_parseOptions.nix +++ b/lib/jsonschema/test_parseOptions.nix @@ -1,7 +1,7 @@ # tests for the nixos options to jsonschema converter # run these tests via `nix-unit ./test.nix` { lib ? (import { }).lib -, slib ? import ../../../../lib/jsonschema.nix { inherit lib; } +, slib ? import ./. { inherit lib; } }: let evaledOptions = diff --git a/pkgs/clan-cli/flake-module.nix b/pkgs/clan-cli/flake-module.nix index 4a0370344..30581d2e5 100644 --- a/pkgs/clan-cli/flake-module.nix +++ b/pkgs/clan-cli/flake-module.nix @@ -27,30 +27,7 @@ ## End optional dependencies }; - checks = self'.packages.clan-cli.tests // { - # check if the `clan config` example jsonschema and data is valid - clan-config-example-schema-valid = pkgs.runCommand "clan-config-example-schema-valid" { } '' - echo "Checking that example-schema.json is valid" - ${pkgs.check-jsonschema}/bin/check-jsonschema \ - --check-metaschema ${./.}/tests/config/example-schema.json - - echo "Checking that example-data.json is valid according to example-schema.json" - ${pkgs.check-jsonschema}/bin/check-jsonschema \ - --schemafile ${./.}/tests/config/example-schema.json \ - ${./.}/tests/config/example-data.json - - touch $out - ''; - - # check if the `clan config` nix jsonschema converter unit tests succeed - clan-config-nix-unit-tests = pkgs.runCommand "clan-edit-unit-tests" { } '' - export NIX_PATH=nixpkgs=${pkgs.path} - ${self'.packages.nix-unit}/bin/nix-unit \ - ${./.}/tests/config/test.nix \ - --eval-store $(realpath .) - touch $out - ''; - }; + checks = self'.packages.clan-cli.tests; }; }