]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Add foreach isolation test
authorArran Cudbard-Bell <a.cudbardb@freeradius.org>
Sun, 11 Jan 2015 04:04:17 +0000 (11:04 +0700)
committerArran Cudbard-Bell <a.cudbardb@freeradius.org>
Sun, 11 Jan 2015 04:04:17 +0000 (11:04 +0700)
Foreach should copy all target attributes, so modifying the list being iterated over shouldn't change how foreach behaves

src/tests/keywords/foreach-isolation [new file with mode: 0644]

diff --git a/src/tests/keywords/foreach-isolation b/src/tests/keywords/foreach-isolation
new file mode 100644 (file)
index 0000000..b77806d
--- /dev/null
@@ -0,0 +1,38 @@
+#
+#  PRE: foreach if-multivalue
+#
+
+update {
+       &reply:Filter-Id := 'filter'
+       &control:Tmp-String-0 := '0'
+       &control:Tmp-String-0 += '1'
+       &control:Tmp-String-0 += '2'
+       &control:Tmp-String-0 += '3'
+}
+
+foreach control:Tmp-String-0 {
+       update control {
+               Tmp-String-0 -= "%{expr:%{Foreach-Variable-0} + 1}"
+       }
+       update request {
+               Tmp-String-0 += "%{Foreach-Variable-0}"
+       }
+}
+
+if (!&Tmp-String-0[0] || !&Tmp-String-0[1] || !&Tmp-String-0[2] || !&Tmp-String-0[3]) {
+       update reply {
+               Filter-Id += 'Fail 0'
+       }
+}
+
+if ((&Tmp-String-0[0] != '0') || (&Tmp-String-0[1] != '1') || (&Tmp-String-0[2] != '2') || (&Tmp-String-0[3] != '3')) {
+       update reply {
+               Filter-Id += 'Fail 1'
+       }
+}
+
+if (!&control:Tmp-String-0[0] || &control:Tmp-String-0[1] || &control:Tmp-String-0[2] || &control:Tmp-String-0[3]) {
+       update reply {
+               Filter-Id += 'Fail 2'
+       }
+}