在以前的Plone版本中,QuickInstaller负责在卸载时自动删除一些东西;这是浏览器图层和资源注册表资源的情况。现在,在Plone 5中,最好的做法是包含一个GenericSetup配置文件,以明确卸载这些文件。
我接着Keul's blog post on uninstalls并在我的软件包卸载配置文件中添加了browserlayer.xml
文件,如下所示:
<?xml version="1.0"?>
<layers>
<layer name="collective.fingerpointing" remove="true" />
</layers>
但是我的包裹没有删除它。
任何提示?
代码位于:https://github.com/collective/collective.fingerpointing/pull/6
测试结果位于:https://travis-ci.org/collective/collective.fingerpointing/jobs/110195902
我只是完成了我的附加组件兼容性的一次测试!
答案 0 :(得分:1)
要取消注册浏览器图层,将忽略该界面。只有浏览器图层名称很重要。这必须与之前注册浏览器层的名称相匹配。
答案 1 :(得分:1)
问题在于测试:我正在测试接口的名称,另一个包(在我的情况下,plone.app.event)有一个同名浏览器层(IBrowserLayer
):< / p>
(Pdb) registered_layers()[4]
<InterfaceClass plone.app.event.interfaces.IBrowserLayer>
我正在使用它:
def test_addon_layer_removed(self):
from plone.browserlayer.utils import registered_layers
layers = [l.getName() for l in registered_layers()]
self.assertNotIn('IBrowserLayer', layers)
我将其更改为以下内容:
def test_addon_layer_removed(self):
from collective.fingerpointing.interfaces import IBrowserLayer
from plone.browserlayer.utils import registered_layers
self.assertNotIn(IBrowserLayer, registered_layers())
为什么选择合适的测试很重要。