From 3eda05a9b0b69803a0269f2aa344d14e5823bf6d Mon Sep 17 00:00:00 2001 From: Swann Croiset Date: Tue, 10 Dec 2013 21:50:59 +0100 Subject: [PATCH] Add oslo mock fixture Change-Id: I8f75a7c112cf8232197f901c9b1b025a30c9ba71 --- heat/openstack/common/fixture/__init__.py | 0 heat/openstack/common/fixture/mockpatch.py | 49 ++++++++++++++++++++++ heat/tests/common.py | 6 +++ openstack-common.conf | 1 + 4 files changed, 56 insertions(+) create mode 100644 heat/openstack/common/fixture/__init__.py create mode 100644 heat/openstack/common/fixture/mockpatch.py diff --git a/heat/openstack/common/fixture/__init__.py b/heat/openstack/common/fixture/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/heat/openstack/common/fixture/mockpatch.py b/heat/openstack/common/fixture/mockpatch.py new file mode 100644 index 0000000000..858e77cd06 --- /dev/null +++ b/heat/openstack/common/fixture/mockpatch.py @@ -0,0 +1,49 @@ +# Copyright 2010 United States Government as represented by the +# Administrator of the National Aeronautics and Space Administration. +# Copyright 2013 Hewlett-Packard Development Company, L.P. +# All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +import fixtures +import mock + + +class PatchObject(fixtures.Fixture): + """Deal with code around mock.""" + + def __init__(self, obj, attr, **kwargs): + self.obj = obj + self.attr = attr + self.kwargs = kwargs + + def setUp(self): + super(PatchObject, self).setUp() + _p = mock.patch.object(self.obj, self.attr, **self.kwargs) + self.mock = _p.start() + self.addCleanup(_p.stop) + + +class Patch(fixtures.Fixture): + + """Deal with code around mock.patch.""" + + def __init__(self, obj, **kwargs): + self.obj = obj + self.kwargs = kwargs + + def setUp(self): + super(Patch, self).setUp() + _p = mock.patch(self.obj, **self.kwargs) + self.mock = _p.start() + self.addCleanup(_p.stop) diff --git a/heat/tests/common.py b/heat/tests/common.py index 687a7b70bc..e1199f0399 100644 --- a/heat/tests/common.py +++ b/heat/tests/common.py @@ -23,6 +23,8 @@ import testtools from oslo.config import cfg +from heat.openstack.common.fixture import mockpatch + from heat.engine import environment from heat.engine import resources from heat.engine import scheduler @@ -79,3 +81,7 @@ class HeatTestCase(testtools.TestCase): self.m.StubOutWithMock(scheduler, 'wallclock') scheduler.wallclock = fake_wallclock + + def patch(self, obj, attr): + mockfixture = self.useFixture(mockpatch.PatchObject(obj, attr)) + return mockfixture.mock diff --git a/openstack-common.conf b/openstack-common.conf index 81110ec218..2dccbbe6e4 100644 --- a/openstack-common.conf +++ b/openstack-common.conf @@ -5,6 +5,7 @@ module=db module=db.sqlalchemy module=eventlet_backdoor module=excutils +module=fixture module=gettextutils module=importutils module=install_venv_common