about summary refs log tree commit diff
path: root/nixpkgs/pkgs/pkgs-lib/formats/hocon/test/comprehensive/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/pkgs-lib/formats/hocon/test/comprehensive/default.nix')
-rw-r--r--nixpkgs/pkgs/pkgs-lib/formats/hocon/test/comprehensive/default.nix83
1 files changed, 83 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/pkgs-lib/formats/hocon/test/comprehensive/default.nix b/nixpkgs/pkgs/pkgs-lib/formats/hocon/test/comprehensive/default.nix
new file mode 100644
index 000000000000..ae4fae443d41
--- /dev/null
+++ b/nixpkgs/pkgs/pkgs-lib/formats/hocon/test/comprehensive/default.nix
@@ -0,0 +1,83 @@
+{ lib, formats, stdenvNoCC, writeText, ... }:
+let
+  hocon = formats.hocon { };
+
+  include_file = (writeText "hocon-test-include.conf" ''
+    "val" = 1
+  '').overrideAttrs (_: _: {
+    outputHashAlgo = "sha256";
+    outputHashMode = "flat";
+    outputHash = "sha256-UhkJLhT3bD6znq+IdDjs/ahP19mLzrLCy/R14pVrfew=";
+  });
+
+  expression = {
+    simple_top_level_attr = "1.0";
+    nested.attrset.has.a.integer.value = 100;
+    some_floaty = 29.95;
+
+    array2d = [
+      [ 1 2 "a" ]
+      [ 2 1 "b" ]
+    ];
+    nasty_string = "\"@\n\\\t^*\b\f\n\0\";'''$";
+
+    "misc attrs" = {
+      x = 1;
+      y = hocon.lib.mkAppend { a = 1; };
+    };
+
+    "cursed \" .attrs \" " = {
+      "a" = 1;
+      "a b" = hocon.lib.mkSubstitution "a";
+      "a b c" = hocon.lib.mkSubstitution {
+        value = "a b";
+        required = false;
+      };
+    };
+
+    to_include = {
+      _includes = [
+        (hocon.lib.mkInclude include_file)
+        (hocon.lib.mkInclude "https://example.com")
+        (hocon.lib.mkInclude {
+          required = true;
+          type = "file";
+          value = include_file;
+        })
+        (hocon.lib.mkInclude { value = include_file; })
+        (hocon.lib.mkInclude {
+          value = "https://example.com";
+          type = "url";
+        })
+      ];
+    };
+  };
+
+  hocon-test-conf = hocon.generate "hocon-test.conf" expression;
+in
+  stdenvNoCC.mkDerivation {
+    name = "pkgs.formats.hocon-test-comprehensive";
+
+    dontUnpack = true;
+    dontBuild = true;
+
+    doCheck = true;
+    checkPhase = ''
+      runHook preCheck
+
+      diff -U3 ${./expected.txt} ${hocon-test-conf}
+
+      runHook postCheck
+    '';
+
+    installPhase = ''
+      runHook preInstall
+
+      mkdir $out
+      cp ${./expected.txt} $out/expected.txt
+      cp ${hocon-test-conf} $out/hocon-test.conf
+      cp ${hocon-test-conf.passthru.json} $out/hocon-test.json
+
+      runHook postInstall
+    '';
+  }