
currently an invalid collection will error out on docs sanity, but this is misleading since the problem is that the collection name itself is invalid, a previous test verifying this should be introduced to avoid confusion.

example currently:
```
Running sanity test 'ansible-doc' with Python 3.7
ERROR: Command "ansible-doc -t module cyberark.ansible-security-automation-collection.cyberark_account cyberark.ansible-security-automation-collection.cyberark_authentication cyberark.ansible-security-automation-collection.cyberark_credential cyberark.ansible-security-automation-collection.cyberark_user" returned exit status 250.
>>> Standard Error
[WARNING]: module cyberark.ansible-security-automation-collection.cyberark_account not found in: /dev/null:/home/abehl/work/src/anshul_ansible/ansible/lib/ansible/modules
ERROR! Unexpected Exception, this is probably a bug: cannot unpack non-iterable NoneType object
```
##### ISSUE TYPE
- Feature Idea

##### COMPONENT NAME
<!--- Write the short name of the module, plugin, task or feature below, use your best guess if unsure -->
ansible-test

"""Return the host's IP address."""
    with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as sock:
        sock.connect(('10.255.255.255', 22))
        host_ip = get_host_ip.ip = sock.getsockname()[0]
    display.info('Detected host IP: %s' % host_ip, verbosity=1)
    return host_ip
def get_generic_type(base_type, generic_base_type):  
    """Return the generic type arg derived from the generic_base_type type that is associated with the base_type type, if any, otherwise return None."""
    
    type_arg = t.get_args(base_type.__orig_bases__[0])[0]
    return None if isinstance(type_arg, generic_base_type) else type_arg
def get_type_associations(base_type, generic_base_type):  
    """Create and return a list of tuples associating generic_base_type derived types with a corresponding base_type derived type."""
    return [item for item in [(get_generic_type(sc_type, generic_base_type), sc_type) for sc_type in get_subclasses(base_type)] if item[1]]
def get_type_map(base_type, generic_base_type):  
    """Create and return a mapping of generic_base_type derived types to base_type derived types."""
    return {item[0]: item[1] for item in get_type_associations(base_type, generic_base_type)}
def verify_sys_executable(path):  
    """Verify that the given path references the current Python interpreter. If not, return the expected path, otherwise return None."""
    if path == sys.executable:
        return None
    if os.path.realpath(path) == os.path.realpath(sys.executable):
        return None
    expected_executable = raw_command([path, '-c', 'import sys; print(sys.executable)'], capture=True)[0]
    if expected_executable == sys.executable:
        return None
    return expected_executable
display = Display()