test {Globals protection reading an undeclared global variable} {
catch {r eval {return a} 0} e
set e
- } {*ERR*global variable*not declared*}
+ } {*ERR*attempted to access unexisting global*}
- test {Globals protection setting an undeclared global variable} {
+ test {Globals protection setting an undeclared global*} {
catch {r eval {a=10} 0} e
set e
- } {*ERR*assignment to undeclared*}
-
- test {Globals protection bypassed using 'global' function} {
- catch {r eval {global("a"); a=10; return a} 0} e
- set e
- } {10}
-
- test {Globals protection can be disabled} {
- r config set lua-protect-globals no
- catch {r eval {b=20; return b} 0} e
- set e
- } {20}
-
- test {Globals protection can be re-enabled} {
- r config set lua-protect-globals yes
- catch {r eval {c=30; return c} 0} e
- set e
- } {*ERR*assignment to undeclared*}
-
- test {Globals protection 'global' function works with mutliple args} {
- catch {r eval {
- global("var1","var2")
- var1=10
- var2=20
- return {var1,var2}
- } 0 } e
- set e
- } {10 20}
+ } {*ERR*attempted to create global*}
+
+ test {Test an example script DECR_IF_GT} {
+ set decr_if_gt {
+ local current
+
+ current = redis.call('get',KEYS[1])
+ if not current then return nil end
+ if current > ARGV[1] then
+ return redis.call('decr',KEYS[1])
+ else
+ return redis.call('get',KEYS[1])
+ end
+ }
+ r set foo 5
+ set res {}
+ lappend res [r eval $decr_if_gt 1 foo 2]
+ lappend res [r eval $decr_if_gt 1 foo 2]
+ lappend res [r eval $decr_if_gt 1 foo 2]
+ lappend res [r eval $decr_if_gt 1 foo 2]
+ lappend res [r eval $decr_if_gt 1 foo 2]
+ set res
+ } {4 3 2 2 2}
}
start_server {tags {"scripting repl"}} {