### Summary

In check mode, when I use ansible builtin module **ansible.builtin.copy** to copy a remote file or directory to a destination which ends with a `/`, it creates destination directory on remote host despite check mode is enabled.

### Issue Type

Bug Report

### Component Name

ansible.builtin.copy

### Ansible Version

```console
$ ansible --version
ansible 2.10.8
  config file = /home/user/.ansible.cfg
  configured module search path = ['/home/user/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3/dist-packages/ansible
  executable location = /usr/bin/ansible
  python version = 3.9.2 (default, Feb 28 2021, 17:03:44) [GCC 10.2.1 20210110]
```


### 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
DEFAULT_BECOME_METHOD(/home/user/.ansible.cfg) = sudo
DEFAULT_ROLES_PATH(/home/user/.ansible.cfg) = ['/home/user/data/git/ansible/roles']
DEFAULT_SCP_IF_SSH(/home/user/.ansible.cfg) = True
```


### OS / Environment

Ansible controller OS is Debian bullseye.

### Steps to Reproduce

On ansible controller :
1. Create directory **/tmp/ansible-test**
   `$ mkdir /tmp/ansible-test`
2. Create empty file **/tmp/ansible-test/empty.txt**
   `$ touch /tmp/ansible-test/empty.txt`
3. Create playbook **/tmp/ansible-test/playbook.yml** with the following content
   ```yaml
   ---
   - hosts: localhost
     tasks:
       - name: copy file empty.txt into /tmp/ansible-test/not-existing-subdir/
         ansible.builtin.copy:
           remote_src: yes
           src: /tmp/ansible-test/empty.txt
           dest: /tmp/ansible-test/not-existing-subdir/
   ```
4. Run playbook
   `$ ansible-playbook --check /tmp/ansible-test/playbook.yml`

### Expected Results

Directory **/tmp/ansible-test/not-existing-subdir/** is not created after having run playbook (cf. step 3 in section **Steps to Reproduce**) in check mode

### Actual Results

```console
# Directory **/tmp/ansible-test/not-existing-subdir/** has been created by running playbook (cf. step 3 in section **Steps to Reproduce**) in check mode (cf. execution output below)


user@debian:/tmp/ansible-test$ ls -Al
total 4
-rw-r--r-- 1 user user   0 22 août  14:29 empty.txt
-rw-r--r-- 1 user user 239 22 août  15:16 playbook.yml
user@debian:/tmp/ansible-test$ ansible-playbook --check --diff /tmp/ansible-test/playbook.yml 
[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all'

PLAY [localhost] **************************************************************************************************************************************************************************************************

TASK [Gathering Facts] ********************************************************************************************************************************************************************************************
ok: [localhost]

TASK [copy file empty.txt into /tmp/ansible-test/not-existing-subdir/] ********************************************************************************************************************************************
changed: [localhost]

PLAY RECAP ********************************************************************************************************************************************************************************************************
localhost                  : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

user@debian:/tmp/ansible-test$ ls -Al
total 8
-rw-r--r-- 1 user user    0 22 août  14:29 empty.txt
drwxr-xr-x 2 user user 4096 22 août  15:19 not-existing-subdir
-rw-r--r-- 1 user user  239 22 août  15:16 playbook.yml
```


### Code of Conduct

- [X] I agree to follow the Ansible Code of Conduct
'''
    Return the first pre-existing directory and a list of the new directories that will be created.
    '''
    head, tail = os.path.split(dirname)
    b_head = to_bytes(head, errors='surrogate_or_strict')
    if head == '':
        return ('.', [tail])
    if not os.path.exists(b_head):
        if head == '/':
            raise AnsibleModuleError(results={'msg': "The '/' directory doesn't exist on this machine."})
        (pre_existing_dir, new_directory_list) = split_pre_existing_dir(head)
    else:
        return (head, [tail])
    new_directory_list.append(tail)
    return (pre_existing_dir, new_directory_list)
def adjust_recursive_directory_permissions(pre_existing_dir, new_directory_list, module, directory_args, changed):
    '''
    Walk the new directories list and make sure that permissions are as we would expect
    '''
    if new_directory_list:
        working_dir = os.path.join(pre_existing_dir, new_directory_list.pop(0))
        directory_args['path'] = working_dir
        changed = module.set_fs_attributes_if_different(directory_args, changed)
        changed = adjust_recursive_directory_permissions(working_dir, new_directory_list, module, directory_args, changed)
    return changed
def chown_recursive(path, module):