Loading .editorconfig +4 −0 Original line number Diff line number Diff line Loading @@ -101,3 +101,7 @@ end_of_line = unset insert_final_newline = unset trim_trailing_whitespace = unset charset = unset [lib/tests/*.plist] indent_style = tab insert_final_newline = unset lib/generators.nix +2 −0 Original line number Diff line number Diff line Loading @@ -355,6 +355,7 @@ rec { # PLIST handling toPlist = {}: v: let isFloat = builtins.isFloat or (x: false); isPath = x: builtins.typeOf x == "path"; expr = ind: x: with builtins; if x == null then "" else if isBool x then bool ind x else Loading @@ -362,6 +363,7 @@ rec { if isString x then str ind x else if isList x then list ind x else if isAttrs x then attrs ind x else if isPath x then str ind (toString x) else if isFloat x then float ind x else abort "generators.toPlist: should never happen (v = ${v})"; Loading lib/tests/misc.nix +24 −0 Original line number Diff line number Diff line Loading @@ -919,6 +919,30 @@ runTests { expected = "«foo»"; }; testToPlist = let deriv = derivation { name = "test"; builder = "/bin/sh"; system = "aarch64-linux"; }; in { expr = mapAttrs (const (generators.toPlist { })) { value = { nested.values = rec { int = 42; float = 0.1337; bool = true; emptystring = ""; string = "fn\${o}\"r\\d"; newlinestring = "\n"; path = /. + "/foo"; null_ = null; list = [ 3 4 "test" ]; emptylist = []; attrs = { foo = null; "foo b/ar" = "baz"; }; emptyattrs = {}; }; }; }; expected = { value = builtins.readFile ./test-to-plist-expected.plist; }; }; testToLuaEmptyAttrSet = { expr = generators.toLua {} {}; Loading lib/tests/test-to-plist-expected.plist 0 → 100644 +46 −0 Original line number Diff line number Diff line <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>nested</key> <dict> <key>values</key> <dict> <key>attrs</key> <dict> <key>foo b/ar</key> <string>baz</string> </dict> <key>bool</key> <true/> <key>emptyattrs</key> <dict> </dict> <key>emptylist</key> <array> </array> <key>emptystring</key> <string></string> <key>float</key> <real>0.133700</real> <key>int</key> <integer>42</integer> <key>list</key> <array> <integer>3</integer> <integer>4</integer> <string>test</string> </array> <key>newlinestring</key> <string> </string> <key>path</key> <string>/foo</string> <key>string</key> <string>fn${o}"r\d</string> </dict> </dict> </dict> </plist> No newline at end of file Loading
.editorconfig +4 −0 Original line number Diff line number Diff line Loading @@ -101,3 +101,7 @@ end_of_line = unset insert_final_newline = unset trim_trailing_whitespace = unset charset = unset [lib/tests/*.plist] indent_style = tab insert_final_newline = unset
lib/generators.nix +2 −0 Original line number Diff line number Diff line Loading @@ -355,6 +355,7 @@ rec { # PLIST handling toPlist = {}: v: let isFloat = builtins.isFloat or (x: false); isPath = x: builtins.typeOf x == "path"; expr = ind: x: with builtins; if x == null then "" else if isBool x then bool ind x else Loading @@ -362,6 +363,7 @@ rec { if isString x then str ind x else if isList x then list ind x else if isAttrs x then attrs ind x else if isPath x then str ind (toString x) else if isFloat x then float ind x else abort "generators.toPlist: should never happen (v = ${v})"; Loading
lib/tests/misc.nix +24 −0 Original line number Diff line number Diff line Loading @@ -919,6 +919,30 @@ runTests { expected = "«foo»"; }; testToPlist = let deriv = derivation { name = "test"; builder = "/bin/sh"; system = "aarch64-linux"; }; in { expr = mapAttrs (const (generators.toPlist { })) { value = { nested.values = rec { int = 42; float = 0.1337; bool = true; emptystring = ""; string = "fn\${o}\"r\\d"; newlinestring = "\n"; path = /. + "/foo"; null_ = null; list = [ 3 4 "test" ]; emptylist = []; attrs = { foo = null; "foo b/ar" = "baz"; }; emptyattrs = {}; }; }; }; expected = { value = builtins.readFile ./test-to-plist-expected.plist; }; }; testToLuaEmptyAttrSet = { expr = generators.toLua {} {}; Loading
lib/tests/test-to-plist-expected.plist 0 → 100644 +46 −0 Original line number Diff line number Diff line <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>nested</key> <dict> <key>values</key> <dict> <key>attrs</key> <dict> <key>foo b/ar</key> <string>baz</string> </dict> <key>bool</key> <true/> <key>emptyattrs</key> <dict> </dict> <key>emptylist</key> <array> </array> <key>emptystring</key> <string></string> <key>float</key> <real>0.133700</real> <key>int</key> <integer>42</integer> <key>list</key> <array> <integer>3</integer> <integer>4</integer> <string>test</string> </array> <key>newlinestring</key> <string> </string> <key>path</key> <string>/foo</string> <key>string</key> <string>fn${o}"r\d</string> </dict> </dict> </dict> </plist> No newline at end of file