Skip to content

Commit

Permalink
[fc] Repository: plone.dexterity
Browse files Browse the repository at this point in the history
Branch: refs/heads/master
Date: 2020-09-30T16:45:33+02:00
Author: Jens W. Klein (jensens) <[email protected]>
Commit: plone/plone.dexterity@03da1ef

fix to use with fixed zope.interface

see zopefoundation/zope.interface#216 (comment)

Files changed:
A news/135.bugfix
M plone/dexterity/tests/test_fti.py
Repository: plone.dexterity

Branch: refs/heads/master
Date: 2020-09-30T21:05:28+02:00
Author: Jens W. Klein (jensens) <[email protected]>
Commit: plone/plone.dexterity@b9385b7

Merge pull request #135 from plone/fix-tests-ziface

fix to use with fixed zope.interface

Files changed:
A news/135.bugfix
M plone/dexterity/tests/test_fti.py
  • Loading branch information
jensens committed Sep 30, 2020
1 parent a7662d6 commit a21301c
Showing 1 changed file with 28 additions and 7 deletions.
35 changes: 28 additions & 7 deletions last_commit.txt
Original file line number Diff line number Diff line change
@@ -1,15 +1,36 @@
Repository: plone.restapi
Repository: plone.dexterity


Branch: refs/heads/master
Date: 2020-09-29T10:19:38+02:00
Author: Timo Stollenwerk (tisto) <[email protected]>
Commit: https://github.com/plone/plone.restapi/commit/e8b3e9ceee29041ef7159955fefea122359afc3d
Date: 2020-09-30T16:45:33+02:00
Author: Jens W. Klein (jensens) <[email protected]>
Commit: https://github.com/plone/plone.dexterity/commit/03da1efaf1361c54144ffb1a806373b3ecda689c

black
fix to use with fixed zope.interface

see https://github.com/zopefoundation/zope.interface/issues/216#issuecomment-701332380

Files changed:
A news/135.bugfix
M plone/dexterity/tests/test_fti.py

b'diff --git a/news/135.bugfix b/news/135.bugfix\nnew file mode 100644\nindex 0000000..adee593\n--- /dev/null\n+++ b/news/135.bugfix\n@@ -0,0 +1,5 @@\n+Fixes test to work clean with zope.interface.\n+Interfaces are hashed based on just their name and module. \n+So every one of these local `IBlank` interfaces will hash the same way, and be treated the same for purposes of zope.interface\'s `_dependents`.\n+Thus in tests mock interfaces must not be used under the same name in the same module.\n+[jensens]\ndiff --git a/plone/dexterity/tests/test_fti.py b/plone/dexterity/tests/test_fti.py\nindex b70fd68..506af26 100644\n--- a/plone/dexterity/tests/test_fti.py\n+++ b/plone/dexterity/tests/test_fti.py\n@@ -650,12 +650,12 @@ class INew(Interface):\n )\n self.mock_utility(site_dummy, ISiteRoot)\n \n- class IBlank(Interface):\n+ class IBlank1(Interface):\n pass\n \n # Set source interface\n schemaName = portalTypeToSchemaName(fti.getId())\n- setattr(plone.dexterity.schema.generated, schemaName, IBlank)\n+ setattr(plone.dexterity.schema.generated, schemaName, IBlank1)\n \n # Sync this with schema\n ftiModified(\n@@ -666,8 +666,8 @@ class IBlank(Interface):\n )\n )\n \n- self.assertTrue(\'title\' in IBlank)\n- self.assertTrue(IBlank[\'title\'].title == u"title")\n+ self.assertTrue(\'title\' in IBlank1)\n+ self.assertTrue(IBlank1[\'title\'].title == u"title")\n \n def test_dynamic_schema_refreshed_on_modify_model_source(self):\n portal_type = u"testtype"\n@@ -686,12 +686,15 @@ class INew(Interface):\n )\n self.mock_utility(site_dummy, ISiteRoot)\n \n- class IBlank(Interface):\n+ # b/c of zope.interface does not support hashing of the same class multiple times\n+ # we need to postfix with a unique number\n+ # see https://github.com/zopefoundation/zope.interface/issues/216#issuecomment-701332380\n+ class IBlank2(Interface):\n pass\n \n # Set source interface\n schemaName = portalTypeToSchemaName(fti.getId())\n- setattr(plone.dexterity.schema.generated, schemaName, IBlank)\n+ setattr(plone.dexterity.schema.generated, schemaName, IBlank2)\n \n # Sync this with schema\n ftiModified(\n@@ -702,8 +705,8 @@ class IBlank(Interface):\n )\n )\n \n- self.assertTrue(\'title\' in IBlank)\n- self.assertTrue(IBlank[\'title\'].title == u"title")\n+ self.assertTrue(\'title\' in IBlank2)\n+ self.assertTrue(IBlank2[\'title\'].title == u"title")\n \n def test_dynamic_schema_refreshed_on_modify_schema_policy(self):\n portal_type = u"testtype"\n@@ -712,7 +715,7 @@ def test_dynamic_schema_refreshed_on_modify_schema_policy(self):\n class INew(Interface):\n title = zope.schema.TextLine(title=u"title")\n \n- class IBlank(Interface):\n+ class IBlank3(Interface):\n pass\n \n class TestSchemaPolicy(DexteritySchemaPolicy):\n@@ -734,7 +737,7 @@ def bases(self, schemaName, tree):\n \n # Set source interface\n schemaName = portalTypeToSchemaName(fti.getId())\n- setattr(plone.dexterity.schema.generated, schemaName, IBlank)\n+ setattr(plone.dexterity.schema.generated, schemaName, IBlank3)\n original = getattr(plone.dexterity.schema.generated, schemaName)\n self.assertNotIn(INew, original.__bases__)\n self.assertNotIn(\'title\', original)\n@@ -758,7 +761,7 @@ def test_concrete_schema_not_refreshed_on_modify_schema(self):\n portal_type = u"testtype"\n fti = DexterityFTI(portal_type)\n \n- class IBlank(Interface):\n+ class IBlank4(Interface):\n pass\n \n class INew(Interface):\n@@ -773,12 +776,12 @@ class INew(Interface):\n self.mock_utility(site_dummy, ISiteRoot)\n \n # Set schema to something so that hasDynamicSchema is false\n- fti.schema = IBlank.__identifier__\n+ fti.schema = IBlank4.__identifier__\n assert not fti.hasDynamicSchema\n \n # Set source for dynamic FTI - should not be used\n schemaName = portalTypeToSchemaName(fti.getId())\n- setattr(plone.dexterity.schema.generated, schemaName, IBlank)\n+ setattr(plone.dexterity.schema.generated, schemaName, IBlank4)\n \n # Sync should not happen now\n \n@@ -790,7 +793,7 @@ class INew(Interface):\n )\n )\n \n- self.assertFalse(\'title\' in IBlank)\n+ self.assertFalse(\'title\' in IBlank4)\n \n def test_old_factory_unregistered_after_name_changed_if_dynamic(self):\n portal_type = u"testtype"\n'

