2

在以前的 Plone 版本中,QuickInstaller 会在卸载时自动删除一些东西;浏览器层和资源注册表资源就是这种情况。现在在 Plone 5 中,最好的做法是包含一个 GenericSetup 配置文件来显式卸载这些瘦身。

我跟进了Keul 关于卸载的博客文章,并在我的包卸载配置文件中添加了一个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

我只是完成附加组件兼容性的一项测试!

4

2 回答 2

1

问题出在测试中:我正在测试接口的名称,而另一个包(在我的例子中是 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())

这就是为什么进行正确的测试很重要的原因。

于 2016-02-18T23:30:19.233 回答
1

对于注销浏览器层,该接口将被忽略。只有浏览器层名称很重要。这必须与之前注册浏览器层的名称相匹配。

于 2016-02-18T22:36:20.653 回答