{ name, config, lib, kubenix, ... }: with lib; let inst-exact = config.submodules.instances.inst-exact.config; inst-regex = config.submodules.instances.inst-regex.config; inst-latest = config.submodules.instances.inst-latest.config; submodule = { imports = [ kubenix.modules.submodule ]; options.version = mkOption { type = types.str; default = "undefined"; }; config.submodule.name = "subm"; }; in { imports = with kubenix.modules; [ test submodules ]; test = { name = "submodules-imports"; description = "Submodules imports tests"; assertions = [{ message = "should select exact version"; assertion = inst-exact.version == "1.1.0"; } { message = "should select regex version"; assertion = inst-regex.version == "1.2.1"; } { message = "should select latest version"; assertion = inst-latest.version == "1.2.1"; }]; }; submodules.imports = [{ modules = [{ config.submodule.version = "1.0.0"; config.version = "1.0.0"; } submodule]; } { modules = [{ config.submodule.version = "1.1.0"; config.version = "1.1.0"; } submodule]; } { modules = [{ config.submodule.version = "1.2.0"; config.version = "1.2.0"; } submodule]; } { modules = [{ config.submodule.version = "1.2.1"; config.version = "1.2.1"; } submodule]; }]; submodules.instances.inst-exact = { submodule = "subm"; version = "1.1.0"; }; submodules.instances.inst-regex = { submodule = "subm"; version = "~1.2.*"; }; submodules.instances.inst-latest.submodule = "subm"; }