- hosts: localhost
  gather_facts: no
  tasks:
  - name: Use a specially crafted module to see if things were imported correctly
    test:
    register: result

  - name: Check that the module imported the correct version of each module_util
    assert:
      that:
        - 'result["abcdefgh"] == "abcdefgh"'
        - 'result["bar0"] == "bar0"'
        - 'result["bar1"] == "bar1"'
        - 'result["bar2"] == "bar2"'
        - 'result["baz1"] == "baz1"'
        - 'result["baz2"] == "baz2"'
        - 'result["foo0"] == "foo0"'
        - 'result["foo1"] == "foo1"'
        - 'result["foo2"] == "foo2"'
        - 'result["qux1"] == "qux1"'
        - 'result["qux2"] == ["qux2:quux", "qux2:quuz"]'
        - 'result["spam1"] == "spam1"'
        - 'result["spam2"] == "spam2"'
        - 'result["spam3"] == "spam3"'
        - 'result["spam4"] == "spam4"'
        - 'result["spam5"] == ["spam5:bacon", "spam5:eggs"]'
        - 'result["spam6"] == ["spam6:bacon", "spam6:eggs"]'
        - 'result["spam7"] == ["spam7:bacon", "spam7:eggs"]'
        - 'result["spam8"] == ["spam8:bacon", "spam8:eggs"]'

  # Test that overriding something in module_utils with something in the local library works
  - name: Test that local module_utils overrides facts.py
    test_override:
    register: result

  - name: Make sure the we used the local facts.py, not the one shipped with ansible
    assert:
      that:
        - result["data"] == "overridden facts.py"

  - name: Test that importing a module that only exists inside of a submodule does not work
    test_failure:
    ignore_errors: True
    register: result

  - debug: var=result
  - name: Make sure we failed in AnsiBallZ
    assert:
      that:
        - result|failed
        - result['msg'] == "Could not find imported module support code for test_failure.  Looked for either foo.py or zebra.py"