From: Arran Cudbard-Bell Date: Sun, 11 Jan 2015 04:04:17 +0000 (+0700) Subject: Add foreach isolation test X-Git-Tag: release_3_0_7~330 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=400d8385ec4bb97e605c80f873483f68a0cd2f99;p=thirdparty%2Ffreeradius-server.git Add foreach isolation test Foreach should copy all target attributes, so modifying the list being iterated over shouldn't change how foreach behaves --- diff --git a/src/tests/keywords/foreach-isolation b/src/tests/keywords/foreach-isolation new file mode 100644 index 00000000000..b77806dcff7 --- /dev/null +++ b/src/tests/keywords/foreach-isolation @@ -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' + } +}