lib.attrsets.genAttrs': init (#436434)
* lib.attrsets.genAttrs': init
* lib.attrsets.genAttrs: rewrite with lib.attrsets.genAttrs'
* lib.attrsets.{genAttrs,genAttrs'}: add tests
* Update lib/attrsets.nix
Co-authored-by: Johannes Kirschbauer <hsjobeki+github@gmail.com>
* Update lib/attrsets.nix
Co-authored-by: Johannes Kirschbauer <hsjobeki+github@gmail.com>
* lib.attrsets.genAttrs': document and test attrName collision
---------
Co-authored-by: Johannes Kirschbauer <hsjobeki+github@gmail.com>
This commit is contained in:
@@ -2006,6 +2006,39 @@ runTests {
|
||||
|
||||
# ATTRSETS
|
||||
|
||||
testGenAttrs = {
|
||||
expr = attrsets.genAttrs [ "foo" "bar" ] (name: "x_" + name);
|
||||
expected = {
|
||||
foo = "x_foo";
|
||||
bar = "x_bar";
|
||||
};
|
||||
};
|
||||
testGenAttrs' = {
|
||||
expr = attrsets.genAttrs' [ "foo" "bar" ] (s: nameValuePair ("x_" + s) ("y_" + s));
|
||||
expected = {
|
||||
x_foo = "y_foo";
|
||||
x_bar = "y_bar";
|
||||
};
|
||||
};
|
||||
testGenAttrs'Example2 = {
|
||||
expr = attrsets.genAttrs' [
|
||||
{
|
||||
x = "foo";
|
||||
y = "baz";
|
||||
}
|
||||
] (s: lib.nameValuePair ("x_" + s.x) ("y_" + s.y));
|
||||
expected = {
|
||||
x_foo = "y_baz";
|
||||
};
|
||||
};
|
||||
testGenAttrs'ConflictingName = {
|
||||
# c.f. warning of genAttrs'
|
||||
expr = attrsets.genAttrs' [ "foo" "bar" "baz" ] (s: nameValuePair "foo" s);
|
||||
expected = {
|
||||
foo = "foo";
|
||||
};
|
||||
};
|
||||
|
||||
testConcatMapAttrs = {
|
||||
expr =
|
||||
concatMapAttrs
|
||||
|
||||
Reference in New Issue
Block a user