删除 Plone 5 上的浏览器层
Remove browser layer on Plone 5
在以前的 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
我只差一项测试就可以实现我的附加组件的兼容性!
对于注销浏览器层,接口被忽略。只有浏览器层名称很重要。这必须与之前注册浏览器层的名称相匹配。
问题出在测试中:我正在针对接口名称进行测试,另一个包(在我的例子中,plone.app.event)有一个同名的浏览器层(IBrowserLayer
) :
(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())
这就是为什么进行正确的测试很重要的原因。
在以前的 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
我只差一项测试就可以实现我的附加组件的兼容性!
对于注销浏览器层,接口被忽略。只有浏览器层名称很重要。这必须与之前注册浏览器层的名称相匹配。
问题出在测试中:我正在针对接口名称进行测试,另一个包(在我的例子中,plone.app.event)有一个同名的浏览器层(IBrowserLayer
) :
(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())
这就是为什么进行正确的测试很重要的原因。