alkaid_release_platform/tests/test_config_expend.py

233 lines
7.0 KiB
Python
Raw Normal View History

from database import *
def test_black_list_expand():
# 如下的参考数据来源于 原本的脚本里面的 BLACK_LIST_DEFAULT
ref = """
sdk/interface/include/aio/
sdk/interface/include/ai/
sdk/interface/src/ai/
sdk/impl/ai/
sdk/interface/src/aio
sdk/impl/aio
sdk/interface/include/ao/
sdk/interface/src/ao/
sdk/impl/ao/
sdk/interface/include/alsa/
sdk/interface/src/alsa/
sdk/impl/alsa/
sdk/interface/include/cipher/
sdk/interface/src/cipher/
sdk/impl/cipher/
sdk/interface/src/common
sdk/impl/common
sdk/interface/include/cus3a/
sdk/interface/src/cus3a/
sdk/interface/include/debug
sdk/interface/src/debug
sdk/impl/debug
sdk/interface/include/dummy/
sdk/interface/src/dummy/
sdk/impl/dummy/
sdk/interface/include/disp
sdk/interface/src/disp
sdk/impl/disp
sdk/interface/include/dpu/
sdk/interface/src/dpu/
sdk/impl/dpu/
sdk/interface/include/dsp/
sdk/interface/src/dsp/
sdk/impl/dsp/
sdk/interface/include/fb/
sdk/interface/src/fb/
sdk/impl/fb/
sdk/interface/include/gfx/
sdk/interface/src/gfx/
sdk/impl/gfx/
sdk/interface/include/hdmi/
sdk/interface/src/hdmi/
sdk/impl/hdmi/
sdk/interface/include/hdmirx
sdk/interface/src/hdmirx
sdk/impl/hdmirx
sdk/interface/include/hvp
sdk/interface/src/hvp
sdk/impl/hvp
sdk/interface/include/ipu
sdk/interface/src/ipu
sdk/impl/ipu
sdk/interface/include/iqserver/
sdk/interface/src/iqserver/
sdk/interface/include/ive
sdk/interface/src/ive
sdk/impl/ive
sdk/interface/include/jpd/
sdk/interface/src/jpd/
sdk/impl/jpd
sdk/interface/include/mipitx/
sdk/interface/src/mipitx/
sdk/impl/mipitx/
sdk/interface/include/nir
sdk/interface/src/nir
sdk/impl/nir
sdk/interface/include/panel/
sdk/interface/src/panel/
sdk/impl/panel/
sdk/interface/include/pcie/
sdk/interface/src/pcie/
sdk/impl/pcie/
sdk/interface/include/pspi
sdk/interface/src/pspi
sdk/impl/pspi
sdk/interface/include/rgn
sdk/interface/src/rgn
sdk/impl/rgn
sdk/interface/include/scl
sdk/interface/src/scl
sdk/impl/scl
sdk/interface/include/sed/
sdk/interface/src/sed/
sdk/interface/include/sensor
sdk/interface/src/sensor
sdk/impl/sensor
sdk/interface/include/shadow/
sdk/interface/src/shadow/
sdk/impl/shadow/
sdk/impl/sys
sdk/interface/include/vdec/
sdk/interface/src/vdec/
sdk/impl/vdec/
sdk/interface/include/md/
sdk/interface/include/od/
sdk/interface/include/vg/
sdk/interface/include/vdf/
sdk/interface/src/vdf/
sdk/interface/src/vcodec
sdk/interface/include/vdisp/
sdk/interface/src/vdisp/
sdk/impl/vdisp/
sdk/interface/include/wlan/
sdk/interface/src/wlan/
rtos/proj/sc/driver/sysdriver/dualos
rtos/proj/sc/driver/sysdriver/otp
rtos/proj/sc/driver/sysdriver/usb_gadget/udc/usb30
rtos/proj/sc/system/rtos/freertos
rtos/proj/sc_priv/arch/arm/cortex-a/v7_aarch32/context_switch
rtos/proj/sc_priv/arch/arm/cortex-a/v7_aarch32/lh_monitor
rtos/proj/sc_priv/driver/sysdriver/dualos
rtos/proj/sc_priv/driver/sysdriver/otp
rtos/proj/sc_priv/driver/sysdriver/usb_gadget/udc/usb30
rtos/proj/sc_priv/system/rtos/freertos
pm_rtos/proj/sc/driver/sysdriver/usb_gadget/udc/usb30
pm_rtos/proj/sc/driver/camdriver/common
pm_rtos/proj/sc/driver/camdriver/pm_aio
pm_rtos/proj/sc/driver/camdriver/pm_idle
pm_rtos/proj/sc/driver/camdriver/pm_jpe
pm_rtos/proj/sc/driver/camdriver/pm_md
pm_rtos/proj/sc/driver/camdriver/pm_radar
pm_rtos/proj/sc/driver/camdriver/pm_usbpoc
pm_rtos/proj/sc/driver/camdriver/pm_vif
"""
BlackListDefault.check()
ret = sorted(set(config_expand(BlackListDefault)))
ret = [_.strip('/') for _ in ret]
# with open("temp/test_expand.txt", "w") as f:
# for item in ret:
# item = item.strip('/')
# f.write(item + "\n")
exp = [_.strip() for _ in ref.split()]
exp = sorted(set(exp))
exp = [_.strip('/') for _ in exp]
# with open("temp/test_expand_ref.txt", "w") as f:
# for item in exp:
# f.write(item + "\n")
assert ret == exp
#print("BLACK_LIST_DEFAULT.expand: ", ret)
def test_black_list_internal_expand():
BlackListInternal.check()
ref = """
sdk/interface/include/isp/
sdk/interface/src/isp/
sdk/impl/isp/
sdk/interface/include/ispalgo/
sdk/interface/src/ispalgo/
sdk/interface/include/ldc/
sdk/interface/src/ldc/
sdk/impl/ldc/
sdk/interface/include/venc
sdk/interface/src/venc
sdk/impl/venc
sdk/interface/include/vif
sdk/interface/src/vif
sdk/impl/vif
pm_rtos/proj/sc/driver/camdriver/pm_isp/
pm_rtos/proj/sc/driver/camdriver/pm_ispalgo/
pm_rtos/proj/sc/driver/camdriver/pm_radar_algo/
"""
ret = sorted(set(config_expand(BlackListInternal)))
ret = [_.strip('/') for _ in ret]
# with open("temp/test_expand_internal.txt", "w") as f:
# for item in ret:
# f.write(item + "\n")
exp = [_.strip() for _ in ref.split()]
exp = sorted(set(exp))
exp = [_.strip('/') for _ in exp]
# with open("temp/test_expand_ref_internal.txt", "w") as f:
# for item in exp:
# f.write(item + "\n")
assert ret == exp
def test_config_format():
ReleaseOptions.SWBoardAlias = "iford"
@AutoInstanceDecorator
class TestAlias(BaseConfig):
_config = [
"preload_sample",
]
ret = config_expand(TestAlias)
assert ret == ["sdk/verify/sample_code/source/iford/preload_sample/rtos"]
def test_config_test_item():
@AutoInstanceDecorator
class TestAlias(BaseConfig):
_config = [
"preload_sample",
]
TestAlias.update(["xxx/xxx/yyy", "zzz/zzz/www", "test_item"])
ret = config_expand(TestAlias)
# 使用list方式访问
assert [_ for _ in ["xxx/xxx/yyy", "zzz/zzz/www", "test_item"] if _ in ret]
# 使用dict方式访问
assert TestAlias.get("xxx/xxx/yyy") == "xxx/xxx/yyy"
assert TestAlias["zzz/zzz/www"] == "zzz/zzz/www"
# 使用索引方式修改item 因为这是一个list类型的配置所以修改了值其key也会跟着修改
TestAlias["zzz/zzz/www"] = "zzz/zzz/www_new"
assert TestAlias["zzz/zzz/www_new"] == "zzz/zzz/www_new"
# 获取不存在的item
assert TestAlias.get("zzz/zzz/www", 'default') == 'default'
# 特殊访问方式。直接使用一个路径去访问,这样即使这个路径不存在,也不会抛出异常而是返回路径本身
assert TestAlias["zzz/zzz/www"] == "zzz/zzz/www"
# 通过索引的方式访问不存在的item 会抛出异常
try:
TestAlias["unexist_item"]
except KeyError:
assert True
else:
assert False
# 使用点号方式访问
assert TestAlias.test_item == "test_item"
# 使用点号方式设置
TestAlias.test_item = "test_item_new" # 会自动将test_item从_list中删除并添加test_item_new
assert TestAlias.test_item_new == "test_item_new"
# 使用点号方式删除后,再次访问会抛出异常
try:
del TestAlias.test_item_new
TestAlias.test_item_new
except KeyError:
assert True
else:
assert False
# 删除后使用get方式访问会返回默认值
assert TestAlias.get("test_item", "default") == "default"