about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--tests/lang.sh13
-rw-r--r--tests/lang/eval-okay-xml.exp1
-rw-r--r--tests/lang/eval-okay-xml.exp.xml42
-rw-r--r--tests/lang/eval-okay-xml.nix13
4 files changed, 68 insertions, 1 deletions
diff --git a/tests/lang.sh b/tests/lang.sh
index f743a1830502..bbc97861a476 100644
--- a/tests/lang.sh
+++ b/tests/lang.sh
@@ -44,6 +44,17 @@ for i in lang/eval-okay-*.nix; do
         echo "FAIL: evaluation result of $i not as expected"
         fail=1
     fi
+    
+    if test -e lang/$i.exp.xml; then
+        if ! $nixinstantiate --eval-only --xml --strict - < lang/$i.nix > lang/$i.out.xml; then
+            echo "FAIL: $i should evaluate"
+            fail=1
+        fi
+        if ! cmp -s lang/$i.out.xml lang/$i.exp.xml; then
+            echo "FAIL: XML evaluation result of $i not as expected"
+            fail=1
+        fi
+    fi
 done
 
-exit $fail
\ No newline at end of file
+exit $fail
diff --git a/tests/lang/eval-okay-xml.exp b/tests/lang/eval-okay-xml.exp
new file mode 100644
index 000000000000..690599e6eeb1
--- /dev/null
+++ b/tests/lang/eval-okay-xml.exp
@@ -0,0 +1 @@
+Attrs([Bind("c",OpPlus(Str("foo"),Str("bar")),Pos("(string)",9,4)),Bind("b",Str("bar"),Pos("(string)",7,4)),Bind("x",Int(123),Pos("(string)",3,4)),Bind("f",Function([Formal("z",UnrestrictedValues,NoDefaultValue),Formal("x",ValidValues([Str("a"),Str("b"),OpPlus(Str("c"),Str("d"))]),NoDefaultValue),Formal("y",ValidValues([Var("true"),Var("false")]),NoDefaultValue)],If(Var("y"),Var("x"),Var("z")),Pos("(string)",11,8)),Pos("(string)",11,4)),Bind("a",Str("foo"),Pos("(string)",5,4))])
diff --git a/tests/lang/eval-okay-xml.exp.xml b/tests/lang/eval-okay-xml.exp.xml
new file mode 100644
index 000000000000..bfb34f81d0ad
--- /dev/null
+++ b/tests/lang/eval-okay-xml.exp.xml
@@ -0,0 +1,42 @@
+<?xml version='1.0' encoding='utf-8'?>
+<expr>
+  <attrs>
+    <attr name="a">
+      <string value="foo" />
+    </attr>
+    <attr name="b">
+      <string value="bar" />
+    </attr>
+    <attr name="c">
+      <string value="foobar" />
+    </attr>
+    <attr name="f">
+      <function>
+        <arg name="z">
+        </arg>
+        <arg name="x">
+          <value>
+            <string value="a" />
+          </value>
+          <value>
+            <string value="b" />
+          </value>
+          <value>
+            <string value="cd" />
+          </value>
+        </arg>
+        <arg name="y">
+          <value>
+            <bool value="true" />
+          </value>
+          <value>
+            <bool value="false" />
+          </value>
+        </arg>
+      </function>
+    </attr>
+    <attr name="x">
+      <int value="123" />
+    </attr>
+  </attrs>
+</expr>
diff --git a/tests/lang/eval-okay-xml.nix b/tests/lang/eval-okay-xml.nix
new file mode 100644
index 000000000000..244b2c0fb401
--- /dev/null
+++ b/tests/lang/eval-okay-xml.nix
@@ -0,0 +1,13 @@
+rec {
+
+  x = 123;
+
+  a = "foo";
+
+  b = "bar";
+
+  c = "foo" + "bar";
+
+  f = {z, x : ["a" "b" ("c" + "d")], y : [true false]}: if y then x else z;
+
+}
\ No newline at end of file