mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-16 14:54:29 +01:00
pkgs-lib: Add tests for formats
This commit is contained in:
parent
b6c540a87c
commit
9c1565a042
2 changed files with 159 additions and 0 deletions
|
@ -1,5 +1,7 @@
|
|||
# Call nix-build on this file to run all tests in this directory
|
||||
{ pkgs ? import ../../.. {} }:
|
||||
let
|
||||
formats = import ./formats.nix { inherit pkgs; };
|
||||
in pkgs.linkFarm "nixpkgs-pkgs-lib-tests" [
|
||||
{ name = "formats"; path = import ./formats.nix { inherit pkgs; }; }
|
||||
]
|
||||
|
|
157
pkgs/pkgs-lib/tests/formats.nix
Normal file
157
pkgs/pkgs-lib/tests/formats.nix
Normal file
|
@ -0,0 +1,157 @@
|
|||
{ pkgs }:
|
||||
let
|
||||
inherit (pkgs) lib formats;
|
||||
in
|
||||
with lib;
|
||||
let
|
||||
|
||||
evalFormat = format: args: def:
|
||||
let
|
||||
formatSet = format args;
|
||||
config = formatSet.type.merge [] (imap1 (n: def: {
|
||||
value = def;
|
||||
file = "def${toString n}";
|
||||
}) [ def ]);
|
||||
in formatSet.generate "test-format-file" config;
|
||||
|
||||
runBuildTest = name: { drv, expected }: pkgs.runCommandNoCC name {} ''
|
||||
if diff ${drv} ${builtins.toFile "expected" expected}; then
|
||||
touch $out
|
||||
else
|
||||
echo "Got: $(cat ${drv})"
|
||||
echo "Should be: ${expected}"
|
||||
exit 1
|
||||
fi
|
||||
'';
|
||||
|
||||
runBuildTests = tests: pkgs.linkFarm "nixpkgs-pkgs-lib-format-tests" (mapAttrsToList (name: value: { inherit name; path = runBuildTest name value; }) (filterAttrs (name: value: value != null) tests));
|
||||
|
||||
in runBuildTests {
|
||||
|
||||
testJsonAtoms = {
|
||||
drv = evalFormat formats.json {} {
|
||||
null = null;
|
||||
false = false;
|
||||
true = true;
|
||||
int = 10;
|
||||
float = 3.141;
|
||||
str = "foo";
|
||||
attrs.foo = null;
|
||||
list = [ null null ];
|
||||
};
|
||||
expected = ''
|
||||
{
|
||||
"attrs": {
|
||||
"foo": null
|
||||
},
|
||||
"false": false,
|
||||
"float": 3.141,
|
||||
"int": 10,
|
||||
"list": [
|
||||
null,
|
||||
null
|
||||
],
|
||||
"null": null,
|
||||
"str": "foo",
|
||||
"true": true
|
||||
}
|
||||
'';
|
||||
};
|
||||
|
||||
testYamlAtoms = {
|
||||
drv = evalFormat formats.yaml {} {
|
||||
null = null;
|
||||
false = false;
|
||||
true = true;
|
||||
float = 3.141;
|
||||
str = "foo";
|
||||
attrs.foo = null;
|
||||
list = [ null null ];
|
||||
};
|
||||
expected = ''
|
||||
{
|
||||
"attrs": {
|
||||
"foo": null
|
||||
},
|
||||
"false": false,
|
||||
"float": 3.141,
|
||||
"list": [
|
||||
null,
|
||||
null
|
||||
],
|
||||
"null": null,
|
||||
"str": "foo",
|
||||
"true": true
|
||||
}
|
||||
'';
|
||||
};
|
||||
|
||||
testIniAtoms = {
|
||||
drv = evalFormat formats.ini {} {
|
||||
foo = {
|
||||
bool = true;
|
||||
int = 10;
|
||||
float = 3.141;
|
||||
str = "string";
|
||||
};
|
||||
};
|
||||
expected = ''
|
||||
[foo]
|
||||
bool=true
|
||||
float=3.141000
|
||||
int=10
|
||||
str=string
|
||||
'';
|
||||
};
|
||||
|
||||
testIniDuplicateKeys = {
|
||||
drv = evalFormat formats.ini { listsAsDuplicateKeys = true; } {
|
||||
foo = {
|
||||
bar = [ null true "test" 1.2 10 ];
|
||||
baz = false;
|
||||
qux = "qux";
|
||||
};
|
||||
};
|
||||
expected = ''
|
||||
[foo]
|
||||
bar=null
|
||||
bar=true
|
||||
bar=test
|
||||
bar=1.200000
|
||||
bar=10
|
||||
baz=false
|
||||
qux=qux
|
||||
'';
|
||||
};
|
||||
|
||||
testTomlAtoms = {
|
||||
drv = evalFormat formats.toml {} {
|
||||
false = false;
|
||||
true = true;
|
||||
int = 10;
|
||||
float = 3.141;
|
||||
str = "foo";
|
||||
attrs.foo = "foo";
|
||||
list = [ 1 2 ];
|
||||
level1.level2.level3.level4 = "deep";
|
||||
};
|
||||
expected = ''
|
||||
false = false
|
||||
float = 3.141
|
||||
int = 10
|
||||
list = [1, 2]
|
||||
str = "foo"
|
||||
true = true
|
||||
|
||||
[attrs]
|
||||
foo = "foo"
|
||||
|
||||
[level1]
|
||||
|
||||
[level1.level2]
|
||||
|
||||
[level1.level2.level3]
|
||||
level4 = "deep"
|
||||
'';
|
||||
};
|
||||
}
|
Loading…
Reference in a new issue