general_hardware的单元测试出错

在跑general_hardware单元测试时出错,错误信息如下

Test_get_sdi_cpld_info测试用例目的是测试dpu_object:get_sdi_cpld_info()函数,

其中函数中会创建一个文件,如下

local file_sec = require 'utils.file'
...
local fp = file_sec.open_s(file_name, 'w+')

这里返回了nil,通过调试发现使用io.open替代file_sec.open_s后,测试用例正常通过,请问两者有什么区别吗,如何解决

我检查utils下的file.lua文件,发现其实就是对io.open的封装

local file = {}

file.open_s = function (...)
    return io.open(...)
end

return file

我在加载模块的地方,尝试进行修改

diff --git a/test/unit/dpu_service/test_dpu_object.lua b/test/unit/dpu_service/test_dpu_object.lua
index c9b411c..654aa1a 100644
--- a/test/unit/dpu_service/test_dpu_object.lua
+++ b/test/unit/dpu_service/test_dpu_object.lua
@@ -25,6 +25,8 @@ local log = require 'mc.logging'
 local sd_bus = require 'sd_bus'
 local mdb = require 'mc.mdb'

+file_sec.open_s = io.open
+
 TestDpuObj = {}

 local DPUCARD_INTF<const> = 'bmc.kepler.Systems.DPUCard'

修改后,测试用例正常通过,感觉是加载模块出现了什么问题,有没有大佬帮忙分析下

file_sec.open_s会校验软连接、路径问题,使用io.open不校验软连接、路径问题,所以io.open可以打开,file_sec.open_s打开会失败