lib/generators: introduce a sane default for mkValueString

So far, `mkValueString` defaulted to `toString`,
which is a bad match for most configuration file formats,
especially because how booleans are formatted.
This also improves error messages for unsupported types.

Add a test to codify the formatting.
This commit is contained in:
Profpatsch
2018-03-29 16:53:06 +02:00
parent a7e45fdd8e
commit fa71407f36
2 changed files with 51 additions and 1 deletions
+26
View File
@@ -207,6 +207,29 @@ runTests {
expected = ''f\:oo:bar'';
};
testMkValueString = {
expr = let
vals = {
int = 42;
string = ''fo"o'';
bool = true;
bool2 = false;
null = null;
# float = 42.23; # floats are strange
};
in mapAttrs
(const (generators.mkValueStringDefault {}))
vals;
expected = {
int = "42";
string = ''fo"o'';
bool = "true";
bool2 = "false";
null = "null";
# float = "42.23" true false [ "bar" ] ]'';
};
};
testToKeyValue = {
expr = generators.toKeyValue {} {
key = "value";
@@ -249,6 +272,8 @@ runTests {
"section 1" = {
attribute1 = 5;
x = "Me-se JarJar Binx";
# booleans are converted verbatim by default
boolean = false;
};
"foo[]" = {
"he\\h=he" = "this is okay";
@@ -260,6 +285,7 @@ runTests {
[section 1]
attribute1=5
boolean=false
x=Me-se JarJar Binx
'';
};