summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2020-12-19 22:35:21 +0800
committerruki <[email protected]>2020-12-19 22:35:21 +0800
commit81dad1aa47babec142d75b0d286c6b9ef37fc8fc (patch)
treef575aa57fcb6878e0a9b25c06132610c1d625dc9
parenta61f0ae466ce6b8ae1c6d994ec20263fa6aa26a8 (diff)
add cache test
-rw-r--r--tests/modules/cache/test.lua19
-rw-r--r--xmake/core/cache/memcache.lua14
2 files changed, 23 insertions, 10 deletions
diff --git a/tests/modules/cache/test.lua b/tests/modules/cache/test.lua
new file mode 100644
index 000000000..ff22b0b68
--- /dev/null
+++ b/tests/modules/cache/test.lua
@@ -0,0 +1,19 @@
+import("core.cache.memcache")
+
+function test_memcache(t)
+ memcache.value_set("mycache", "myscope", "mykey", "1")
+ t:are_equal(memcache.value("mycache", "myscope", "mykey"), "1")
+ memcache.value_add("mycache", "myscope", "mykey", "2")
+ t:are_equal(memcache.value("mycache", "myscope", "mykey"), {"1", "2"})
+ memcache.clear("mycache")
+ t:are_equal(memcache.value("mycache", "myscope", "mykey"), nil)
+ memcache.value_set("mycache", "myscope", "mykey", "1")
+ memcache.clear()
+ t:are_equal(memcache.value("mycache", "myscope", "mykey"), nil)
+ memcache.value_add("mycache", "myscope", "mykey", "2")
+ t:are_equal(memcache.value("mycache", "myscope", "mykey"), "2")
+ t:are_equal(memcache.scope("mycache", "myscope"), {mykey = "2"})
+ memcache.scope_set("mycache", "myscope", {mykey = "3"})
+ t:are_equal(memcache.value("mycache", "myscope", "mykey"), "3")
+end
+
diff --git a/xmake/core/cache/memcache.lua b/xmake/core/cache/memcache.lua
index f167a2ab7..0a4e33932 100644
--- a/xmake/core/cache/memcache.lua
+++ b/xmake/core/cache/memcache.lua
@@ -136,19 +136,13 @@ function memcache.value_add(cachename, scopename, name, value)
return memcache.cache(cachename):value_add(scopename, name, value)
end
--- clear caches of the given group name, it will clear all caches if group name is nil
---
--- @code
--- memcache.clear() -- clear all caches
--- memcache.clear("groupname") -- clear caches with `groupname.*`
--- @endcode
---
-function memcache.clear(groupname)
+-- clear the given cache, it will clear all caches if cache name is nil
+function memcache.clear(cachename)
local caches = memcache.caches()
if caches then
for _, cache in pairs(caches) do
- if groupname then
- if cache:name():startswith(groupname .. ".") then
+ if cachename then
+ if cache:name() == cachename then
cache:clear()
end
else