Skip to content

Commit 452dd37

Browse files
authored
Merge pull request #440 from infastin/server-alias
feat: add 'server' alias to 'redis' in lua scripts
2 parents ecc4af1 + b5b8ec2 commit 452dd37

2 files changed

Lines changed: 16 additions & 12 deletions

File tree

cmd_scripting.go

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -88,22 +88,21 @@ func (m *Miniredis) runLuaScript(c *server.Peer, sha, script string, readOnly bo
8888
l.SetGlobal("ARGV", argvTable)
8989

9090
redisFuncs, redisConstants := mkLua(m.srv, c, sha, readOnly)
91-
// Register command handlers
92-
l.Push(l.NewFunction(func(l *lua.LState) int {
93-
mod := l.RegisterModule("redis", redisFuncs).(*lua.LTable)
94-
for k, v := range redisConstants {
95-
mod.RawSetString(k, v)
96-
}
97-
l.Push(mod)
98-
return 1
99-
}))
91+
redisMod := l.CreateTable(0, len(redisFuncs)+len(redisConstants))
92+
for fname, fn := range redisFuncs {
93+
redisMod.RawSetString(fname, l.NewFunction(fn))
94+
}
95+
for k, v := range redisConstants {
96+
redisMod.RawSetString(k, v)
97+
}
98+
for _, name := range []string{"redis", "server"} {
99+
l.SetGlobal(name, redisMod)
100+
}
101+
100102
l.RegisterModule("os", mkLuaOS())
101103

102104
_ = doScript(l, protectGlobals)
103105

104-
l.Push(lua.LString("redis"))
105-
l.Call(1, 0)
106-
107106
// lua can call redis.setresp(...), but it's tmp state.
108107
oldresp := c.Resp3
109108
if err := doScript(l, script); err != nil {

cmd_scripting_test.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,11 @@ func TestEval(t *testing.T) {
8383
"EVAL", "return redis.call('expire','foo',1000000)", "0",
8484
)
8585
})
86+
87+
// check that server is an alias for redis
88+
must1(t, c,
89+
"EVAL", "return redis == server", "0",
90+
)
8691
}
8792

8893
func TestEvalCall(t *testing.T) {

0 commit comments

Comments
 (0)