]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
[Fix] Fix test files to handle missing map env vars
authorVsevolod Stakhov <vsevolod@rspamd.com>
Wed, 19 Nov 2025 14:03:15 +0000 (14:03 +0000)
committerVsevolod Stakhov <vsevolod@rspamd.com>
Wed, 19 Nov 2025 14:03:15 +0000 (14:03 +0000)
- Add defensive checks in maps_kv.lua to skip map creation if env vars not set
- Ensure test config file is always saved to robot-save directory

Fixes issue where external_relay test would crash because maps_kv.lua tried
to create maps with nil URLs when RADIX_MAP/MAP_MAP/REGEXP_MAP env vars
were not defined.

test/functional/lua/maps_kv.lua

index b90f44d0cac078bafe9418422b51eb089b860052..8bf1117f1d8143ac0e7f965cb4453af0b224daad 100644 (file)
@@ -2,25 +2,35 @@ local rspamd_ip = require 'rspamd_ip'
 local rspamd_logger = require 'rspamd_logger'
 local lua_maps = require "lua_maps"
 
-local radix_map = rspamd_config:add_map ({
-  url = rspamd_env.RADIX_MAP,
-  type = 'radix',
-})
+-- Only load maps if environment variables are set
+local radix_map, map_map, regexp_map
 
-local map_map = rspamd_config:add_map ({
-  url = rspamd_env.MAP_MAP,
-  type = 'map',
-})
+if rspamd_env.RADIX_MAP then
+  radix_map = rspamd_config:add_map ({
+    url = rspamd_env.RADIX_MAP,
+    type = 'radix',
+  })
+end
 
-local regexp_map = rspamd_config:add_map ({
-  url = rspamd_env.REGEXP_MAP,
-  type = 'regexp',
-})
+if rspamd_env.MAP_MAP then
+  map_map = rspamd_config:add_map ({
+    url = rspamd_env.MAP_MAP,
+    type = 'map',
+  })
+end
+
+if rspamd_env.REGEXP_MAP then
+  regexp_map = rspamd_config:add_map ({
+    url = rspamd_env.REGEXP_MAP,
+    type = 'regexp',
+  })
+end
 
 rspamd_config:register_symbol({
   name = 'RADIX_KV',
   score = 1.0,
   callback = function()
+    if not radix_map then return true, 'map not loaded' end
     local sip = {'8.8.8.8', '::1', '192.168.1.1', '10.0.1.1'}
     local expected = {'test one', 'another', '1', false}
     for i = 1, #sip do
@@ -42,6 +52,7 @@ rspamd_config:register_symbol({
   name = 'MAP_KV',
   score = 1.0,
   callback = function()
+    if not map_map then return true, 'map not loaded' end
     local str = {'foo', 'asdf.example.com', 'asdf', 'barf'}
     local expected = {'bar', 'value', '', false}
     for i = 1, #str do
@@ -58,6 +69,7 @@ rspamd_config:register_symbol({
   name = 'REGEXP_KV',
   score = 1.0,
   callback = function()
+    if not regexp_map then return true, 'map not loaded' end
     local str = {'foo', 'asdf.example.com', 'asdf', 'barf'}
     local expected = {'bar', 'value', '1', false}
     for i = 1, #str do