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 <chenrui.momo@gmail.com> Change-Id: Ib9d14661b2755bbd6619e15c0d9023fbc9d27d70 Closes-Bug: #1703782 Closes-Bug: #1703783
This commit is contained in:
		| @@ -397,14 +397,14 @@ class TestIntegShellCliPrecedenceOCC(test_base.TestInteg): | ||||
|         Run 1 has --os-password on CLI | ||||
|         """ | ||||
|  | ||||
|         config_mock.return_value = ( | ||||
|             'file.yaml', | ||||
|             copy.deepcopy(test_shell.CLOUD_2), | ||||
|         ) | ||||
|         vendor_mock.return_value = ( | ||||
|             'file.yaml', | ||||
|             copy.deepcopy(test_shell.PUBLIC_1), | ||||
|         ) | ||||
|         def config_mock_return(): | ||||
|             return ('file.yaml', copy.deepcopy(test_shell.CLOUD_2)) | ||||
|         config_mock.side_effect = config_mock_return | ||||
|  | ||||
|         def vendor_mock_return(): | ||||
|             return ('file.yaml', copy.deepcopy(test_shell.PUBLIC_1)) | ||||
|         vendor_mock.side_effect = vendor_mock_return | ||||
|  | ||||
|         _shell = shell.OpenStackShell() | ||||
|         _shell.run( | ||||
|             "--os-password qaz configuration show".split(), | ||||
| @@ -466,14 +466,14 @@ class TestIntegShellCliPrecedenceOCC(test_base.TestInteg): | ||||
|         Run 2 has --os-username, --os-password, --os-project-domain-id on CLI | ||||
|         """ | ||||
|  | ||||
|         config_mock.return_value = ( | ||||
|             'file.yaml', | ||||
|             copy.deepcopy(test_shell.CLOUD_2), | ||||
|         ) | ||||
|         vendor_mock.return_value = ( | ||||
|             'file.yaml', | ||||
|             copy.deepcopy(test_shell.PUBLIC_1), | ||||
|         ) | ||||
|         def config_mock_return(): | ||||
|             return ('file.yaml', copy.deepcopy(test_shell.CLOUD_2)) | ||||
|         config_mock.side_effect = config_mock_return | ||||
|  | ||||
|         def vendor_mock_return(): | ||||
|             return ('file.yaml', copy.deepcopy(test_shell.PUBLIC_1)) | ||||
|         vendor_mock.side_effect = vendor_mock_return | ||||
|  | ||||
|         _shell = shell.OpenStackShell() | ||||
|         _shell.run( | ||||
|             "--os-username zarquon --os-password qaz " | ||||
|   | ||||
| @@ -45,7 +45,6 @@ class TestFindResourceVolumes(test_utils.TestCase): | ||||
|         resp = mock.Mock() | ||||
|         body = {"volumes": [{"id": ID, 'display_name': NAME}]} | ||||
|         api.client.get.side_effect = [Exception("Not found"), | ||||
|                                       Exception("Not found"), | ||||
|                                       (resp, body)] | ||||
|         self.manager = volumes.VolumeManager(api) | ||||
|  | ||||
| @@ -69,7 +68,6 @@ class TestFindResourceVolumeSnapshots(test_utils.TestCase): | ||||
|         resp = mock.Mock() | ||||
|         body = {"snapshots": [{"id": ID, 'display_name': NAME}]} | ||||
|         api.client.get.side_effect = [Exception("Not found"), | ||||
|                                       Exception("Not found"), | ||||
|                                       (resp, body)] | ||||
|         self.manager = volume_snapshots.SnapshotManager(api) | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Akihiro Motoki
					Akihiro Motoki