Repository: plone.dexterity


Branch: refs/heads/master
Date: 2020-09-30T21:05:28+02:00
Author: Jens W. Klein (jensens) <[email protected]>
Commit: https://github.com/plone/plone.dexterity/commit/b9385b73d696bd2c40494e734e809ac9f7154366

Merge pull request #135 from plone/fix-tests-ziface

fix to use with fixed zope.interface

Files changed:
M src/plone/restapi/deserializer/mixins.py
A news/135.bugfix
M plone/dexterity/tests/test_fti.py

b'diff --git a/src/plone/restapi/deserializer/mixins.py b/src/plone/restapi/deserializer/mixins.py\nindex c0af0630c..abdf9cf76 100644\n--- a/src/plone/restapi/deserializer/mixins.py\n+++ b/src/plone/restapi/deserializer/mixins.py\n@@ -68,17 +68,14 @@ def resortAllItemsInContext(self, sort_on, sort_order):\n msg = "Content ordering is not supported by this resource"\n raise BadRequest(msg)\n \n- catalog = getToolByName(self.context, \'portal_catalog\')\n+ catalog = getToolByName(self.context, "portal_catalog")\n query = {\n- \'path\': {\n- \'query\': \'/\'.join(self.context.getPhysicalPath()),\n- \'depth\': 1\n- },\n- \'sort_on\': sort_on,\n- \'show_inactive\': True\n+ "path": {"query": "/".join(self.context.getPhysicalPath()), "depth": 1},\n+ "sort_on": sort_on,\n+ "show_inactive": True,\n }\n brains = catalog(**query)\n- if sort_order in (\'reverse\', \'descending\'):\n+ if sort_order in ("reverse", "descending"):\n brains = [b for b in reversed(brains)]\n for idx, brain in enumerate(brains):\n ordering.moveObjectToPosition(brain.id, idx)\n'
b'diff --git a/news/135.bugfix b/news/135.bugfix\nnew file mode 100644\nindex 0000000..adee593\n--- /dev/null\n+++ b/news/135.bugfix\n@@ -0,0 +1,5 @@\n+Fixes test to work clean with zope.interface.\n+Interfaces are hashed based on just their name and module. \n+So every one of these local `IBlank` interfaces will hash the same way, and be treated the same for purposes of zope.interface\'s `_dependents`.\n+Thus in tests mock interfaces must not be used under the same name in the same module.\n+[jensens]\ndiff --git a/plone/dexterity/tests/test_fti.py b/plone/dexterity/tests/test_fti.py\nindex b70fd68..506af26 100644\n--- a/plone/dexterity/tests/test_fti.py\n+++ b/plone/dexterity/tests/test_fti.py\n@@ -650,12 +650,12 @@ class INew(Interface):\n )\n self.mock_utility(site_dummy, ISiteRoot)\n \n- class IBlank(Interface):\n+ class IBlank1(Interface):\n pass\n \n # Set source interface\n schemaName = portalTypeToSchemaName(fti.getId())\n- setattr(plone.dexterity.schema.generated, schemaName, IBlank)\n+ setattr(plone.dexterity.schema.generated, schemaName, IBlank1)\n \n # Sync this with schema\n ftiModified(\n@@ -666,8 +666,8 @@ class IBlank(Interface):\n )\n )\n \n- self.assertTrue(\'title\' in IBlank)\n- self.assertTrue(IBlank[\'title\'].title == u"title")\n+ self.assertTrue(\'title\' in IBlank1)\n+ self.assertTrue(IBlank1[\'title\'].title == u"title")\n \n def test_dynamic_schema_refreshed_on_modify_model_source(self):\n portal_type = u"testtype"\n@@ -686,12 +686,15 @@ class INew(Interface):\n )\n self.mock_utility(site_dummy, ISiteRoot)\n \n- class IBlank(Interface):\n+ # b/c of zope.interface does not support hashing of the same class multiple times\n+ # we need to postfix with a unique number\n+ # see https://github.com/zopefoundation/zope.interface/issues/216#issuecomment-701332380\n+ class IBlank2(Interface):\n pass\n \n # Set source interface\n schemaName = portalTypeToSchemaName(fti.getId())\n- setattr(plone.dexterity.schema.generated, schemaName, IBlank)\n+ setattr(plone.dexterity.schema.generated, schemaName, IBlank2)\n \n # Sync this with schema\n ftiModified(\n@@ -702,8 +705,8 @@ class IBlank(Interface):\n )\n )\n \n- self.assertTrue(\'title\' in IBlank)\n- self.assertTrue(IBlank[\'title\'].title == u"title")\n+ self.assertTrue(\'title\' in IBlank2)\n+ self.assertTrue(IBlank2[\'title\'].title == u"title")\n \n def test_dynamic_schema_refreshed_on_modify_schema_policy(self):\n portal_type = u"testtype"\n@@ -712,7 +715,7 @@ def test_dynamic_schema_refreshed_on_modify_schema_policy(self):\n class INew(Interface):\n title = zope.schema.TextLine(title=u"title")\n \n- class IBlank(Interface):\n+ class IBlank3(Interface):\n pass\n \n class TestSchemaPolicy(DexteritySchemaPolicy):\n@@ -734,7 +737,7 @@ def bases(self, schemaName, tree):\n \n # Set source interface\n schemaName = portalTypeToSchemaName(fti.getId())\n- setattr(plone.dexterity.schema.generated, schemaName, IBlank)\n+ setattr(plone.dexterity.schema.generated, schemaName, IBlank3)\n original = getattr(plone.dexterity.schema.generated, schemaName)\n self.assertNotIn(INew, original.__bases__)\n self.assertNotIn(\'title\', original)\n@@ -758,7 +761,7 @@ def test_concrete_schema_not_refreshed_on_modify_schema(self):\n portal_type = u"testtype"\n fti = DexterityFTI(portal_type)\n \n- class IBlank(Interface):\n+ class IBlank4(Interface):\n pass\n \n class INew(Interface):\n@@ -773,12 +776,12 @@ class INew(Interface):\n self.mock_utility(site_dummy, ISiteRoot)\n \n # Set schema to something so that hasDynamicSchema is false\n- fti.schema = IBlank.__identifier__\n+ fti.schema = IBlank4.__identifier__\n assert not fti.hasDynamicSchema\n \n # Set source for dynamic FTI - should not be used\n schemaName = portalTypeToSchemaName(fti.getId())\n- setattr(plone.dexterity.schema.generated, schemaName, IBlank)\n+ setattr(plone.dexterity.schema.generated, schemaName, IBlank4)\n \n # Sync should not happen now\n \n@@ -790,7 +793,7 @@ class INew(Interface):\n )\n )\n \n- self.assertFalse(\'title\' in IBlank)\n+ self.assertFalse(\'title\' in IBlank4)\n \n def test_old_factory_unregistered_after_name_changed_if_dynamic(self):\n portal_type = u"testtype"\n'

0 comments on commit a21301c

Please sign in to comment.