test: remove some requirements for merging types
In I605b034fdfc537e84785ce5149e443f54e5d4e3a, we removed some requirements for merging types - we should write some tests to make sure that (1) they all work and (2) future updates can't break our merging again
This commit is contained in:
parent
7b91763656
commit
137908ce11
1 changed files with 161 additions and 0 deletions
|
|
@ -202,6 +202,167 @@ in
|
|||
};
|
||||
};
|
||||
|
||||
"merge" = {
|
||||
"merges two options" =
|
||||
let
|
||||
evaluated = lib.modules.run {
|
||||
modules = [
|
||||
{
|
||||
options = {
|
||||
aux = lib.options.create {
|
||||
description = "Hello world!";
|
||||
type = lib.types.submodules.of {
|
||||
modules = [];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
{
|
||||
options = {
|
||||
aux = lib.options.create {
|
||||
example = "Heya!";
|
||||
type = lib.types.submodules.of {
|
||||
modules = [];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
in
|
||||
evaluated.options.aux.description == "Hello world!"
|
||||
&& evaluated.options.aux.example == "Heya!";
|
||||
"fails to merge unmergeable options" =
|
||||
let
|
||||
evaluated = lib.modules.run {
|
||||
modules = [
|
||||
{
|
||||
options = {
|
||||
aux = lib.options.create {
|
||||
description = "Hello world!";
|
||||
type = lib.types.submodules.of {
|
||||
modules = [];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
{
|
||||
options = {
|
||||
aux = lib.options.create {
|
||||
description = "Heya!";
|
||||
type = lib.types.submodules.of {
|
||||
modules = [];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
in
|
||||
(builtins.tryEval evaluated.options.aux.description).success == false;
|
||||
"merges three options" =
|
||||
let
|
||||
evaluated = lib.modules.run {
|
||||
modules = [
|
||||
{
|
||||
options = {
|
||||
aux = lib.options.create {
|
||||
description = "Hello world!";
|
||||
type = lib.types.submodules.of {
|
||||
modules = [
|
||||
{
|
||||
options.hello = lib.options.create {
|
||||
type = lib.types.string;
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
{
|
||||
options = {
|
||||
aux = lib.options.create {
|
||||
example = "Heya!";
|
||||
type = lib.types.submodules.of {
|
||||
modules = [];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
{
|
||||
options = {
|
||||
aux = lib.options.create {
|
||||
default = { hello = "world"; };
|
||||
type = lib.types.submodules.of {
|
||||
modules = [];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
in
|
||||
evaluated.options.aux.description == "Hello world!"
|
||||
&& evaluated.options.aux.example == "Heya!"
|
||||
&& evaluated.options.aux.default == { hello = "world"; };
|
||||
"overrides option properties" =
|
||||
let
|
||||
evaluated = lib.modules.run {
|
||||
modules = [
|
||||
{
|
||||
options = {
|
||||
aux = lib.options.create {
|
||||
description = lib.modules.overrides.force "Hello world!";
|
||||
type = lib.types.submodules.of {
|
||||
modules = [];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
{
|
||||
options = {
|
||||
aux = lib.options.create {
|
||||
description = "Heya!";
|
||||
type = lib.types.submodules.of {
|
||||
modules = [];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
in evaluated.options.aux.description == "Hello world!";
|
||||
"permits duplicate option properties" =
|
||||
let
|
||||
evaluated = lib.modules.run {
|
||||
modules = [
|
||||
{
|
||||
options = {
|
||||
aux = lib.options.create {
|
||||
description = "Hello world!";
|
||||
type = lib.types.submodules.of {
|
||||
modules = [];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
{
|
||||
options = {
|
||||
aux = lib.options.create {
|
||||
description = "Hello world!";
|
||||
type = lib.types.submodules.of {
|
||||
modules = [];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
in
|
||||
evaluated.options.aux.description == "Hello world!";
|
||||
};
|
||||
|
||||
"normalize" = {
|
||||
"handles an empty set" =
|
||||
let
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue