1
0
Fork 0
mirror of https://github.com/ansible-collections/community.general.git synced 2024-09-14 20:13:21 +02:00
community.general/test
Steve Kuznetsov 0bc35354ce Change v2_playbook_on_start logic to positively detect legacy plugins
In order to support legacy plugins, the following two method signatures
are allowed for `CallbackBase.v2_playbook_on_start`:

def v2_playbook_on_start(self):
def v2_playbook_on_start(self, playbook):

Previously, the logic to handle this divergence checked to see if the
callback plugin being called supported an argument named `playbook`
in its `v2_playbook_on_start` method. This was fragile in a few ways:
 - if a plugin author did not use the literal `playbook` to name their
   method argument, their plugin would not be called correctly
 - if a plugin author wrapped their `v2_playbook_on_start` method and
   by doing so changed the argspec to no longer expose an argument
   with that literal name, their plugin would not be called correctly

In order to continue to support both types of callback for backwards
compatibility while making the call more robust for plugin authors,
the logic can be reversed in order to have a positive check for the old
method signature instead of a positive check for the new one.

Signed-off-by: Steve Kuznetsov <skuznets@redhat.com>
2016-10-28 10:05:58 -07:00
..
code-smell Add a whitelist for checking for six. Use it for digital_ocean.py 2016-10-06 10:59:02 -07:00
integration Fix fact gathering intg test asserts (#18168) 2016-10-26 11:21:19 -04:00
samples Changes to be committed: (#16430) 2016-06-24 10:26:51 -04:00
sanity/validate-modules Restore README.rst, update and fix formatting. (#18012) 2016-10-13 12:47:13 -07:00
units Change v2_playbook_on_start logic to positively detect legacy plugins 2016-10-28 10:05:58 -07:00
utils Enable the git test on py3 2016-10-21 09:03:35 -07:00
README.md Location of Network Tests (#18048) 2016-10-16 11:01:04 +01:00

Ansible Test System

Folders

unit

Unit tests that test small pieces of code not suited for the integration test layer, usually very API based, and should leverage mock interfaces rather than producing side effects.

Playbook engine code is better suited for integration tests.

Requirements: sudo pip install paramiko PyYAML jinja2 httplib2 passlib nose mock

integration

Integration test layer, constructed using playbooks.

Some tests may require cloud credentials, others will not, and destructive tests are separated from non-destructive so a subset can be run on development machines.

Tests for network modules can be found in https://github.com/ansible/test-network-modules/

learn more

hop into a subdirectory and see the associated README.md for more info.