diff --git a/plone/app/upgrade/v40/alphas.py b/plone/app/upgrade/v40/alphas.py index e08e15ce..9b07bf8b 100644 --- a/plone/app/upgrade/v40/alphas.py +++ b/plone/app/upgrade/v40/alphas.py @@ -385,7 +385,8 @@ def cleanUpToolRegistry(context): required = toolset._required.copy() existing = portal.keys() changed = False - for name, info in required.items(): + items = list(required.items()) + for name, info in items: if name not in existing: del required[name] changed = True diff --git a/plone/app/upgrade/v50/testing.py b/plone/app/upgrade/v50/testing.py index 998c28eb..e258aa16 100644 --- a/plone/app/upgrade/v50/testing.py +++ b/plone/app/upgrade/v50/testing.py @@ -29,14 +29,13 @@ def setUpZope(self, app, configurationContext): def setUpPloneSite(self, portal): app = portal.aq_parent login(app['acl_users'], 'admin') - # import old ZEXP try: path = os.path.join(os.path.abspath( os.path.dirname(__file__)), 'data', 'test-full.zexp') app._importObjectFromFile(path, verify=0) - except BaseException: - logger.exception('Failed to import ZEXP from old site.') + except Exception as e: + logger.exception('Failed to import ZEXP from old site. ({})'.format(e)) else: # run upgrades self['portal'] = portal = app.test diff --git a/plone/app/upgrade/v50/tests.py b/plone/app/upgrade/v50/tests.py index 913929a8..023206a1 100644 --- a/plone/app/upgrade/v50/tests.py +++ b/plone/app/upgrade/v50/tests.py @@ -13,7 +13,6 @@ import six import unittest - try: from Products.CMFPlone.factory import _IMREALLYPLONE5 _IMREALLYPLONE5 # pyflakes @@ -179,7 +178,7 @@ def test_fix_double_smaxage(self): def test_suite(): - # Skip these tests on Plone 4 + # Skip these tests if not Plone 5.0 or 5.1 from unittest import TestSuite, makeSuite if not six.PY2 or not PLONE_5: return TestSuite() diff --git a/plone/app/upgrade/v52/alphas.py b/plone/app/upgrade/v52/alphas.py index b73a6599..2f6c710a 100644 --- a/plone/app/upgrade/v52/alphas.py +++ b/plone/app/upgrade/v52/alphas.py @@ -2,11 +2,8 @@ from BTrees.OOBTree import OOBTree from plone.app.upgrade.utils import cleanUpSkinsTool from plone.app.upgrade.utils import loadMigrationProfile -<<<<<<< HEAD from plone.dexterity.interfaces import IDexterityFTI -======= from plone.app.upgrade.v40.alphas import cleanUpToolRegistry ->>>>>>> remove portal tools and configuration registry. testing from plone.folder.nogopip import manage_addGopipIndex from plone.registry.interfaces import IRegistry from Products.CMFCore.utils import getToolByName @@ -36,6 +33,23 @@ def migrate_gopipindex(context): manage_addGopipIndex(catalog, 'getObjPositionInParent') +def remove_legacy_resource_registries(context): + """Remove portal_css and portal_javascripts.""" + portal_url = getToolByName(context, 'portal_url') + portal = portal_url.getPortalObject() + + tools_to_remove = [ + 'portal_css', + 'portal_javascripts', + ] + + # remove obsolete tools + tools = [t for t in tools_to_remove if t in portal] + portal.manage_delObjects(tools) + + cleanUpToolRegistry(context) + + def rebuild_memberdata(context): # MemberData has changed radically, see plone/Products.PlonePAS#24 # This results in a bug in upgraded sites: plone/Products.CMFPlone#2722 @@ -111,6 +125,7 @@ def to52alpha1(context): cleanup_resources() migrate_gopipindex(context) + remove_legacy_resource_registries(context) rebuild_memberdata(context) fix_core_behaviors_in_ftis(context) remove_portal_tools(context) diff --git a/plone/app/upgrade/v52/data/test-full-5_1.zexp b/plone/app/upgrade/v52/data/test-full-5_1.zexp new file mode 100644 index 00000000..791703d1 Binary files /dev/null and b/plone/app/upgrade/v52/data/test-full-5_1.zexp differ diff --git a/plone/app/upgrade/v52/testing.py b/plone/app/upgrade/v52/testing.py new file mode 100644 index 00000000..921c64e1 --- /dev/null +++ b/plone/app/upgrade/v52/testing.py @@ -0,0 +1,62 @@ +# -*- coding: utf-8 -*- +from plone.app.testing import PLONE_FIXTURE +from plone.app.testing import PloneSandboxLayer +from plone.app.upgrade.utils import loadMigrationProfile +from plone.testing.z2 import FunctionalTesting +from plone.testing.z2 import login +from zope.component.hooks import setSite + +import logging +import os + + +logger = logging.getLogger(__file__) + + +class RealUpgradeLayer(PloneSandboxLayer): + defaultBases = (PLONE_FIXTURE,) + + # def setUpZope(self, app, configurationContext): + # # load ZCML + # # In 5.0 alpha we install or upgrade plone.app.caching, + # # so it must be available to Zope.. + # import plone.app.caching + # self.loadZCML( + # name='configure.zcml', + # package=plone.app.caching, + # ) + + def setUpPloneSite(self, portal): + app = portal.aq_parent + login(app['acl_users'], 'admin') + # import old ZEXP + try: + path = os.path.join(os.path.abspath( + os.path.dirname(__file__)), 'data', 'test-full-5_1.zexp') + app._importObjectFromFile(path, verify=0) + except Exception as e: + import pdb; pdb.set_trace() + logger.exception('Failed to import ZEXP from old site. ({})'.format(e)) + else: + # run upgrades + self['portal'] = portal = app.test + setSite(portal) + if get_distribution('Products.CMFPlone').version >= '5.2': + # for 5.2 we need tools as utilities + loadMigrationProfile( + portal.portal_setup, + 'profile-plone.app.upgrade.v52:to52alpha1', + steps=['componentregistry']) + portal.portal_migration.upgrade(swallow_errors=False) + setSite(None) + + def tearDownPloneSite(self, portal): + try: + del self['portal'] + except KeyError: + pass + + +REAL_UPGRADE_FIXTURE = RealUpgradeLayer() +REAL_UPGRADE_FUNCTIONAL = FunctionalTesting( + bases=(REAL_UPGRADE_FIXTURE,), name='plone.app.upgrade:5.1 -> 5.2') diff --git a/plone/app/upgrade/v52/tests.py b/plone/app/upgrade/v52/tests.py index f0d3a3ad..ae94ed6b 100644 --- a/plone/app/upgrade/v52/tests.py +++ b/plone/app/upgrade/v52/tests.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- -from plone.app.upgrade.v50.testing import REAL_UPGRADE_FUNCTIONAL +from plone.app.upgrade.v52.testing import REAL_UPGRADE_FUNCTIONAL from plone.testing.z2 import Browser from pkg_resources import get_distribution import unittest -PLONE_52 = get_distribution('Products.CMFPlone').version >= '5.2' +PLONE_51 = get_distribution('Products.CMFPlone').version >= '5.1' class TestFunctionalMigrations(unittest.TestCase): @@ -17,15 +17,16 @@ class TestFunctionalMigrations(unittest.TestCase): layer = REAL_UPGRADE_FUNCTIONAL def setUp(self): - self.portal = self.layer['app'].test + self.portal = self.layer['app'].plone def testFullyUpgraded(self): self.assertFalse(self.portal.portal_migration.needUpgrading()) def testCanRenderHomepage(self): browser = Browser(self.layer['app']) - browser.open('http://nohost/test') - self.assertTrue('Welcome' in browser.contents) + portalURL = self.portal.absolute_url() + browser.open(portalURL) + self.assertTrue('Plone' in browser.contents) def testToolsAreRemoved(self): self.assertFalse('portal_css' in self.portal) @@ -33,11 +34,8 @@ def testToolsAreRemoved(self): def test_suite(): - # Skip these tests on Plone < 5.2 - - print("PLONE_52 {}").format(PLONE_52) # debug - import pdb; pdb.set_trace() - if not PLONE_52: + # Skip these tests on Plone < 5.1 + if not PLONE_51: return unittest.TestSuite() suite = unittest.TestSuite()