### Summary

At sanity check, if the choices option for a parameter is defined to be the same length as the choices in the document, and the choices for the parameter are repeated. 'ansible-test sanity --test validate-modules ****.py" Can't be checked, It will pass!
sample as:
```e.g.
docuemnt define as: 
caching:
     description:
         - Type of ***** caching.
    type: str
    choices:
        - ReadOnly
        - ReadWrite
argument define as: caching=dict(type='str', choices=['ReadOnly', 'ReadOnly'])

### Issue Type

Bug Report

### Component Name

ansible-test

### Ansible Version

```console
$ ansible --version
ansible [core 2.13.2]
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/home/fred/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python3.8/dist-packages/ansible
  ansible collection location = /home/fred/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/local/bin/ansible
  python version = 3.8.10 (default, Mar 15 2022, 12:22:08) [GCC 9.4.0]
  jinja version = 3.1.2
  libyaml = True
```


### Configuration

```console
# if using a version older than ansible-core 2.12 you should omit the '-t all'
$ ansible-config dump --only-changed -t all
null
```


### OS / Environment

Ubuntu

### Steps to Reproduce

<!--- Paste example playbooks or commands between quotes below -->
```yaml (paste below)
ansible-test sanity --test validate-modules ***.py
```


### Expected Results

Can't pass! 

### Actual Results

```console
Check pass!
```


### Code of Conduct

- [X] I agree to follow the Ansible Code of Conduct
def write(self, s):
        super(AnsibleTextIOWrapper, self).write(to_text(s, self.encoding, errors='replace'))
def find_executable(executable, cwd=None, path=None):
    """Finds the full path to the executable specified"""
    match = None
    real_cwd = os.getcwd()
    if not cwd:
        cwd = real_cwd
    if os.path.dirname(executable):
        target = os.path.join(cwd, executable)
        if os.path.exists(target) and os.access(target, os.F_OK | os.X_OK):
            match = executable
    else:
        path = os.environ.get('PATH', os.path.defpath)
        path_dirs = path.split(os.path.pathsep)
        seen_dirs = set()
        for path_dir in path_dirs:
            if path_dir in seen_dirs:
                continue
            seen_dirs.add(path_dir)
            if os.path.abspath(path_dir) == real_cwd:
                path_dir = cwd
            candidate = os.path.join(path_dir, executable)
            if os.path.exists(candidate) and os.access(candidate, os.F_OK | os.X_OK):
                match = candidate
                break
    return match
def find_globals(g, tree):