在跑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打开会失败