Adds constructor for InvalidInputError
This change allows keyword arguments to constructor of InvalidInputError exception. And supports the use of ``reason`` as well as user-defined arguments as part of the error message. Closes-bug: #1546878 Co-Authored-By: Debayan Ray <debayan.ray@gmail.com> Change-Id: I99d901b58e45a90be128f1006a447ce69ebe91a1
This commit is contained in:
parent
4845cf77b2
commit
32a1cc26f8
@ -24,6 +24,21 @@ class InvalidInputError(Exception):
|
||||
|
||||
message = "Invalid Input: %(reason)s"
|
||||
|
||||
# Note(deray): Not mandating the user to provide the ``reason`` attribute
|
||||
# parameter while raising InvalidInputError exception. This is because of
|
||||
# backward-compatibility reasons. See its unit test file to know about its
|
||||
# different ways of usage.
|
||||
def __init__(self, message=None, **kwargs):
|
||||
|
||||
if not message:
|
||||
message = self.message
|
||||
|
||||
if 'reason' not in kwargs:
|
||||
kwargs['reason'] = 'Unknown'
|
||||
|
||||
message = message % kwargs
|
||||
super(InvalidInputError, self).__init__(message)
|
||||
|
||||
|
||||
class IloError(ProliantUtilsException):
|
||||
"""Base Exception.
|
||||
|
67
proliantutils/tests/test_exception.py
Normal file
67
proliantutils/tests/test_exception.py
Normal file
@ -0,0 +1,67 @@
|
||||
# Copyright 2016 Hewlett Packard Enterprise Development LP
|
||||
# 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.
|
||||
"""Test Class for Exception."""
|
||||
|
||||
import unittest
|
||||
|
||||
import ddt
|
||||
|
||||
from proliantutils import exception
|
||||
|
||||
|
||||
@ddt.ddt
|
||||
class ExceptionTestCase(unittest.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
super(ExceptionTestCase, self).setUp()
|
||||
|
||||
@ddt.data(('check your input', # input - exception message
|
||||
None, # input - exception kwargs
|
||||
'check your input'), # expected raised exception message
|
||||
|
||||
('check your input. %(reason)s',
|
||||
{'reason': 'invalid input provided'},
|
||||
'check your input. invalid input provided'),
|
||||
|
||||
('check your input. %(why)s',
|
||||
{'why': 'invalid input provided'},
|
||||
'check your input. invalid input provided'),
|
||||
|
||||
("just check your input.. that's all. no any reason given",
|
||||
{'reason': 'some reason'},
|
||||
"just check your input.. that's all. no any reason given"),
|
||||
|
||||
(None,
|
||||
{'reason': 'Input not supported'},
|
||||
'Invalid Input: Input not supported'),
|
||||
|
||||
(None,
|
||||
None,
|
||||
'Invalid Input: Unknown'),)
|
||||
@ddt.unpack
|
||||
def test_InvalidInputError(self, input_exc_message, input_exc_kwargs,
|
||||
expected_exc_message):
|
||||
# | GIVEN |
|
||||
def raising_invalid_input_error_exc_with(msg, **kwargs):
|
||||
raise exception.InvalidInputError(msg, **kwargs)
|
||||
|
||||
input_exc_kwargs = input_exc_kwargs or {}
|
||||
# | WHEN | & | THEN |
|
||||
with self.assertRaises(exception.InvalidInputError) as cm:
|
||||
raising_invalid_input_error_exc_with(input_exc_message,
|
||||
**input_exc_kwargs)
|
||||
|
||||
the_exception = cm.exception
|
||||
self.assertEqual(expected_exc_message, str(the_exception))
|
Loading…
Reference in New Issue
Block a user