-
-
Notifications
You must be signed in to change notification settings - Fork 75
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
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
Showing
1 changed file
with
28 additions
and
7 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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' | ||
|