322126212e
Mock has a method called assert_called_once_with to check that a mock was called and the arguments it took were as expected. Mock does not have a method called assert_called_once and calling it just creates a mock bound to that name. This means that not only is nothing tested when assert_called_once is used, the tests also don't warn about this. This commit attempts to address this in two ways: - all occurrences of assert_called_once are replaced with a real assertion. - the hacking check that nova uses to guard against this has been copied to cinder's local hacking checks. Fixing the assert_called_once issues also highlighted other mistakes in certain tests which were addressed to make the tests pass. Due to the nature of mock, this issue is also possible if a method is misspelt or just mistakenly used and so the hacking check is only addressing one very specific case. That said, it does appear to be a common mistake and so is worth singling out. Change-Id: Iedcc3f48d91f7ebd8878ccc3bca3d023503774bd Closes-Bug: #1394544
46 lines
1.5 KiB
ReStructuredText
46 lines
1.5 KiB
ReStructuredText
Cinder Style Commandments
|
|
=========================
|
|
|
|
- Step 1: Read the OpenStack Style Commandments
|
|
http://docs.openstack.org/developer/hacking/
|
|
- Step 2: Read on
|
|
|
|
Cinder Specific Commandments
|
|
----------------------------
|
|
- [N314] Check for vi editor configuration in source files.
|
|
- [N319] Validate that debug level logs are not translated
|
|
- [N322] Ensure default arguments are not mutable.
|
|
- [N323] Add check for explicit import of _() to ensure proper translation.
|
|
- [N324] Enforce no use of LOG.audit messages. LOG.info should be used instead.
|
|
- [N327] assert_called_once is not a valid Mock method.
|
|
|
|
|
|
General
|
|
-------
|
|
- Use 'raise' instead of 'raise e' to preserve original traceback or exception being reraised::
|
|
|
|
except Exception as e:
|
|
...
|
|
raise e # BAD
|
|
|
|
except Exception:
|
|
...
|
|
raise # OKAY
|
|
|
|
|
|
|
|
Creating Unit Tests
|
|
-------------------
|
|
For every new feature, unit tests should be created that both test and
|
|
(implicitly) document the usage of said feature. If submitting a patch for a
|
|
bug that had no unit test, a new passing unit test should be added. If a
|
|
submitted bug fix does have a unit test, be sure to add a new one that fails
|
|
without the patch and passes with the patch.
|
|
|
|
Cinder is transitioning to use mock, rather than mox, and so new tests should
|
|
use mock only.
|
|
|
|
For more information on creating unit tests and utilizing the testing
|
|
infrastructure in OpenStack Cinder, please read the Cinder testing
|
|
`README.rst <https://github.com/openstack/cinder/blob/master/cinder/testing/README.rst>`_.
|