OSC unit test volume.test_find_resource fails with osc-lib 1.7.0

Bug #1703782 reported by Akihiro Motoki
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
python-openstackclient
Fix Released
Undecided
Akihiro Motoki

Bug Description

4 unit tests in openstackclient.tests.unit.volume.test_find_resource fail with osc-lib 1.7.0 changes.

The following is an example.

openstackclient.tests.unit.volume.test_find_resource.TestFindResourceVolumes.test_find
--------------------------------------------------------------------------------------

Captured traceback:
~~~~~~~~~~~~~~~~~~~
    Traceback (most recent call last):
      File "openstackclient/tests/unit/volume/test_find_resource.py", line 53, in test_find
        result = utils.find_resource(self.manager, NAME)
      File "/home/ubuntu/work/osc-lib/osc_lib/utils.py", line 236, in find_resource
        if (resource.get('id') == name_or_id or
    TypeError: get() takes exactly 1 argument (2 given)

Revision history for this message
Akihiro Motoki (amotoki) wrote :
Changed in python-openstackclient:
assignee: nobody → Akihiro Motoki (amotoki)
status: New → In Progress
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to python-openstackclient (master)

Reviewed: https://review.openstack.org/482880
Committed: https://git.openstack.org/cgit/openstack/python-openstackclient/commit/?id=3cba09e767c6af3f715828966f0d0fa21edc00a8
Submitter: Jenkins
Branch: master

commit 3cba09e767c6af3f715828966f0d0fa21edc00a8
Author: Akihiro Motoki <email address hidden>
Date: Wed Jul 12 09:42:28 2017 +0000

    Fix unit test failures related to new os-client-config and osc-lib

    [breakage related to os-client-config 1.28.0]
    os-client-config 1.28.0 add a check if filebased and envvars are
    both used. This check causes OSC unit test failure.

    OSC now instantiates OpenStackConfig twice as a workaround.
    The unit test mocks _load_config_file() and it returns a config dict,
    but os-client-config OpenStackConfig.__init__ updates the dict returned.
    As a result, when OpenStackConfig is instantiated second time,
    the mock of _load_config_file returns a modified version of the config
    dict. This hits the new check in os-client-config 1.28.0.

    This commit changes the mock to use side_effect rather than return_value
    to ensure the original dict is used.

    [breakage related to osc-lib 1.7.0]
    The change in osc-lib 1.7.0 added "if" logic to avoid calling get() twice.
    In tests.unit.volume.test_find_resource, kwargs is empty dict in find_resource(),
    so the second call to get() is NOT called now.
    Removing the second elements of side_effect addresses the unit failure.

    Co-Authored-By: Rui Chen <email address hidden>
    Change-Id: Ib9d14661b2755bbd6619e15c0d9023fbc9d27d70
    Closes-Bug: #1703782
    Closes-Bug: #1703783

Changed in python-openstackclient:
status: In Progress → Fix Released
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix included in openstack/python-openstackclient 3.12.0

This issue was fixed in the openstack/python-openstackclient 3.12.0 release.

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.