712a6fa482
This patch makes output of `tox -epy34` to finish with following message: > py34: commands succeeded > congratulations :) Issues: * module "__builtin__" was renamed to "builtins" in Python 3 Related modules: - rally.api - tests.unit.benchmark.scenarios.vm.test_utils * function "map"/"filter" returns "builtins.map"/"builtins.filter" object in Python 3 instead of list in Python 2. "builtins.map" and "builtins.filter" object is not subscriptable and has no len(), so list comprehension is preferable to use and py2/py3 compatible way. Related modules: - rally.benchmark.context.sahara.sahara_edp - rally.benchmark.processing.plot - rally.benchmark.sla.base - rally.benchmark.types - rally.cmd.commands.task - rally.cmd.commands.verify - tests.unit.benchmark.scenarios.test_base - tests.unit.benchmark.wrappers.test_keystone - tests.unit.cmd.commands.test_task - tests.unit.cmd.commands.test_verify * dict.keys()/dict.values() returns "dict_keys"/"dict_values" object in Python 3 instead of list in Python 2. so list(dict) and list(dict.values()) should be used instead. Related modules: - rally.benchmark.scenarios.utils - rally.benchmark.scenarios.vm.vmtasks - tests.unit.cmd.commands.test_show - tests.unit.common.test_broker - tests.unit.deploy.engines.test_fuel - tests.unit.fakes * Some changes was made in Python 3 related to data model, so we should change our inspect code. See code changes for more details Related modules: - rally.cmd.cliutils - rally.common.utils * ConfigParser is more strict for duplicate items in Python 3, so duplicates are removed Related files: - rally/verification/tempest/config.ini * Exception object doesn't have "message" attribute in Python 3, so if we want to get it, the most proper way is using "getattr" Related modules: - rally.verification.tempest.config * "mock.MagicMock" is not sortable in Python 3, so we should add required attributes to fix that. Related modules: - tests.unit.benchmark.context.test_base * assertSequenceEqual assertation method was added in tests.unit.test to compare sequence objects Related modules: - tests.unit.benchmark.context.cleanup.test_resources - tests.unit.benchmark.scenarios.nova.test_utils * function "range" returns "range" object in Python 3 instead of list in Python 2. Related modules: - tests.unit.benchmark.processing.test_utils * keyword arguments should be transmitted to self.assertRaises as kwargs, not like a dict Related modules: - tests.unit.benchmark.scenarios.dummy.test_dummy Additional changes: * Python 2.6 was added to setup.cfg, since Rally supports it. * py33, py34 environments were added to tox.ini * wrong ignore path was removed from tox.ini * made items of bash complition sorted Several tests are skipped in Python 3 env. For more details see notes in code: - tests.unit.benchmark.processing.test_plot.PlotTestCase.test__process_main_time - tests.unit.benchmark.processing.test_plot.PlotTestCase.test__process_atomic_time - tests.unit.common.test_utils.MethodClassTestCase.test_method_class_for_class_level_method During porting Rally to Python3, several issues found and fixed in TempestContext and its unit tests: - If process of cleanup is failed, exception is handled and cleanup is marked as successfull. This issue was fixed and CleanUpException was added to rally.exception module - Cleanup was called with wrong path. Change-Id: If04e873790dcb4c9c882d4be4bf40479deedd36d
44 lines
1.7 KiB
Python
44 lines
1.7 KiB
Python
# Copyright 2014: Mirantis Inc.
|
|
# 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 difflib
|
|
import os
|
|
|
|
from oslo_utils import encodeutils
|
|
|
|
import rally
|
|
from rally.cmd import cliutils
|
|
from tests.unit import test
|
|
|
|
RES_PATH = os.path.join(os.path.dirname(rally.__file__), os.pardir, "tools")
|
|
|
|
|
|
class BashCompletionTestCase(test.TestCase):
|
|
def test_bash_completion(self):
|
|
old = open(os.path.join(RES_PATH,
|
|
"rally.bash_completion"), "r").read().splitlines()
|
|
new = cliutils._generate_bash_completion_script().splitlines()
|
|
if old != new:
|
|
for line in difflib.unified_diff(old, new):
|
|
print (line)
|
|
new_filename = "/tmp/rally.bash.new"
|
|
with open(new_filename, "wb") as new_file:
|
|
new_file.write(encodeutils.safe_encode("\n".join(new)))
|
|
self.fail("bash completion script is outdated. "
|
|
"New script is located at %s "
|
|
"You may fix this by executing "
|
|
"`mv %s tools/rally.bash_completion`" % (new_filename,
|
|
new_filename))
|