From e34a06adf06e00f5ae87eec249a50ea6e1c2d09c Mon Sep 17 00:00:00 2001 From: Monty Taylor Date: Sun, 30 Jun 2013 22:57:21 -0400 Subject: [PATCH] Move tests back to neutronclient package Neutron itself has all of its tests in neutron/tests, as do 2/3 of the projects in OpenStack. There are a wealth of reasons to put them in the package, not the least of which that tests/__init__.py implies a code living in a global namespace called tests. Change-Id: I2aaacfe59d6790648aa4587e89e6dd28a9149a6c --- .testr.conf | 2 +- {tests => neutronclient/tests}/__init__.py | 0 .../tests}/unit/__init__.py | 0 .../tests}/unit/fw/__init__.py | 0 .../tests}/unit/fw/test_cli20_firewall.py | 2 +- .../unit/fw/test_cli20_firewallpolicy.py | 2 +- .../tests}/unit/fw/test_cli20_firewallrule.py | 2 +- .../tests}/unit/lb/__init__.py | 0 .../unit/lb/test_cli20_healthmonitor.py | 2 +- .../tests}/unit/lb/test_cli20_member.py | 2 +- .../tests}/unit/lb/test_cli20_pool.py | 2 +- .../tests}/unit/lb/test_cli20_vip.py | 2 +- .../tests}/unit/test_auth.py | 0 .../tests}/unit/test_casual_args.py | 0 .../tests}/unit/test_cli20.py | 0 .../tests}/unit/test_cli20_agenschedulers.py | 2 +- .../tests}/unit/test_cli20_credential.py | 2 +- .../tests}/unit/test_cli20_extensions.py | 4 +- .../tests}/unit/test_cli20_floatingips.py | 2 +- .../tests}/unit/test_cli20_network.py | 2 +- .../tests}/unit/test_cli20_networkprofile.py | 2 +- .../tests}/unit/test_cli20_nvp_queue.py | 2 +- .../unit/test_cli20_nvpnetworkgateway.py | 2 +- .../tests}/unit/test_cli20_policyprofile.py | 2 +- .../tests}/unit/test_cli20_port.py | 2 +- .../tests}/unit/test_cli20_router.py | 2 +- .../tests}/unit/test_cli20_securitygroup.py | 2 +- .../tests}/unit/test_cli20_servicetype.py | 2 +- .../tests}/unit/test_cli20_subnet.py | 2 +- .../tests}/unit/test_http.py | 2 +- .../tests}/unit/test_name_or_id.py | 2 +- .../tests}/unit/test_quota.py | 2 +- .../tests}/unit/test_shell.py | 0 .../tests}/unit/test_ssl.py | 0 neutronclient/tests/unit/test_utils.py | 195 +++++++++++++++--- tests/unit/test_utils.py | 190 ----------------- 36 files changed, 196 insertions(+), 241 deletions(-) rename {tests => neutronclient/tests}/__init__.py (100%) rename {tests => neutronclient/tests}/unit/__init__.py (100%) rename {tests => neutronclient/tests}/unit/fw/__init__.py (100%) rename {tests => neutronclient/tests}/unit/fw/test_cli20_firewall.py (99%) rename {tests => neutronclient/tests}/unit/fw/test_cli20_firewallpolicy.py (99%) rename {tests => neutronclient/tests}/unit/fw/test_cli20_firewallrule.py (99%) rename {tests => neutronclient/tests}/unit/lb/__init__.py (100%) rename {tests => neutronclient/tests}/unit/lb/test_cli20_healthmonitor.py (99%) rename {tests => neutronclient/tests}/unit/lb/test_cli20_member.py (99%) rename {tests => neutronclient/tests}/unit/lb/test_cli20_pool.py (99%) rename {tests => neutronclient/tests}/unit/lb/test_cli20_vip.py (99%) rename {tests => neutronclient/tests}/unit/test_auth.py (100%) rename {tests => neutronclient/tests}/unit/test_casual_args.py (100%) rename {tests => neutronclient/tests}/unit/test_cli20.py (100%) rename {tests => neutronclient/tests}/unit/test_cli20_agenschedulers.py (97%) rename {tests => neutronclient/tests}/unit/test_cli20_credential.py (98%) rename {tests => neutronclient/tests}/unit/test_cli20_extensions.py (94%) rename {tests => neutronclient/tests}/unit/test_cli20_floatingips.py (99%) rename {tests => neutronclient/tests}/unit/test_cli20_network.py (99%) rename {tests => neutronclient/tests}/unit/test_cli20_networkprofile.py (98%) rename {tests => neutronclient/tests}/unit/test_cli20_nvp_queue.py (98%) rename {tests => neutronclient/tests}/unit/test_cli20_nvpnetworkgateway.py (99%) rename {tests => neutronclient/tests}/unit/test_cli20_policyprofile.py (98%) rename {tests => neutronclient/tests}/unit/test_cli20_port.py (99%) rename {tests => neutronclient/tests}/unit/test_cli20_router.py (99%) rename {tests => neutronclient/tests}/unit/test_cli20_securitygroup.py (99%) rename {tests => neutronclient/tests}/unit/test_cli20_servicetype.py (97%) rename {tests => neutronclient/tests}/unit/test_cli20_subnet.py (99%) rename {tests => neutronclient/tests}/unit/test_http.py (97%) rename {tests => neutronclient/tests}/unit/test_name_or_id.py (99%) rename {tests => neutronclient/tests}/unit/test_quota.py (97%) rename {tests => neutronclient/tests}/unit/test_shell.py (100%) rename {tests => neutronclient/tests}/unit/test_ssl.py (100%) delete mode 100644 tests/unit/test_utils.py diff --git a/.testr.conf b/.testr.conf index 2109af6ce..d152a5aa9 100644 --- a/.testr.conf +++ b/.testr.conf @@ -1,4 +1,4 @@ [DEFAULT] -test_command=OS_STDOUT_CAPTURE=1 OS_STDERR_CAPTURE=1 ${PYTHON:-python} -m subunit.run discover -t ./ ./tests $LISTOPT $IDOPTION +test_command=OS_STDOUT_CAPTURE=1 OS_STDERR_CAPTURE=1 ${PYTHON:-python} -m subunit.run discover -t ./ . $LISTOPT $IDOPTION test_id_option=--load-list $IDFILE test_list_option=--list diff --git a/tests/__init__.py b/neutronclient/tests/__init__.py similarity index 100% rename from tests/__init__.py rename to neutronclient/tests/__init__.py diff --git a/tests/unit/__init__.py b/neutronclient/tests/unit/__init__.py similarity index 100% rename from tests/unit/__init__.py rename to neutronclient/tests/unit/__init__.py diff --git a/tests/unit/fw/__init__.py b/neutronclient/tests/unit/fw/__init__.py similarity index 100% rename from tests/unit/fw/__init__.py rename to neutronclient/tests/unit/fw/__init__.py diff --git a/tests/unit/fw/test_cli20_firewall.py b/neutronclient/tests/unit/fw/test_cli20_firewall.py similarity index 99% rename from tests/unit/fw/test_cli20_firewall.py rename to neutronclient/tests/unit/fw/test_cli20_firewall.py index ddaf1ca64..2d1d567b3 100644 --- a/tests/unit/fw/test_cli20_firewall.py +++ b/neutronclient/tests/unit/fw/test_cli20_firewall.py @@ -20,7 +20,7 @@ import sys from neutronclient.neutron.v2_0.fw import firewall -from tests.unit import test_cli20 +from neutronclient.tests.unit import test_cli20 class CLITestV20FirewallJSON(test_cli20.CLITestV20Base): diff --git a/tests/unit/fw/test_cli20_firewallpolicy.py b/neutronclient/tests/unit/fw/test_cli20_firewallpolicy.py similarity index 99% rename from tests/unit/fw/test_cli20_firewallpolicy.py rename to neutronclient/tests/unit/fw/test_cli20_firewallpolicy.py index c5aba47ca..7be066e8b 100644 --- a/tests/unit/fw/test_cli20_firewallpolicy.py +++ b/neutronclient/tests/unit/fw/test_cli20_firewallpolicy.py @@ -23,7 +23,7 @@ import mox from neutronclient.neutron.v2_0.fw import firewallpolicy from neutronclient import shell -from tests.unit import test_cli20 +from neutronclient.tests.unit import test_cli20 class CLITestV20FirewallPolicyJSON(test_cli20.CLITestV20Base): diff --git a/tests/unit/fw/test_cli20_firewallrule.py b/neutronclient/tests/unit/fw/test_cli20_firewallrule.py similarity index 99% rename from tests/unit/fw/test_cli20_firewallrule.py rename to neutronclient/tests/unit/fw/test_cli20_firewallrule.py index 18dd0e311..e8b3ce61c 100644 --- a/tests/unit/fw/test_cli20_firewallrule.py +++ b/neutronclient/tests/unit/fw/test_cli20_firewallrule.py @@ -20,7 +20,7 @@ import sys from neutronclient.neutron.v2_0.fw import firewallrule -from tests.unit import test_cli20 +from neutronclient.tests.unit import test_cli20 class CLITestV20FirewallRuleJSON(test_cli20.CLITestV20Base): diff --git a/tests/unit/lb/__init__.py b/neutronclient/tests/unit/lb/__init__.py similarity index 100% rename from tests/unit/lb/__init__.py rename to neutronclient/tests/unit/lb/__init__.py diff --git a/tests/unit/lb/test_cli20_healthmonitor.py b/neutronclient/tests/unit/lb/test_cli20_healthmonitor.py similarity index 99% rename from tests/unit/lb/test_cli20_healthmonitor.py rename to neutronclient/tests/unit/lb/test_cli20_healthmonitor.py index b14065195..959bd98bf 100644 --- a/tests/unit/lb/test_cli20_healthmonitor.py +++ b/neutronclient/tests/unit/lb/test_cli20_healthmonitor.py @@ -22,7 +22,7 @@ import sys import mox from neutronclient.neutron.v2_0.lb import healthmonitor -from tests.unit import test_cli20 +from neutronclient.tests.unit import test_cli20 class CLITestV20LbHealthmonitorJSON(test_cli20.CLITestV20Base): diff --git a/tests/unit/lb/test_cli20_member.py b/neutronclient/tests/unit/lb/test_cli20_member.py similarity index 99% rename from tests/unit/lb/test_cli20_member.py rename to neutronclient/tests/unit/lb/test_cli20_member.py index b280320cb..ff0bc8ca1 100644 --- a/tests/unit/lb/test_cli20_member.py +++ b/neutronclient/tests/unit/lb/test_cli20_member.py @@ -20,7 +20,7 @@ import sys from neutronclient.neutron.v2_0.lb import member -from tests.unit import test_cli20 +from neutronclient.tests.unit import test_cli20 class CLITestV20LbMemberJSON(test_cli20.CLITestV20Base): diff --git a/tests/unit/lb/test_cli20_pool.py b/neutronclient/tests/unit/lb/test_cli20_pool.py similarity index 99% rename from tests/unit/lb/test_cli20_pool.py rename to neutronclient/tests/unit/lb/test_cli20_pool.py index 50151d2b0..7bc64da46 100644 --- a/tests/unit/lb/test_cli20_pool.py +++ b/neutronclient/tests/unit/lb/test_cli20_pool.py @@ -22,7 +22,7 @@ import sys import mox from neutronclient.neutron.v2_0.lb import pool -from tests.unit import test_cli20 +from neutronclient.tests.unit import test_cli20 class CLITestV20LbPoolJSON(test_cli20.CLITestV20Base): diff --git a/tests/unit/lb/test_cli20_vip.py b/neutronclient/tests/unit/lb/test_cli20_vip.py similarity index 99% rename from tests/unit/lb/test_cli20_vip.py rename to neutronclient/tests/unit/lb/test_cli20_vip.py index c11a4eecb..332cc813a 100644 --- a/tests/unit/lb/test_cli20_vip.py +++ b/neutronclient/tests/unit/lb/test_cli20_vip.py @@ -20,7 +20,7 @@ import sys from neutronclient.neutron.v2_0.lb import vip -from tests.unit import test_cli20 +from neutronclient.tests.unit import test_cli20 class CLITestV20LbVipJSON(test_cli20.CLITestV20Base): diff --git a/tests/unit/test_auth.py b/neutronclient/tests/unit/test_auth.py similarity index 100% rename from tests/unit/test_auth.py rename to neutronclient/tests/unit/test_auth.py diff --git a/tests/unit/test_casual_args.py b/neutronclient/tests/unit/test_casual_args.py similarity index 100% rename from tests/unit/test_casual_args.py rename to neutronclient/tests/unit/test_casual_args.py diff --git a/tests/unit/test_cli20.py b/neutronclient/tests/unit/test_cli20.py similarity index 100% rename from tests/unit/test_cli20.py rename to neutronclient/tests/unit/test_cli20.py diff --git a/tests/unit/test_cli20_agenschedulers.py b/neutronclient/tests/unit/test_cli20_agenschedulers.py similarity index 97% rename from tests/unit/test_cli20_agenschedulers.py rename to neutronclient/tests/unit/test_cli20_agenschedulers.py index 0092eac16..d4a32c271 100644 --- a/tests/unit/test_cli20_agenschedulers.py +++ b/neutronclient/tests/unit/test_cli20_agenschedulers.py @@ -20,7 +20,7 @@ import sys from neutronclient.neutron.v2_0 import agentscheduler -from tests.unit import test_cli20 +from neutronclient.tests.unit import test_cli20 class CLITestV20LBaaSAgentScheduler(test_cli20.CLITestV20Base): diff --git a/tests/unit/test_cli20_credential.py b/neutronclient/tests/unit/test_cli20_credential.py similarity index 98% rename from tests/unit/test_cli20_credential.py rename to neutronclient/tests/unit/test_cli20_credential.py index 71b5da97e..ca1bed6af 100644 --- a/tests/unit/test_cli20_credential.py +++ b/neutronclient/tests/unit/test_cli20_credential.py @@ -20,7 +20,7 @@ import sys from neutronclient.neutron.v2_0 import credential -from tests.unit import test_cli20 +from neutronclient.tests.unit import test_cli20 class CLITestV20Credential(test_cli20.CLITestV20Base): diff --git a/tests/unit/test_cli20_extensions.py b/neutronclient/tests/unit/test_cli20_extensions.py similarity index 94% rename from tests/unit/test_cli20_extensions.py rename to neutronclient/tests/unit/test_cli20_extensions.py index 16664aca6..a64cc9a09 100644 --- a/tests/unit/test_cli20_extensions.py +++ b/neutronclient/tests/unit/test_cli20_extensions.py @@ -19,8 +19,8 @@ import sys from neutronclient.neutron.v2_0.extension import ListExt from neutronclient.neutron.v2_0.extension import ShowExt -from tests.unit.test_cli20 import CLITestV20Base -from tests.unit.test_cli20 import MyApp +from neutronclient.tests.unit.test_cli20 import CLITestV20Base +from neutronclient.tests.unit.test_cli20 import MyApp class CLITestV20Extension(CLITestV20Base): diff --git a/tests/unit/test_cli20_floatingips.py b/neutronclient/tests/unit/test_cli20_floatingips.py similarity index 99% rename from tests/unit/test_cli20_floatingips.py rename to neutronclient/tests/unit/test_cli20_floatingips.py index 8e7e5882f..d5b986400 100644 --- a/tests/unit/test_cli20_floatingips.py +++ b/neutronclient/tests/unit/test_cli20_floatingips.py @@ -19,7 +19,7 @@ import sys from neutronclient.neutron.v2_0 import floatingip as fip -from tests.unit import test_cli20 +from neutronclient.tests.unit import test_cli20 class CLITestV20FloatingIpsJSON(test_cli20.CLITestV20Base): diff --git a/tests/unit/test_cli20_network.py b/neutronclient/tests/unit/test_cli20_network.py similarity index 99% rename from tests/unit/test_cli20_network.py rename to neutronclient/tests/unit/test_cli20_network.py index 4fc8235bd..46f125dff 100644 --- a/tests/unit/test_cli20_network.py +++ b/neutronclient/tests/unit/test_cli20_network.py @@ -22,7 +22,7 @@ from neutronclient.common import exceptions from neutronclient.common import utils from neutronclient.neutron.v2_0 import network from neutronclient import shell -from tests.unit import test_cli20 +from neutronclient.tests.unit import test_cli20 class CLITestV20NetworkJSON(test_cli20.CLITestV20Base): diff --git a/tests/unit/test_cli20_networkprofile.py b/neutronclient/tests/unit/test_cli20_networkprofile.py similarity index 98% rename from tests/unit/test_cli20_networkprofile.py rename to neutronclient/tests/unit/test_cli20_networkprofile.py index 544778295..61d9ede6a 100644 --- a/tests/unit/test_cli20_networkprofile.py +++ b/neutronclient/tests/unit/test_cli20_networkprofile.py @@ -20,7 +20,7 @@ import sys from neutronclient.neutron.v2_0 import networkprofile -from tests.unit import test_cli20 +from neutronclient.tests.unit import test_cli20 class CLITestV20NetworkProfile(test_cli20.CLITestV20Base): diff --git a/tests/unit/test_cli20_nvp_queue.py b/neutronclient/tests/unit/test_cli20_nvp_queue.py similarity index 98% rename from tests/unit/test_cli20_nvp_queue.py rename to neutronclient/tests/unit/test_cli20_nvp_queue.py index f74552639..9d21e3ded 100644 --- a/tests/unit/test_cli20_nvp_queue.py +++ b/neutronclient/tests/unit/test_cli20_nvp_queue.py @@ -19,7 +19,7 @@ import sys from neutronclient.neutron.v2_0 import nvp_qos_queue as qos -from tests.unit import test_cli20 +from neutronclient.tests.unit import test_cli20 class CLITestV20NvpQosQueueJSON(test_cli20.CLITestV20Base): diff --git a/tests/unit/test_cli20_nvpnetworkgateway.py b/neutronclient/tests/unit/test_cli20_nvpnetworkgateway.py similarity index 99% rename from tests/unit/test_cli20_nvpnetworkgateway.py rename to neutronclient/tests/unit/test_cli20_nvpnetworkgateway.py index 81185aa10..d4dfd0570 100644 --- a/tests/unit/test_cli20_nvpnetworkgateway.py +++ b/neutronclient/tests/unit/test_cli20_nvpnetworkgateway.py @@ -18,7 +18,7 @@ import sys from neutronclient.neutron.v2_0 import nvpnetworkgateway as nwgw -from tests.unit import test_cli20 +from neutronclient.tests.unit import test_cli20 class CLITestV20NetworkGatewayJSON(test_cli20.CLITestV20Base): diff --git a/tests/unit/test_cli20_policyprofile.py b/neutronclient/tests/unit/test_cli20_policyprofile.py similarity index 98% rename from tests/unit/test_cli20_policyprofile.py rename to neutronclient/tests/unit/test_cli20_policyprofile.py index 0578631f3..3ff560373 100644 --- a/tests/unit/test_cli20_policyprofile.py +++ b/neutronclient/tests/unit/test_cli20_policyprofile.py @@ -20,7 +20,7 @@ import sys from neutronclient.neutron.v2_0 import policyprofile -from tests.unit import test_cli20 +from neutronclient.tests.unit import test_cli20 class CLITestV20PolicyProfile(test_cli20.CLITestV20Base): diff --git a/tests/unit/test_cli20_port.py b/neutronclient/tests/unit/test_cli20_port.py similarity index 99% rename from tests/unit/test_cli20_port.py rename to neutronclient/tests/unit/test_cli20_port.py index 8fd6661ea..ed91d6a7d 100644 --- a/tests/unit/test_cli20_port.py +++ b/neutronclient/tests/unit/test_cli20_port.py @@ -21,7 +21,7 @@ import mox from neutronclient.neutron.v2_0 import port from neutronclient import shell -from tests.unit import test_cli20 +from neutronclient.tests.unit import test_cli20 class CLITestV20PortJSON(test_cli20.CLITestV20Base): diff --git a/tests/unit/test_cli20_router.py b/neutronclient/tests/unit/test_cli20_router.py similarity index 99% rename from tests/unit/test_cli20_router.py rename to neutronclient/tests/unit/test_cli20_router.py index c8ef88284..f7b6111bf 100644 --- a/tests/unit/test_cli20_router.py +++ b/neutronclient/tests/unit/test_cli20_router.py @@ -19,7 +19,7 @@ import sys from neutronclient.common import exceptions from neutronclient.neutron.v2_0 import router -from tests.unit import test_cli20 +from neutronclient.tests.unit import test_cli20 class CLITestV20RouterJSON(test_cli20.CLITestV20Base): diff --git a/tests/unit/test_cli20_securitygroup.py b/neutronclient/tests/unit/test_cli20_securitygroup.py similarity index 99% rename from tests/unit/test_cli20_securitygroup.py rename to neutronclient/tests/unit/test_cli20_securitygroup.py index b7bea09fc..85c3be643 100644 --- a/tests/unit/test_cli20_securitygroup.py +++ b/neutronclient/tests/unit/test_cli20_securitygroup.py @@ -21,7 +21,7 @@ import sys import mox from neutronclient.neutron.v2_0 import securitygroup -from tests.unit import test_cli20 +from neutronclient.tests.unit import test_cli20 class CLITestV20SecurityGroupsJSON(test_cli20.CLITestV20Base): diff --git a/tests/unit/test_cli20_servicetype.py b/neutronclient/tests/unit/test_cli20_servicetype.py similarity index 97% rename from tests/unit/test_cli20_servicetype.py rename to neutronclient/tests/unit/test_cli20_servicetype.py index 863af7872..7f6afb534 100644 --- a/tests/unit/test_cli20_servicetype.py +++ b/neutronclient/tests/unit/test_cli20_servicetype.py @@ -20,7 +20,7 @@ import sys from neutronclient.neutron.v2_0 import servicetype -from tests.unit import test_cli20 +from neutronclient.tests.unit import test_cli20 class CLITestV20ServiceProvidersJSON(test_cli20.CLITestV20Base): diff --git a/tests/unit/test_cli20_subnet.py b/neutronclient/tests/unit/test_cli20_subnet.py similarity index 99% rename from tests/unit/test_cli20_subnet.py rename to neutronclient/tests/unit/test_cli20_subnet.py index c7fc9fd54..850b3cd65 100644 --- a/tests/unit/test_cli20_subnet.py +++ b/neutronclient/tests/unit/test_cli20_subnet.py @@ -18,7 +18,7 @@ import sys from neutronclient.neutron.v2_0 import subnet -from tests.unit import test_cli20 +from neutronclient.tests.unit import test_cli20 class CLITestV20SubnetJSON(test_cli20.CLITestV20Base): diff --git a/tests/unit/test_http.py b/neutronclient/tests/unit/test_http.py similarity index 97% rename from tests/unit/test_http.py rename to neutronclient/tests/unit/test_http.py index 09182324f..910944a84 100644 --- a/tests/unit/test_http.py +++ b/neutronclient/tests/unit/test_http.py @@ -20,7 +20,7 @@ import testtools from neutronclient.client import HTTPClient from neutronclient.common import exceptions -from tests.unit.test_cli20 import MyResp +from neutronclient.tests.unit.test_cli20 import MyResp AUTH_TOKEN = 'test_token' diff --git a/tests/unit/test_name_or_id.py b/neutronclient/tests/unit/test_name_or_id.py similarity index 99% rename from tests/unit/test_name_or_id.py rename to neutronclient/tests/unit/test_name_or_id.py index b93cd13c0..4e9ebb974 100644 --- a/tests/unit/test_name_or_id.py +++ b/neutronclient/tests/unit/test_name_or_id.py @@ -22,8 +22,8 @@ import testtools from neutronclient.common import exceptions from neutronclient.neutron import v2_0 as neutronV20 +from neutronclient.tests.unit import test_cli20 from neutronclient.v2_0 import client -from tests.unit import test_cli20 class CLITestNameorID(testtools.TestCase): diff --git a/tests/unit/test_quota.py b/neutronclient/tests/unit/test_quota.py similarity index 97% rename from tests/unit/test_quota.py rename to neutronclient/tests/unit/test_quota.py index e971f46cc..da4f3c9cc 100644 --- a/tests/unit/test_quota.py +++ b/neutronclient/tests/unit/test_quota.py @@ -19,7 +19,7 @@ import sys from neutronclient.common import exceptions from neutronclient.neutron.v2_0 import quota as test_quota -from tests.unit import test_cli20 +from neutronclient.tests.unit import test_cli20 class CLITestV20Quota(test_cli20.CLITestV20Base): diff --git a/tests/unit/test_shell.py b/neutronclient/tests/unit/test_shell.py similarity index 100% rename from tests/unit/test_shell.py rename to neutronclient/tests/unit/test_shell.py diff --git a/tests/unit/test_ssl.py b/neutronclient/tests/unit/test_ssl.py similarity index 100% rename from tests/unit/test_ssl.py rename to neutronclient/tests/unit/test_ssl.py diff --git a/neutronclient/tests/unit/test_utils.py b/neutronclient/tests/unit/test_utils.py index 22c4ba45d..e9b4d42ad 100644 --- a/neutronclient/tests/unit/test_utils.py +++ b/neutronclient/tests/unit/test_utils.py @@ -1,5 +1,5 @@ -# Copyright 2013 OpenStack LLC. -# All Rights Reserved +# Copyright (C) 2013 Yahoo! 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 @@ -12,34 +12,179 @@ # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. -# # vim: tabstop=4 shiftwidth=4 softtabstop=4 +import datetime +import sys + import testtools +from neutronclient.common import exceptions from neutronclient.common import utils -class UtilsTest(testtools.TestCase): - def test_safe_encode_list(self): - o = object() - unicode_text = u'\u7f51\u7edc' - l = ['abc', unicode_text, unicode_text.encode('utf-8'), o] - expected = ['abc', unicode_text.encode('utf-8'), - unicode_text.encode('utf-8'), o] - self.assertEqual(utils.safe_encode_list(l), expected) +class TestUtils(testtools.TestCase): + def test_string_to_bool_true(self): + self.assertTrue(utils.str2bool('true')) - def test_safe_encode_dict(self): - o = object() - unicode_text = u'\u7f51\u7edc' - d = {'test1': unicode_text, - 'test2': [unicode_text, o], - 'test3': o, - 'test4': {'test5': unicode_text}, - 'test6': unicode_text.encode('utf-8')} - expected = {'test1': unicode_text.encode('utf-8'), - 'test2': [unicode_text.encode('utf-8'), o], - 'test3': o, - 'test4': {'test5': unicode_text.encode('utf-8')}, - 'test6': unicode_text.encode('utf-8')} - self.assertEqual(utils.safe_encode_dict(d), expected) + def test_string_to_bool_false(self): + self.assertFalse(utils.str2bool('false')) + + def test_string_to_bool_None(self): + self.assertIsNone(utils.str2bool(None)) + + def test_string_to_dictionary(self): + input_str = 'key1=value1,key2=value2' + expected = {'key1': 'value1', 'key2': 'value2'} + self.assertEqual(expected, utils.str2dict(input_str)) + + def test_get_dict_item_properties(self): + item = {'name': 'test_name', 'id': 'test_id'} + fields = ('name', 'id') + actual = utils.get_item_properties(item=item, fields=fields) + self.assertEqual(('test_name', 'test_id'), actual) + + def test_get_object_item_properties_mixed_case_fields(self): + class Fake(object): + def __init__(self): + self.id = 'test_id' + self.name = 'test_name' + self.test_user = 'test' + + fields = ('name', 'id', 'test user') + mixed_fields = ('test user', 'ID') + item = Fake() + actual = utils.get_item_properties(item, fields, mixed_fields) + self.assertEqual(('test_name', 'test_id', 'test'), actual) + + def test_get_object_item_desired_fields_differ_from_item(self): + class Fake(object): + def __init__(self): + self.id = 'test_id_1' + self.name = 'test_name' + self.test_user = 'test' + + fields = ('name', 'id', 'test user') + item = Fake() + actual = utils.get_item_properties(item, fields) + self.assertNotEqual(('test_name', 'test_id', 'test'), actual) + + def test_get_object_item_desired_fields_is_empty(self): + class Fake(object): + def __init__(self): + self.id = 'test_id_1' + self.name = 'test_name' + self.test_user = 'test' + + fields = [] + item = Fake() + actual = utils.get_item_properties(item, fields) + self.assertEqual((), actual) + + def test_get_object_item_with_formatters(self): + class Fake(object): + def __init__(self): + self.id = 'test_id' + self.name = 'test_name' + self.test_user = 'test' + + class FakeCallable(object): + def __call__(self, *args, **kwargs): + return 'pass' + + fields = ('name', 'id', 'test user', 'is_public') + formatters = {'is_public': FakeCallable()} + item = Fake() + act = utils.get_item_properties(item, fields, formatters=formatters) + self.assertEqual(('test_name', 'test_id', 'test', 'pass'), act) + + +class JSONUtilsTestCase(testtools.TestCase): + def test_dumps(self): + self.assertEqual(utils.dumps({'a': 'b'}), '{"a": "b"}') + + def test_dumps_dict_with_date_value(self): + x = datetime.datetime(1920, 2, 3, 4, 5, 6, 7) + res = utils.dumps({1: 'a', 2: x}) + expected = '{"1": "a", "2": "1920-02-03 04:05:06.000007"}' + self.assertEqual(expected, res) + + def test_dumps_dict_with_spaces(self): + x = datetime.datetime(1920, 2, 3, 4, 5, 6, 7) + res = utils.dumps({1: 'a ', 2: x}) + expected = '{"1": "a ", "2": "1920-02-03 04:05:06.000007"}' + self.assertEqual(expected, res) + + def test_loads(self): + self.assertEqual(utils.loads('{"a": "b"}'), {'a': 'b'}) + + +class ToPrimitiveTestCase(testtools.TestCase): + def test_list(self): + self.assertEqual(utils.to_primitive([1, 2, 3]), [1, 2, 3]) + + def test_empty_list(self): + self.assertEqual(utils.to_primitive([]), []) + + def test_tuple(self): + self.assertEqual(utils.to_primitive((1, 2, 3)), [1, 2, 3]) + + def test_empty_tuple(self): + self.assertEqual(utils.to_primitive(()), []) + + def test_dict(self): + self.assertEqual( + utils.to_primitive(dict(a=1, b=2, c=3)), + dict(a=1, b=2, c=3)) + + def test_empty_dict(self): + self.assertEqual(utils.to_primitive({}), {}) + + def test_datetime(self): + x = datetime.datetime(1920, 2, 3, 4, 5, 6, 7) + self.assertEqual( + utils.to_primitive(x), + '1920-02-03 04:05:06.000007') + + def test_iter(self): + x = xrange(1, 6) + self.assertEqual(utils.to_primitive(x), [1, 2, 3, 4, 5]) + + def test_iteritems(self): + d = {'a': 1, 'b': 2, 'c': 3} + + class IterItemsClass(object): + def iteritems(self): + return d.iteritems() + + x = IterItemsClass() + p = utils.to_primitive(x) + self.assertEqual(p, {'a': 1, 'b': 2, 'c': 3}) + + def test_nasties(self): + def foo(): + pass + x = [datetime, foo, dir] + ret = utils.to_primitive(x) + self.assertEqual(len(ret), 3) + + def test_to_primitive_dict_with_date_value(self): + x = datetime.datetime(1920, 2, 3, 4, 5, 6, 7) + res = utils.to_primitive({'a': x}) + self.assertEqual({'a': '1920-02-03 04:05:06.000007'}, res) + + +class ImportClassTestCase(testtools.TestCase): + def test_import_class(self): + dt = utils.import_class('datetime.datetime') + self.assertTrue(sys.modules['datetime'].datetime is dt) + + def test_import_bad_class(self): + self.assertRaises( + ImportError, utils.import_class, + 'lol.u_mad.brah') + + def test_get_client_class_invalid_version(self): + self.assertRaises( + exceptions.UnsupportedVersion, + utils.get_client_class, 'image', '2', {'image': '2'}) diff --git a/tests/unit/test_utils.py b/tests/unit/test_utils.py deleted file mode 100644 index e9b4d42ad..000000000 --- a/tests/unit/test_utils.py +++ /dev/null @@ -1,190 +0,0 @@ -# Copyright (C) 2013 Yahoo! 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. -# vim: tabstop=4 shiftwidth=4 softtabstop=4 - -import datetime -import sys - -import testtools - -from neutronclient.common import exceptions -from neutronclient.common import utils - - -class TestUtils(testtools.TestCase): - def test_string_to_bool_true(self): - self.assertTrue(utils.str2bool('true')) - - def test_string_to_bool_false(self): - self.assertFalse(utils.str2bool('false')) - - def test_string_to_bool_None(self): - self.assertIsNone(utils.str2bool(None)) - - def test_string_to_dictionary(self): - input_str = 'key1=value1,key2=value2' - expected = {'key1': 'value1', 'key2': 'value2'} - self.assertEqual(expected, utils.str2dict(input_str)) - - def test_get_dict_item_properties(self): - item = {'name': 'test_name', 'id': 'test_id'} - fields = ('name', 'id') - actual = utils.get_item_properties(item=item, fields=fields) - self.assertEqual(('test_name', 'test_id'), actual) - - def test_get_object_item_properties_mixed_case_fields(self): - class Fake(object): - def __init__(self): - self.id = 'test_id' - self.name = 'test_name' - self.test_user = 'test' - - fields = ('name', 'id', 'test user') - mixed_fields = ('test user', 'ID') - item = Fake() - actual = utils.get_item_properties(item, fields, mixed_fields) - self.assertEqual(('test_name', 'test_id', 'test'), actual) - - def test_get_object_item_desired_fields_differ_from_item(self): - class Fake(object): - def __init__(self): - self.id = 'test_id_1' - self.name = 'test_name' - self.test_user = 'test' - - fields = ('name', 'id', 'test user') - item = Fake() - actual = utils.get_item_properties(item, fields) - self.assertNotEqual(('test_name', 'test_id', 'test'), actual) - - def test_get_object_item_desired_fields_is_empty(self): - class Fake(object): - def __init__(self): - self.id = 'test_id_1' - self.name = 'test_name' - self.test_user = 'test' - - fields = [] - item = Fake() - actual = utils.get_item_properties(item, fields) - self.assertEqual((), actual) - - def test_get_object_item_with_formatters(self): - class Fake(object): - def __init__(self): - self.id = 'test_id' - self.name = 'test_name' - self.test_user = 'test' - - class FakeCallable(object): - def __call__(self, *args, **kwargs): - return 'pass' - - fields = ('name', 'id', 'test user', 'is_public') - formatters = {'is_public': FakeCallable()} - item = Fake() - act = utils.get_item_properties(item, fields, formatters=formatters) - self.assertEqual(('test_name', 'test_id', 'test', 'pass'), act) - - -class JSONUtilsTestCase(testtools.TestCase): - def test_dumps(self): - self.assertEqual(utils.dumps({'a': 'b'}), '{"a": "b"}') - - def test_dumps_dict_with_date_value(self): - x = datetime.datetime(1920, 2, 3, 4, 5, 6, 7) - res = utils.dumps({1: 'a', 2: x}) - expected = '{"1": "a", "2": "1920-02-03 04:05:06.000007"}' - self.assertEqual(expected, res) - - def test_dumps_dict_with_spaces(self): - x = datetime.datetime(1920, 2, 3, 4, 5, 6, 7) - res = utils.dumps({1: 'a ', 2: x}) - expected = '{"1": "a ", "2": "1920-02-03 04:05:06.000007"}' - self.assertEqual(expected, res) - - def test_loads(self): - self.assertEqual(utils.loads('{"a": "b"}'), {'a': 'b'}) - - -class ToPrimitiveTestCase(testtools.TestCase): - def test_list(self): - self.assertEqual(utils.to_primitive([1, 2, 3]), [1, 2, 3]) - - def test_empty_list(self): - self.assertEqual(utils.to_primitive([]), []) - - def test_tuple(self): - self.assertEqual(utils.to_primitive((1, 2, 3)), [1, 2, 3]) - - def test_empty_tuple(self): - self.assertEqual(utils.to_primitive(()), []) - - def test_dict(self): - self.assertEqual( - utils.to_primitive(dict(a=1, b=2, c=3)), - dict(a=1, b=2, c=3)) - - def test_empty_dict(self): - self.assertEqual(utils.to_primitive({}), {}) - - def test_datetime(self): - x = datetime.datetime(1920, 2, 3, 4, 5, 6, 7) - self.assertEqual( - utils.to_primitive(x), - '1920-02-03 04:05:06.000007') - - def test_iter(self): - x = xrange(1, 6) - self.assertEqual(utils.to_primitive(x), [1, 2, 3, 4, 5]) - - def test_iteritems(self): - d = {'a': 1, 'b': 2, 'c': 3} - - class IterItemsClass(object): - def iteritems(self): - return d.iteritems() - - x = IterItemsClass() - p = utils.to_primitive(x) - self.assertEqual(p, {'a': 1, 'b': 2, 'c': 3}) - - def test_nasties(self): - def foo(): - pass - x = [datetime, foo, dir] - ret = utils.to_primitive(x) - self.assertEqual(len(ret), 3) - - def test_to_primitive_dict_with_date_value(self): - x = datetime.datetime(1920, 2, 3, 4, 5, 6, 7) - res = utils.to_primitive({'a': x}) - self.assertEqual({'a': '1920-02-03 04:05:06.000007'}, res) - - -class ImportClassTestCase(testtools.TestCase): - def test_import_class(self): - dt = utils.import_class('datetime.datetime') - self.assertTrue(sys.modules['datetime'].datetime is dt) - - def test_import_bad_class(self): - self.assertRaises( - ImportError, utils.import_class, - 'lol.u_mad.brah') - - def test_get_client_class_invalid_version(self): - self.assertRaises( - exceptions.UnsupportedVersion, - utils.get_client_class, 'image', '2', {'image': '2'})