Mehdi Abaakouk 3ee1fa3f13 Always init cfg.CONF before running a test
In all tests cfg.CONF is not (re)initialised correctly
By chance in ceilometer , the only method that fail when conf is not
initialised is cfg.CONF.find_file.
And because some tests do special initialisation (ie: the ones that test
ceilometer.service.prepare_service stuff), the method cfg.CONF.find_file
works when we run all tests.

But if you decide to run only one test (like below) that use find_file it fail
because cfg.CONF is not initialised.

  tox -epy27,pep8 api.v2

Not all configurations opts are impacted but only the CLI opts ones that are
set only when cfg.CONF() is called.

This change initialise cfg.CONF on each test (but the test can
continue to reinitialise it if needed)

Change-Id: I37842e945a7e2908e17d5ce886e17047a36818f7
2013-07-23 18:10:09 +02:00

70 lines
2.2 KiB
Python

#!/usr/bin/env python
# -*- encoding: utf-8 -*-
#
# Copyright © 2012 New Dream Network (DreamHost)
#
# Author: Doug Hellmann <doug.hellmann@dreamhost.com>
#
# 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.
"""Test base classes.
"""
import fixtures
import mox
from oslo.config import cfg
import os.path
import stubout
import testtools
cfg.CONF.import_opt('pipeline_cfg_file', 'ceilometer.pipeline')
class TestCase(testtools.TestCase):
def setUp(self):
super(TestCase, self).setUp()
self.mox = mox.Mox()
self.stubs = stubout.StubOutForTesting()
self.tempdir = self.useFixture(fixtures.TempDir())
self.useFixture(fixtures.FakeLogger())
cfg.CONF([], project='ceilometer')
# Set a default location for the pipeline config file so the
# tests work even if ceilometer is not installed globally on
# the system.
cfg.CONF.set_override(
'pipeline_cfg_file',
self.path_get('etc/ceilometer/pipeline.yaml'),
)
def path_get(self, project_file=None):
root = os.path.abspath(os.path.join(os.path.dirname(__file__),
'..',
'..',
)
)
if project_file:
return os.path.join(root, project_file)
else:
return root
def temp_config_file_path(self, name='ceilometer.conf'):
return os.path.join(self.tempdir.path, name)
def tearDown(self):
self.mox.UnsetStubs()
self.stubs.UnsetAll()
self.stubs.SmartUnsetAll()
self.mox.VerifyAll()
cfg.CONF.reset()
super(TestCase, self).tearDown()